1package syntax
2
3import (
4 "bufio"
5 "encoding"
6 "fmt"
7 "os"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11)
12
13func TestInteropHandlesValid(t *testing.T) {
14 assert := assert.New(t)
15 file, err := os.Open("testdata/handle_syntax_valid.txt")
16 assert.NoError(err)
17 defer file.Close()
18 scanner := bufio.NewScanner(file)
19 for scanner.Scan() {
20 line := scanner.Text()
21 if len(line) == 0 || line[0] == '#' {
22 continue
23 }
24 _, err := ParseHandle(line)
25 if err != nil {
26 fmt.Println("FAILED, GOOD: " + line)
27 }
28 assert.NoError(err)
29 }
30 assert.NoError(scanner.Err())
31}
32
33func TestInteropHandlesInvalid(t *testing.T) {
34 assert := assert.New(t)
35 file, err := os.Open("testdata/handle_syntax_invalid.txt")
36 assert.NoError(err)
37 defer file.Close()
38 scanner := bufio.NewScanner(file)
39 for scanner.Scan() {
40 line := scanner.Text()
41 if len(line) == 0 || line[0] == '#' {
42 continue
43 }
44 _, err := ParseHandle(line)
45 if err == nil {
46 fmt.Println("FAILED, BAD: " + line)
47 }
48 assert.Error(err)
49 }
50 assert.NoError(scanner.Err())
51}
52
53func TestHandleNormalize(t *testing.T) {
54 assert := assert.New(t)
55
56 handle, err := ParseHandle("JoHn.TeST")
57 assert.NoError(err)
58 assert.Equal("john.test", string(handle.Normalize()))
59 assert.NoError(err)
60 assert.Equal(handle.String(), handle.AtIdentifier().String())
61
62 _, err = ParseHandle("JoH!n.TeST")
63 assert.Error(err)
64}
65
66func TestHandleNoPanic(t *testing.T) {
67 for _, s := range []string{"", ".", ".."} {
68 bad := Handle(s)
69 _ = bad.Normalize()
70 _ = bad.TLD()
71 _ = bad.AllowedTLD()
72 _ = bad.AtIdentifier()
73 _ = bad.AtIdentifier().String()
74 }
75}
76func TestHandleInterfaces(t *testing.T) {
77 h := Handle("e.com")
78 var _ encoding.TextMarshaler = h
79 var _ encoding.TextUnmarshaler = &h
80}