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
36 for n, test := range []struct {
37 Input, Output string
38 }{
39 {
40 "[B]Bolded ] [i]Bolded-Italic[/I] [ [/b] [I]Just Italic[/I]",
41 "<b>Bolded ] <i>Bolded-Italic</i> [ </b> <i>Just Italic</i>",
42 },
43 {
44 "[b][UnknownTag=AttributeFoo][/UnknownTAG]",
45 "<b>[UnknownTag=AttributeFoo][/UnknownTAG]</b>",
46 },
47 {
48 "[tester=#fff]White",
49 "<span style=\"color: #fff\">White</span>",
50 },
51 } {
52 buf.Reset()
53 b.ConvertString(buf, test.Input)
54
55 if str := buf.String(); str != test.Output {
56 t.Errorf("test %d: expecting %q, got %q", n+1, test.Output, str)
57 }
58 }
59 }
60