package main
import "strconv"
import "testing"
// TO-DO: Replace the soft tabs with hard ones
// 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) {
//t.Skip()
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]")
if !testing.Short() {
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) {
//t.Skip()
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)
}
}
}