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  }