vendor tsgo
This commit is contained in:
79
tools/tsgo/internal/ls/autoimport/index_test.go
Normal file
79
tools/tsgo/internal/ls/autoimport/index_test.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package autoimport
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"gotest.tools/v3/assert"
|
||||
)
|
||||
|
||||
type testEntry struct {
|
||||
name string
|
||||
package_ string
|
||||
}
|
||||
|
||||
func (e *testEntry) Name() string { return e.name }
|
||||
|
||||
func TestIndexClone(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
t.Run("filters entries by package", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
idx := &Index[*testEntry]{}
|
||||
idx.insertAsWords(&testEntry{name: "fooBar", package_: "pkg-a"})
|
||||
idx.insertAsWords(&testEntry{name: "bazQux", package_: "pkg-b"})
|
||||
idx.insertAsWords(&testEntry{name: "fooQux", package_: "pkg-a"})
|
||||
|
||||
// Clone excluding pkg-b
|
||||
cloned := idx.Clone(func(e *testEntry) bool {
|
||||
return e.package_ != "pkg-b"
|
||||
})
|
||||
|
||||
// Original should have all 3 entries
|
||||
assert.Equal(t, len(idx.entries), 3)
|
||||
|
||||
// Cloned should have 2 entries (only pkg-a)
|
||||
assert.Equal(t, len(cloned.entries), 2)
|
||||
|
||||
// Search should work on cloned index
|
||||
results := cloned.Find("fooBar", true)
|
||||
assert.Equal(t, len(results), 1)
|
||||
assert.Equal(t, results[0].name, "fooBar")
|
||||
|
||||
// bazQux should not be in cloned index
|
||||
results = cloned.Find("bazQux", true)
|
||||
assert.Equal(t, len(results), 0)
|
||||
|
||||
// Word prefix search should work
|
||||
results = cloned.SearchWordPrefix("foo")
|
||||
assert.Equal(t, len(results), 2)
|
||||
})
|
||||
|
||||
t.Run("handles nil index", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var idx *Index[*testEntry]
|
||||
cloned := idx.Clone(func(e *testEntry) bool { return true })
|
||||
assert.Assert(t, cloned == nil)
|
||||
})
|
||||
|
||||
t.Run("handles empty index", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
idx := &Index[*testEntry]{}
|
||||
cloned := idx.Clone(func(e *testEntry) bool { return true })
|
||||
assert.Equal(t, len(cloned.entries), 0)
|
||||
})
|
||||
|
||||
t.Run("filters all entries", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
idx := &Index[*testEntry]{}
|
||||
idx.insertAsWords(&testEntry{name: "fooBar", package_: "pkg-a"})
|
||||
idx.insertAsWords(&testEntry{name: "bazQux", package_: "pkg-b"})
|
||||
|
||||
cloned := idx.Clone(func(e *testEntry) bool { return false })
|
||||
assert.Equal(t, len(cloned.entries), 0)
|
||||
assert.Equal(t, len(cloned.index), 0)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user