...
1
16
17 package cache
18
19 import (
20 "math/rand"
21 "strings"
22 "testing"
23 )
24
25 func TestObjectNames(t *testing.T) {
26 chars := "abcdefghi/"
27 for count := 1; count <= 100; count++ {
28 var encodedB strings.Builder
29 for index := 0; index < 10; index++ {
30 encodedB.WriteByte(chars[rand.Intn(len(chars))])
31 }
32 encodedS := encodedB.String()
33 parts := strings.Split(encodedS, "/")
34 on, err := ParseObjectName(encodedS)
35 expectError := len(parts) > 2
36 if expectError != (err != nil) {
37 t.Errorf("Wrong error; expected=%v, got=%v", expectError, err)
38 }
39 if expectError || err != nil {
40 continue
41 }
42 var expectedObjectName ObjectName
43 if len(parts) == 2 {
44 expectedObjectName = ObjectName{Namespace: parts[0], Name: parts[1]}
45 } else {
46 expectedObjectName = ObjectName{Name: encodedS}
47 }
48 if on != expectedObjectName {
49 t.Errorf("Parse failed, expected=%+v, got=%+v", expectedObjectName, on)
50 }
51 recoded := on.String()
52 if encodedS[0] == '/' {
53 recoded = "/" + recoded
54 }
55 if encodedS != recoded {
56 t.Errorf("Parse().String() was not identity, original=%q, final=%q", encodedS, recoded)
57 }
58 }
59 }
60
View as plain text