GoPLS Viewer

Home|gopls/internal/fuzzy/input_test.go
1// Copyright 2019 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package fuzzy_test
6
7import (
8    "bytes"
9    "sort"
10    "testing"
11
12    "golang.org/x/tools/internal/fuzzy"
13)
14
15var rolesTests = []struct {
16    str  string
17    want string
18}{
19    {str"abc::def::goo"want"Ccc//Ccc//Ccc"},
20    {str"proto::Message"want"Ccccc//Ccccccc"},
21    {str"AbstractSWTFactory"want"CcccccccCuuCcccccc"},
22    {str"Abs012"want"Cccccc"},
23    {str"/"want" "},
24    {str"fOO"want"CCu"},
25    {str"fo_oo.o_oo"want"Cc Cc/C Cc"},
26}
27
28func rolesString(roles []fuzzy.RuneRolestring {
29    var buf bytes.Buffer
30    for _r := range roles {
31        buf.WriteByte(" /cuC"[int(r)])
32    }
33    return buf.String()
34}
35
36func TestRoles(t *testing.T) {
37    for _tc := range rolesTests {
38        gotRoles := make([]fuzzy.RuneRolelen(tc.str))
39        fuzzy.RuneRoles([]byte(tc.str), gotRoles)
40        got := rolesString(gotRoles)
41        if got != tc.want {
42            t.Errorf("roles(%s) = %v; want %v"tc.strgottc.want)
43        }
44    }
45}
46
47var wordSplitTests = []struct {
48    input string
49    want  []string
50}{
51    {
52        input"foo bar baz",
53        want:  []string{"foo""bar""baz"},
54    },
55    {
56        input"fooBarBaz",
57        want:  []string{"foo""Bar""Baz"},
58    },
59    {
60        input"FOOBarBAZ",
61        want:  []string{"FOO""Bar""BAZ"},
62    },
63    {
64        input"foo123_bar2Baz3",
65        want:  []string{"foo123""bar2""Baz3"},
66    },
67}
68
69func TestWordSplit(t *testing.T) {
70    for _tc := range wordSplitTests {
71        roles := fuzzy.RuneRoles([]byte(tc.input), nil)
72
73        var got []string
74        consumer := func(ij int) {
75            got = append(gottc.input[i:j])
76        }
77        fuzzy.Words(rolesconsumer)
78
79        if eq := diffStringLists(tc.wantgot); !eq {
80            t.Errorf("input %v: (want %v -> got %v)"tc.inputtc.wantgot)
81        }
82    }
83}
84
85func diffStringLists(ab []stringbool {
86    if len(a) != len(b) {
87        return false
88    }
89    sort.Strings(a)
90    sort.Strings(b)
91    for i := range a {
92        if a[i] != b[i] {
93            return false
94        }
95    }
96    return true
97}
98
99var lastSegmentSplitTests = []struct {
100    str  string
101    want string
102}{
103    {
104        str:  "identifier",
105        want"identifier",
106    },
107    {
108        str:  "two_words",
109        want"two_words",
110    },
111    {
112        str:  "first::second",
113        want"second",
114    },
115    {
116        str:  "foo.bar.FOOBar_buz123_test",
117        want"FOOBar_buz123_test",
118    },
119}
120
121func TestLastSegment(t *testing.T) {
122    for _tc := range lastSegmentSplitTests {
123        roles := fuzzy.RuneRoles([]byte(tc.str), nil)
124
125        got := fuzzy.LastSegment(tc.strroles)
126
127        if got != tc.want {
128            t.Errorf("str %v: want %v; got %v"tc.strtc.wantgot)
129        }
130    }
131}
132
133func BenchmarkRoles(b *testing.B) {
134    str := "AbstractSWTFactory"
135    out := make([]fuzzy.RuneRolelen(str))
136
137    for i := 0i < b.Ni++ {
138        fuzzy.RuneRoles([]byte(str), out)
139    }
140    b.SetBytes(int64(len(str)))
141}
142
MembersX
TestRoles.t
diffStringLists
diffStringLists.RangeStmt_1892.i
TestLastSegment.t
TestLastSegment.RangeStmt_2304.BlockStmt.roles
rolesString.RangeStmt_676.r
TestWordSplit.t
TestWordSplit.RangeStmt_1437.BlockStmt.roles
TestWordSplit.RangeStmt_1437.BlockStmt.got
diffStringLists.b
BenchmarkRoles.out
fuzzy
TestRoles.RangeStmt_794.tc
TestWordSplit.RangeStmt_1437.tc
sort
rolesString.buf
TestWordSplit.RangeStmt_1437.BlockStmt.eq
BenchmarkRoles.i
TestRoles
TestWordSplit
BenchmarkRoles
BenchmarkRoles.b
bytes
TestLastSegment.RangeStmt_2304.tc
BenchmarkRoles.str
rolesString
TestRoles.RangeStmt_794.BlockStmt.got
testing
rolesString.roles
TestRoles.RangeStmt_794.BlockStmt.gotRoles
diffStringLists.a
TestLastSegment
TestLastSegment.RangeStmt_2304.BlockStmt.got
Members
X