71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
|
package typeset
|
||
|
|
||
|
import "testing"
|
||
|
import "golang.org/x/image/math/fixed"
|
||
|
import "golang.org/x/image/font/basicfont"
|
||
|
|
||
|
const basicfontFace7x13advance = 7
|
||
|
|
||
|
func tkw (kind tokenKind, value string, width fixed.Int26_6) token {
|
||
|
tok := tk(kind, value)
|
||
|
tok.width = width
|
||
|
for index, runl := range tok.runes {
|
||
|
runl.x = fixed.I(basicfontFace7x13advance * index)
|
||
|
tok.runes[index] = runl
|
||
|
}
|
||
|
return tok
|
||
|
}
|
||
|
|
||
|
func TestMeasure (test *testing.T) {
|
||
|
// ---- processing ----
|
||
|
tokens := []token {
|
||
|
tk(tokenKindWord, "hello"),
|
||
|
tk(tokenKindSpace, " "),
|
||
|
tk(tokenKindWord, "\rworld!"),
|
||
|
tk(tokenKindLineBreak, "\n"),
|
||
|
tk(tokenKindWord, "foo"),
|
||
|
tk(tokenKindLineBreak, "\n"),
|
||
|
tk(tokenKindLineBreak, "\r\n"),
|
||
|
tk(tokenKindWord, "bar"),
|
||
|
tk(tokenKindTab, "\t"),
|
||
|
tk(tokenKindWord, "baz"),
|
||
|
tk(tokenKindTab, "\t\t"),
|
||
|
tk(tokenKindWord, "something"),
|
||
|
}
|
||
|
measure(tokens, basicfont.Face7x13)
|
||
|
|
||
|
// ---- correct data ----
|
||
|
correctTokens := []token {
|
||
|
tkw(tokenKindWord, "hello", fixed.I(35)),
|
||
|
tkw(tokenKindSpace, " ", fixed.I( 7)),
|
||
|
tkw(tokenKindWord, "\rworld!", fixed.I(49)),
|
||
|
tkw(tokenKindLineBreak, "\n", fixed.I( 7)),
|
||
|
tkw(tokenKindWord, "foo", fixed.I(21)),
|
||
|
tkw(tokenKindLineBreak, "\n", fixed.I( 7)),
|
||
|
tkw(tokenKindLineBreak, "\r\n", fixed.I(14)),
|
||
|
tkw(tokenKindWord, "bar", fixed.I(21)),
|
||
|
tkw(tokenKindTab, "\t", fixed.I( 7)),
|
||
|
tkw(tokenKindWord, "baz", fixed.I(21)),
|
||
|
tkw(tokenKindTab, "\t\t", fixed.I(14)),
|
||
|
tkw(tokenKindWord, "something", fixed.I(63)),
|
||
|
}
|
||
|
|
||
|
// ---- testing ----
|
||
|
if len(tokens) != len(correctTokens) {
|
||
|
test.Logf("len(tokens) != len(correctTokens): %d, %d", len(tokens), len(correctTokens))
|
||
|
test.Log("GOT")
|
||
|
logTokens(test, tokens)
|
||
|
test.Log("CORRECT")
|
||
|
logTokens(test, correctTokens)
|
||
|
test.FailNow()
|
||
|
}
|
||
|
if !compareTokens(tokens, correctTokens) {
|
||
|
test.Log("tokens != correctTokens:")
|
||
|
test.Log("GOT")
|
||
|
logTokens(test, tokens)
|
||
|
test.Log("CORRECT")
|
||
|
logTokens(test, correctTokens)
|
||
|
test.FailNow()
|
||
|
}
|
||
|
}
|