tpls

Extendable, Fast Template Engine for Go
git clone git://git.lair.cx/tpls
Log | Files | Refs | README | LICENSE

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 }