bbcode - bbcode_test.go
1 package bbcode
2
3 import (
4 "bytes"
5 "testing"
6 )
7
8 var (
9 _ Handler = &Tag{}
10 _ Handler = &AttributeTag{}
11 _ OpenClose = &Tag{}
12 _ OpenClose = &AttributeTag{}
13 )
14
15 func passFilter(a string) []byte {
16 return []byte(a)
17 }
18
19 func TestParse(t *testing.T) {
20 buf := bytes.NewBuffer(make([]byte, 0, 1024))
21 b := New(
22 HTMLText,
23 NewTag("b", []byte("<b>"), []byte("</b>")),
24 NewTag("i", []byte("<i>"), []byte("</i>")),
25 NewAttributeTag(
26 "tester",
27 []byte("<span"),
28 []byte(">"),
29 []byte(" style=\"color: "),
30 []byte("\""),
31 []byte("</span>"),
32 AttrFilterFunc(passFilter),
33 ),
34 )
35 for n, test := range []struct {
36 Input, Output string
37 }{
38 {
39 "[B]Bolded ] [i]Bolded-Italic[/I] [ [/b] [I]Just Italic[/I]",
40 "<b>Bolded ] <i>Bolded-Italic</i> [ </b> <i>Just Italic</i>",
41 },
42 {
43 "[b][UnknownTag=AttributeFoo][/UnknownTAG]",
44 "<b>[UnknownTag=AttributeFoo][/UnknownTAG]</b>",
45 },
46 {
47 "[tester=#fff]White",
48 "<span style=\"color: #fff\">White</span>",
49 },
50 } {
51 buf.Reset()
52 b.ConvertString(buf, test.Input)
53 if str := buf.String(); str != test.Output {
54 t.Errorf("test %d: expecting %q, got %q", n+1, test.Output, str)
55 }
56 }
57 }
58