-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpath_test.go
More file actions
57 lines (51 loc) · 5.81 KB
/
path_test.go
File metadata and controls
57 lines (51 loc) · 5.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package vector
import (
"reflect"
"strconv"
"testing"
"github.com/koykov/entry"
)
type pathStage struct {
path string
expect []entry.Entry64
}
var pathStages = []pathStage{
{path: "foobar", expect: []entry.Entry64{6}},
{path: "foo.bar", expect: []entry.Entry64{3, 17179869191}},
{path: "@version", expect: []entry.Entry64{8}},
{path: "root@version", expect: []entry.Entry64{4, 17179869196}},
{path: "root.qwe.rty@version", expect: []entry.Entry64{4, 21474836488, 38654705676, 51539607572}},
{path: "foobar@", expect: []entry.Entry64{6}},
{path: "foo.bar[2]", expect: []entry.Entry64{3, 17179869191, 34359738377}},
{path: "foo[2].bar", expect: []entry.Entry64{3, 17179869189, 30064771082}},
{path: "foo.bar[15].baz@qwe", expect: []entry.Entry64{3, 17179869191, 34359738378, 51539607567, 64424509459}},
{path: "kLm9.nOp8[255].qRs7@tUv6.wXy5[99].zAb4", expect: []entry.Entry64{4, 21474836489, 42949672973, 64424509459, 81604378648, 107374182429, 128849018912, 146028888102}},
{path: "tokenA.tokenB[4294967295].tokenC@tokenD.tokenE.tokenF[65535].tokenG@tokenH", expect: []entry.Entry64{6, 30064771085, 60129542168, 111669149728, 137438953511, 171798691886, 201863462965, 231928234043, 261993005123, 287762808906}},
{path: "a1b2c3d4e5.f6g7h8i9j0[18446744073709551615].k1l2m3n4o5@p6q7r8s9t0.u1v2w3x4y5.z6a7b8c9d0[999999999999].e1f2g3h4i5@j6k7l8m9n0.o1p2q3r4s5.t1u2v3w4x5", expect: []entry.Entry64{10, 47244640277, 94489280554, 188978561078, 231928234049, 283467841612, 330712481879, 377957122148, 438086664304, 481036337275, 532575944838, 579820585105}},
{path: "TkN0123456789abcdef.TkM9876543210fedcba[340282366920938463463374607431768211455].TkLabcdef0123456789@TkKfedcba9876543210.TkJ13579bdf02468ace.TkI2468ace13579bdf[9223372036854775807].TkH9876543210abcdef@TkG0123456789fedcba.TkFf1e2d3c4b5a6978.TkEa9b8c7d6e5f4321[999999999999999999999].TkD5a4b3c2d1e0f9a8b", expect: []entry.Entry64{19, 85899345959, 171798691919, 347892351076, 429496729720, 519691042956, 605590388895, 687194767539, 777389080776, 858993459420, 949187772655, 1030792151298, 1112396529944, 1211180777773}},
{path: "tkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.tkBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB[99999999999999999999999999999999999999999999999999999999999999999999999999999999].tkCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@tkDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD.tkEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.tkFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF[88888888888888888888888888888888888888888888888888888888888888888888888888888888].tkGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG@tkHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH.tkIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.tkJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[77777777777777777777777777777777777777777777777777777777777777777777777777777777]", expect: []entry.Entry64{40, 176093659217, 352187318434, 704374636748, 876173328629, 1056561955102, 1232655614279, 1408749273496, 1760936591810, 1932735283691, 2113123910164, 2289217569341, 2465311228558}},
{path: "tknMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMtknMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM[999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999].tknMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@tknMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", expect: []entry.Entry64{870, 3740916516011, 5141075854944, 7009386629140, 8886287337803}},
}
func TestPath(t *testing.T) {
for i, stg := range pathStages {
t.Run(strconv.Itoa(i), func(t *testing.T) {
vec := Vector{}
vec.splitPath(stg.path, ".")
if !reflect.DeepEqual(stg.expect, vec.bufKE) {
t.Log(vec.bufKE)
t.FailNow()
}
})
}
}
func BenchmarkPath(b *testing.B) {
for i, stg := range pathStages {
b.Run(strconv.Itoa(i), func(b *testing.B) {
b.ReportAllocs()
vec := Vector{}
for j := 0; j < b.N; j++ {
vec.splitPath(stg.path, ".")
}
})
}
}