1package token_test 2 3import ( 4 "testing" 5 6 "github.com/goccy/go-yaml/token" 7) 8 9func TestToken(t *testing.T) { 10 pos := &token.Position{} 11 tokens := token.Tokens{ 12 token.SequenceEntry("-", pos), 13 token.MappingKey(pos), 14 token.MappingValue(pos), 15 token.CollectEntry(",", pos), 16 token.SequenceStart("[", pos), 17 token.SequenceEnd("]", pos), 18 token.MappingStart("{", pos), 19 token.MappingEnd("}", pos), 20 token.Comment("#", "#", pos), 21 token.Anchor("&", pos), 22 token.Alias("*", pos), 23 token.Literal("|", "|", pos), 24 token.Folded(">", ">", pos), 25 token.SingleQuote("'", "'", pos), 26 token.DoubleQuote(`"`, `"`, pos), 27 token.Directive(pos), 28 token.Space(pos), 29 token.MergeKey("<<", pos), 30 token.DocumentHeader(pos), 31 token.DocumentEnd(pos), 32 token.New("1", "1", pos), 33 token.New("3.14", "3.14", pos), 34 token.New("-0b101010", "-0b101010", pos), 35 token.New("0xA", "0xA", pos), 36 token.New("685.230_15e+03", "685.230_15e+03", pos), 37 token.New("02472256", "02472256", pos), 38 token.New("0o2472256", "0o2472256", pos), 39 token.New("", "", pos), 40 token.New("_1", "_1", pos), 41 token.New("1.1.1.1", "1.1.1.1", pos), 42 token.New("+", "+", pos), 43 token.New("-", "-", pos), 44 token.New("_", "_", pos), 45 token.New("~", "~", pos), 46 token.New("true", "true", pos), 47 token.New("false", "false", pos), 48 token.New(".nan", ".nan", pos), 49 token.New(".inf", ".inf", pos), 50 token.New("-.inf", "-.inf", pos), 51 token.New("null", "null", pos), 52 token.Tag("!!null", "!!null", pos), 53 token.Tag("!!map", "!!map", pos), 54 token.Tag("!!str", "!!str", pos), 55 token.Tag("!!seq", "!!seq", pos), 56 token.Tag("!!binary", "!!binary", pos), 57 token.Tag("!!omap", "!!omap", pos), 58 token.Tag("!!set", "!!set", pos), 59 token.Tag("!!int", "!!int", pos), 60 token.Tag("!!float", "!!float", pos), 61 token.Tag("!hoge", "!hoge", pos), 62 } 63 tokens.Dump() 64 tokens.Add(token.New("hoge", "hoge", pos)) 65 if tokens[len(tokens)-1].PreviousType() != token.TagType { 66 t.Fatal("invalid previous token type") 67 } 68 if tokens[0].PreviousType() != token.UnknownType { 69 t.Fatal("invalid previous token type") 70 } 71 if tokens[len(tokens)-2].NextType() != token.StringType { 72 t.Fatal("invalid next token type") 73 } 74 if tokens[len(tokens)-1].NextType() != token.UnknownType { 75 t.Fatal("invalid next token type") 76 } 77} 78 79func TestIsNeedQuoted(t *testing.T) { 80 if !token.IsNeedQuoted("") { 81 t.Fatal("failed to quoted judge for empty string") 82 } 83 if !token.IsNeedQuoted("true") { 84 t.Fatal("failed to quoted judge for boolean") 85 } 86 if !token.IsNeedQuoted("1.234") { 87 t.Fatal("failed to quoted judge for number") 88 } 89 if !token.IsNeedQuoted("1:1") { 90 t.Fatal("failed to quoted judge for time") 91 } 92 if !token.IsNeedQuoted("hoge # comment") { 93 t.Fatal("failed to quoted judge for comment") 94 } 95 if !token.IsNeedQuoted("\\0") { 96 t.Fatal("failed to quoted judge for escaped token") 97 } 98 if token.IsNeedQuoted("Hello World") { 99 t.Fatal("failed to unquoted judge") 100 } 101} 102