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() } }