OSDN Git Service

versoin1.1.9 (#594)
[bytom/vapor.git] / vendor / github.com / hashicorp / hcl / hcl / token / token_test.go
1 package token
2
3 import (
4         "reflect"
5         "testing"
6 )
7
8 func TestTypeString(t *testing.T) {
9         var tokens = []struct {
10                 tt  Type
11                 str string
12         }{
13                 {ILLEGAL, "ILLEGAL"},
14                 {EOF, "EOF"},
15                 {COMMENT, "COMMENT"},
16                 {IDENT, "IDENT"},
17                 {NUMBER, "NUMBER"},
18                 {FLOAT, "FLOAT"},
19                 {BOOL, "BOOL"},
20                 {STRING, "STRING"},
21                 {HEREDOC, "HEREDOC"},
22                 {LBRACK, "LBRACK"},
23                 {LBRACE, "LBRACE"},
24                 {COMMA, "COMMA"},
25                 {PERIOD, "PERIOD"},
26                 {RBRACK, "RBRACK"},
27                 {RBRACE, "RBRACE"},
28                 {ASSIGN, "ASSIGN"},
29                 {ADD, "ADD"},
30                 {SUB, "SUB"},
31         }
32
33         for _, token := range tokens {
34                 if token.tt.String() != token.str {
35                         t.Errorf("want: %q got:%q\n", token.str, token.tt)
36                 }
37         }
38
39 }
40
41 func TestTokenValue(t *testing.T) {
42         var tokens = []struct {
43                 tt Token
44                 v  interface{}
45         }{
46                 {Token{Type: BOOL, Text: `true`}, true},
47                 {Token{Type: BOOL, Text: `false`}, false},
48                 {Token{Type: FLOAT, Text: `3.14`}, float64(3.14)},
49                 {Token{Type: NUMBER, Text: `42`}, int64(42)},
50                 {Token{Type: IDENT, Text: `foo`}, "foo"},
51                 {Token{Type: STRING, Text: `"foo"`}, "foo"},
52                 {Token{Type: STRING, Text: `"foo\nbar"`}, "foo\nbar"},
53                 {Token{Type: STRING, Text: `"${file("foo")}"`}, `${file("foo")}`},
54                 {
55                         Token{
56                                 Type: STRING,
57                                 Text: `"${replace("foo", ".", "\\.")}"`,
58                         },
59                         `${replace("foo", ".", "\\.")}`},
60                 {Token{Type: HEREDOC, Text: "<<EOF\nfoo\nbar\nEOF"}, "foo\nbar"},
61         }
62
63         for _, token := range tokens {
64                 if val := token.tt.Value(); !reflect.DeepEqual(val, token.v) {
65                         t.Errorf("want: %v got:%v\n", token.v, val)
66                 }
67         }
68
69 }