package main import "strconv" import "testing" // go test -v type ME_Pair struct { Msg string Expects string } func addMEPair(msgList []ME_Pair, msg string, expects string) []ME_Pair { return append(msgList,ME_Pair{msg,expects}) } func TestBBCodeRender(t *testing.T) { var res string var msgList []ME_Pair msgList = addMEPair(msgList,"hi","hi") msgList = addMEPair(msgList,"😀","😀") msgList = addMEPair(msgList,"[b]😀[/b]","😀") msgList = addMEPair(msgList,"[b]😀😀😀[/b]","😀😀😀") msgList = addMEPair(msgList,"[b]hi[/b]","hi") msgList = addMEPair(msgList,"[u]hi[/u]","hi") msgList = addMEPair(msgList,"[i]hi[/i]","hi") msgList = addMEPair(msgList,"[s]hi[/s]","hi") msgList = addMEPair(msgList,"[c]hi[/c]","[c]hi[/c]") msgList = addMEPair(msgList,"[b]hi[/i]","[b]hi[/i]") msgList = addMEPair(msgList,"[/b]hi[b]","[/b]hi[b]") msgList = addMEPair(msgList,"[/b]hi[/b]","[/b]hi[/b]") msgList = addMEPair(msgList,"[b][b]hi[/b]","hi") msgList = addMEPair(msgList,"[b][b]hi","[b][b]hi") msgList = addMEPair(msgList,"[b][b][b]hi","[b][b][b]hi") msgList = addMEPair(msgList,"[/b]hi","[/b]hi") msgList = addMEPair(msgList,"[code]hi[/code]","hi") msgList = addMEPair(msgList,"[code][b]hi[/b][/code]","[b]hi[/b]") msgList = addMEPair(msgList,"[code][b]hi[/code][/b]","[b]hi[/b]") msgList = addMEPair(msgList,"[quote]hi[/quote]","hi") msgList = addMEPair(msgList,"[quote][b]hi[/b][/quote]","hi") msgList = addMEPair(msgList,"[quote][b]h[/b][/quote]","h") msgList = addMEPair(msgList,"[quote][b][/b][/quote]","") t.Log("Testing bbcode_full_parse") for _, item := range msgList { t.Log("Testing string '"+item.Msg+"'") res = bbcode_full_parse(item.Msg) if res != item.Expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",item.Expects) } } var msg, expects string var err error msg = "[rand][/rand]" expects = "[Invalid Number][rand][/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } msg = "[rand]-1[/rand]" expects = "[No Negative Numbers][rand]-1[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } msg = "[rand]-01[/rand]" expects = "[No Negative Numbers][rand]-01[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } msg = "[rand]NaN[/rand]" expects = "[Invalid Number][rand]NaN[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } msg = "[rand]Inf[/rand]" expects = "[Invalid Number][rand]Inf[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } msg = "[rand]+[/rand]" expects = "[Invalid Number][rand]+[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } msg = "[rand]1+1[/rand]" expects = "[Invalid Number][rand]1+1[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) if res != expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",expects) } var conv int msg = "[rand]1[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) conv, err = strconv.Atoi(res) if err != nil || (conv > 1 || conv < 0) { t.Error("Bad output:","'"+res+"'") t.Error("Expected a number in the range 0-1") } msg = "[rand]0[/rand]" t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) conv, err = strconv.Atoi(res) if err != nil || conv != 0 { t.Error("Bad output:","'"+res+"'") t.Error("Expected the number 0") } msg = "[rand]2147483647[/rand]" // Signed 32-bit MAX t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) conv, err = strconv.Atoi(res) if err != nil || (conv > 2147483647 || conv < 0) { t.Error("Bad output:","'"+res+"'") t.Error("Expected a number between 0 and 2147483647") } msg = "[rand]9223372036854775807[/rand]" // Signed 64-bit MAX t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) conv, err = strconv.Atoi(res) if err != nil || (conv > 9223372036854775807 || conv < 0) { t.Error("Bad output:","'"+res+"'") t.Error("Expected a number between 0 and 9223372036854775807") } // Note: conv is commented out in these two, as these numbers overflow int msg = "[rand]18446744073709551615[/rand]" // Unsigned 64-bit MAX t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) conv, err = strconv.Atoi(res) if err != nil || (/*conv > 18446744073709551615 || */conv < 0) { t.Error("Bad output:","'"+res+"'") t.Error("Expected a number between 0 and 18446744073709551615") } msg = "[rand]170141183460469231731687303715884105727[/rand]" // Signed 128-bit MAX t.Log("Testing string '"+msg+"'") res = bbcode_full_parse(msg) conv, err = strconv.Atoi(res) if err != nil || (/*conv > 170141183460469231731687303715884105727 || */conv < 0) { t.Error("Bad output:","'"+res+"'") t.Error("Expected a number between 0 and 170141183460469231731687303715884105727") } t.Log("Testing bbcode_regex_parse") for _, item := range msgList { t.Log("Testing string '"+item.Msg+"'") res = bbcode_regex_parse(item.Msg) if res != item.Expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",item.Expects) } } } func TestMarkdownRender(t *testing.T) { var res string var msgList []ME_Pair msgList = addMEPair(msgList,"hi","hi") msgList = addMEPair(msgList,"**hi**","hi") msgList = addMEPair(msgList,"_hi_","hi") msgList = addMEPair(msgList,"*hi*","hi") msgList = addMEPair(msgList,"~hi~","hi") msgList = addMEPair(msgList,"*hi**","hi*") msgList = addMEPair(msgList,"**hi***","hi*") msgList = addMEPair(msgList,"**hi*","*hi") msgList = addMEPair(msgList,"***hi***","*hi") msgList = addMEPair(msgList,"\\*hi\\*","*hi*") msgList = addMEPair(msgList,"*~hi~*","hi") msgList = addMEPair(msgList,"**","**") msgList = addMEPair(msgList,"***","***") msgList = addMEPair(msgList,"****","****") msgList = addMEPair(msgList,"*****","*****") msgList = addMEPair(msgList,"******","******") msgList = addMEPair(msgList,"*******","*******") msgList = addMEPair(msgList,"~~","~~") msgList = addMEPair(msgList,"~~~","~~~") msgList = addMEPair(msgList,"~~~~","~~~~") msgList = addMEPair(msgList,"~~~~~","~~~~~") msgList = addMEPair(msgList,"__","__") msgList = addMEPair(msgList,"___","___") msgList = addMEPair(msgList,"_ _"," ") msgList = addMEPair(msgList,"* *"," ") msgList = addMEPair(msgList,"** **"," ") msgList = addMEPair(msgList,"*** ***"," ") for _, item := range msgList { t.Log("Testing string '"+item.Msg+"'") res = markdown_parse(item.Msg) if res != item.Expects { t.Error("Bad output:","'"+res+"'") t.Error("Expected:",item.Expects) } } }