github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/utils/parser/highlight_test.go (about) 1 package parser 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/lmorg/murex/test/count" 8 "github.com/lmorg/murex/utils/ansi/codes" 9 ) 10 11 func TestParserHighlightEscaped(t *testing.T) { 12 type T struct { 13 Block string 14 Expected string 15 } 16 17 tests := []T{ 18 { 19 Block: `out: foo \n bar`, 20 Expected: fmt.Sprintf( 21 `%sout:%s foo %s\n%s bar%s`, 22 hlFunction, codes.Reset, hlEscaped, codes.Reset, codes.Reset, 23 ), 24 }, 25 { 26 Block: `out: 'foo \n bar'`, 27 Expected: fmt.Sprintf( 28 `%sout:%s %s'foo \n bar'%s%s`, 29 hlFunction, codes.Reset, hlSingleQuote, codes.Reset, codes.Reset, 30 ), 31 }, 32 { 33 Block: `out: "foo \n bar"`, 34 Expected: fmt.Sprintf( 35 `%sout:%s %s"foo %s\n%s bar"%s%s`, 36 hlFunction, codes.Reset, hlDoubleQuote, hlEscaped, hlDoubleQuote, codes.Reset, codes.Reset, 37 ), 38 }, 39 { 40 Block: `out: (foo \n bar)`, 41 Expected: fmt.Sprintf( 42 `%sout:%s %s(foo \n bar)%s%s`, 43 hlFunction, codes.Reset, hlBraceQuote, codes.Reset, codes.Reset, 44 ), 45 }, 46 ///// 47 { 48 Block: `out: foo\nbar`, 49 Expected: fmt.Sprintf( 50 `%sout:%s foo%s\n%sbar%s`, 51 hlFunction, codes.Reset, hlEscaped, codes.Reset, codes.Reset, 52 ), 53 }, 54 { 55 Block: `out: 'foo\nbar'`, 56 Expected: fmt.Sprintf( 57 `%sout:%s %s'foo\nbar'%s%s`, 58 hlFunction, codes.Reset, hlSingleQuote, codes.Reset, codes.Reset, 59 ), 60 }, 61 { 62 Block: `out: "foo\nbar"`, 63 Expected: fmt.Sprintf( 64 `%sout:%s %s"foo%s\n%sbar"%s%s`, 65 hlFunction, codes.Reset, hlDoubleQuote, hlEscaped, hlDoubleQuote, codes.Reset, codes.Reset, 66 ), 67 }, 68 { 69 Block: `out: (foo\nbar)`, 70 Expected: fmt.Sprintf( 71 `%sout:%s %s(foo\nbar)%s%s`, 72 hlFunction, codes.Reset, hlBraceQuote, codes.Reset, codes.Reset, 73 ), 74 }, 75 ///// 76 { 77 Block: `out: "foo\nb"`, 78 Expected: fmt.Sprintf( 79 `%sout:%s %s"foo%s\n%sb"%s%s`, 80 hlFunction, codes.Reset, hlDoubleQuote, hlEscaped, hlDoubleQuote, codes.Reset, codes.Reset, 81 ), 82 }, 83 } 84 85 count.Tests(t, len(tests)) 86 87 for i, test := range tests { 88 _, highlight := Parse([]rune(test.Block), 0) 89 if highlight != test.Expected { 90 t.Errorf("Expected != Actual in test %d", i) 91 t.Logf(" Block: '%s'", test.Block) 92 t.Logf(" Expected: '%s'", test.Expected) 93 t.Logf(" Actual: '%s'", highlight) 94 t.Log(" exp byte: ", []byte(test.Expected)) 95 t.Log(" act byte: ", []byte(highlight)) 96 } 97 } 98 }