builtin_resources_test.go (1330B)
1 package tplc 2 3 import ( 4 "strconv" 5 "strings" 6 "testing" 7 8 "go.lair.cx/go-core/net/htmlx" 9 ) 10 11 func Test_handleResourceTag(t *testing.T) { 12 tests := []struct { 13 name string 14 src string 15 wantErr bool 16 want string 17 }{ 18 { 19 "self-closing tag", 20 "<test />", 21 true, 22 "", 23 }, 24 { 25 "empty tag", 26 "<test></test>", 27 true, 28 "", 29 }, 30 { 31 "hello world", 32 "<test>Hello, World!</test>", 33 false, 34 "Hello, World!", 35 }, 36 { 37 "incomplete", 38 "<test>Hello, World!", 39 true, 40 "", 41 }, 42 } 43 for _, tt := range tests { 44 t.Run(tt.name, func(t *testing.T) { 45 var ( 46 writer = NewTestWriter() 47 tokenizer = htmlx.NewTokenizer(strings.NewReader(tt.src)) 48 ) 49 testResourceHandler := func(p []byte) { 50 writer.WriteGoCodeBytes(p) 51 } 52 if kind := tokenizer.Next(); kind != htmlx.SelfClosingTagToken && kind != htmlx.StartTagToken { 53 t.Errorf("invalid test: unexpected token: %s", kind.String()) 54 return 55 } 56 err := handleResourceTag(tokenizer, "test", testResourceHandler) 57 if (err != nil) != tt.wantErr { 58 t.Errorf("handleResourceTag() error = %v, wantErr %v", err, tt.wantErr) 59 return 60 } 61 if err != nil { 62 return 63 } 64 if got := writer.String(); got != tt.want { 65 t.Errorf("renderTag() got = %s, want = %s", strconv.Quote(got), strconv.Quote(tt.want)) 66 } 67 }) 68 } 69 }