vendor tsgo
This commit is contained in:
78
tools/tsgo/internal/lsp/dynamic_queue_test.go
Normal file
78
tools/tsgo/internal/lsp/dynamic_queue_test.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package lsp
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDynamicQueueFIFO(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
ctx := t.Context()
|
||||
q := newDynamicQueue[int]()
|
||||
|
||||
for i := range 1000 {
|
||||
if err := q.Put(ctx, i); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
for i := range 1000 {
|
||||
got, err := q.Get(ctx)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != i {
|
||||
t.Fatalf("Get() = %d, want %d", got, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestDynamicQueueGetCancellation(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
ctx, cancel := context.WithCancel(t.Context())
|
||||
cancel()
|
||||
|
||||
q := newDynamicQueue[int]()
|
||||
got, err := q.Get(ctx)
|
||||
if !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("Get() error = %v, want %v", err, context.Canceled)
|
||||
}
|
||||
if got != 0 {
|
||||
t.Fatalf("Get() = %d, want zero value", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDynamicQueuePutCancellationWhileStateUnavailable(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
q := newDynamicQueue[int]()
|
||||
state, err := q.getAny(t.Context())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(t.Context())
|
||||
cancel()
|
||||
|
||||
putErr := q.Put(ctx, 1)
|
||||
if !errors.Is(putErr, context.Canceled) {
|
||||
t.Fatalf("Put() error = %v, want %v", putErr, context.Canceled)
|
||||
}
|
||||
|
||||
q.idle <- state
|
||||
|
||||
err = q.Put(t.Context(), 2)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got, err := q.Get(t.Context())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != 2 {
|
||||
t.Fatalf("Get() = %d, want 2", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user