Made structural change to lexer test definitions

This commit is contained in:
Sasha Koshka 2022-08-18 11:02:49 -04:00
parent 54de3d1270
commit be9a3603d2
1 changed files with 105 additions and 101 deletions

View File

@ -5,7 +5,11 @@ import "git.tebibyte.media/sashakoshka/arf/file"
import "git.tebibyte.media/sashakoshka/arf/types" import "git.tebibyte.media/sashakoshka/arf/types"
import "git.tebibyte.media/sashakoshka/arf/infoerr" import "git.tebibyte.media/sashakoshka/arf/infoerr"
func checkTokenSlice (filePath string, correct []Token, test *testing.T) { func quickToken (kind TokenKind, value any) (token Token) {
return Token { kind: kind, value: value }
}
func checkTokenSlice (filePath string, test *testing.T, correct ...Token) {
test.Log("checking lexer results for", filePath) test.Log("checking lexer results for", filePath)
file, err := file.Open(filePath) file, err := file.Open(filePath)
if err != nil { if err != nil {
@ -108,119 +112,119 @@ func compareErr (
} }
func TestTokenizeAll (test *testing.T) { func TestTokenizeAll (test *testing.T) {
checkTokenSlice("../tests/lexer/all.arf", []Token { checkTokenSlice("../tests/lexer/all.arf", test,
Token { kind: TokenKindSeparator }, quickToken(TokenKindSeparator, nil),
Token { kind: TokenKindPermission, value: types.Permission { quickToken (TokenKindPermission, types.Permission {
Internal: types.ModeRead, Internal: types.ModeRead,
External: types.ModeWrite, External: types.ModeWrite,
}}, }),
Token { kind: TokenKindReturnDirection }, quickToken(TokenKindReturnDirection, nil),
Token { kind: TokenKindInt, value: int64(-349820394) }, quickToken(TokenKindInt, int64(-349820394)),
Token { kind: TokenKindUInt, value: uint64(932748397) }, quickToken(TokenKindUInt, uint64(932748397)),
Token { kind: TokenKindFloat, value: 239485.37520 }, quickToken(TokenKindFloat, 239485.37520),
Token { kind: TokenKindString, value: "hello world!\n" }, quickToken(TokenKindString, "hello world!\n"),
Token { kind: TokenKindRune, value: 'E' }, quickToken(TokenKindRune, 'E'),
Token { kind: TokenKindName, value: "helloWorld" }, quickToken(TokenKindName, "helloWorld"),
Token { kind: TokenKindColon }, quickToken(TokenKindColon, nil),
Token { kind: TokenKindDot }, quickToken(TokenKindDot, nil),
Token { kind: TokenKindComma }, quickToken(TokenKindComma, nil),
Token { kind: TokenKindElipsis }, quickToken(TokenKindElipsis, nil),
Token { kind: TokenKindLBracket }, quickToken(TokenKindLBracket, nil),
Token { kind: TokenKindRBracket }, quickToken(TokenKindRBracket, nil),
Token { kind: TokenKindLBrace }, quickToken(TokenKindLBrace, nil),
Token { kind: TokenKindRBrace }, quickToken(TokenKindRBrace, nil),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindPlus }, quickToken(TokenKindPlus, nil),
Token { kind: TokenKindMinus }, quickToken(TokenKindMinus, nil),
Token { kind: TokenKindIncrement }, quickToken(TokenKindIncrement, nil),
Token { kind: TokenKindDecrement }, quickToken(TokenKindDecrement, nil),
Token { kind: TokenKindAsterisk }, quickToken(TokenKindAsterisk, nil),
Token { kind: TokenKindSlash }, quickToken(TokenKindSlash, nil),
Token { kind: TokenKindAt }, quickToken(TokenKindAt, nil),
Token { kind: TokenKindExclamation }, quickToken(TokenKindExclamation, nil),
Token { kind: TokenKindPercent }, quickToken(TokenKindPercent, nil),
Token { kind: TokenKindTilde }, quickToken(TokenKindTilde, nil),
Token { kind: TokenKindLessThan }, quickToken(TokenKindLessThan, nil),
Token { kind: TokenKindLShift }, quickToken(TokenKindLShift, nil),
Token { kind: TokenKindGreaterThan }, quickToken(TokenKindGreaterThan, nil),
Token { kind: TokenKindRShift }, quickToken(TokenKindRShift, nil),
Token { kind: TokenKindBinaryOr }, quickToken(TokenKindBinaryOr, nil),
Token { kind: TokenKindLogicalOr }, quickToken(TokenKindLogicalOr, nil),
Token { kind: TokenKindBinaryAnd }, quickToken(TokenKindBinaryAnd, nil),
Token { kind: TokenKindLogicalAnd }, quickToken(TokenKindLogicalAnd, nil),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
}, test) )
} }
func TestTokenizeNumbers (test *testing.T) { func TestTokenizeNumbers (test *testing.T) {
checkTokenSlice("../tests/lexer/numbers.arf", []Token { checkTokenSlice("../tests/lexer/numbers.arf", test,
Token { kind: TokenKindUInt, value: uint64(0) }, quickToken(TokenKindUInt, uint64(0)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindUInt, value: uint64(8) }, quickToken(TokenKindUInt, uint64(8)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindUInt, value: uint64(83628266) }, quickToken(TokenKindUInt, uint64(83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindUInt, value: uint64(83628266) }, quickToken(TokenKindUInt, uint64(83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindUInt, value: uint64(83628266) }, quickToken(TokenKindUInt, uint64(83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindUInt, value: uint64(83628266) }, quickToken(TokenKindUInt, uint64(83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindInt, value: int64(-83628266) }, quickToken(TokenKindInt, int64(-83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindInt, value: int64(-83628266) }, quickToken(TokenKindInt, int64(-83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindInt, value: int64(-83628266) }, quickToken(TokenKindInt, int64(-83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindInt, value: int64(-83628266) }, quickToken(TokenKindInt, int64(-83628266)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindFloat, value: float64(0.123478) }, quickToken(TokenKindFloat, float64(0.123478)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindFloat, value: float64(234.3095) }, quickToken(TokenKindFloat, float64(234.3095)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindFloat, value: float64(-2.312) }, quickToken(TokenKindFloat, float64(-2.312)),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
}, test) )
} }
func TestTokenizeText (test *testing.T) { func TestTokenizeText (test *testing.T) {
checkTokenSlice("../tests/lexer/text.arf", []Token { checkTokenSlice("../tests/lexer/text.arf", test,
Token { kind: TokenKindString, value: "hello world!\a\b\f\n\r\t\v'\"\\" }, quickToken(TokenKindString, "hello world!\a\b\f\n\r\t\v'\"\\"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindRune, value: '\a' }, quickToken(TokenKindRune, '\a'),
Token { kind: TokenKindRune, value: '\b' }, quickToken(TokenKindRune, '\b'),
Token { kind: TokenKindRune, value: '\f' }, quickToken(TokenKindRune, '\f'),
Token { kind: TokenKindRune, value: '\n' }, quickToken(TokenKindRune, '\n'),
Token { kind: TokenKindRune, value: '\r' }, quickToken(TokenKindRune, '\r'),
Token { kind: TokenKindRune, value: '\t' }, quickToken(TokenKindRune, '\t'),
Token { kind: TokenKindRune, value: '\v' }, quickToken(TokenKindRune, '\v'),
Token { kind: TokenKindRune, value: '\'' }, quickToken(TokenKindRune, '\''),
Token { kind: TokenKindRune, value: '"' }, quickToken(TokenKindRune, '"' ),
Token { kind: TokenKindRune, value: '\\' }, quickToken(TokenKindRune, '\\'),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindString, value: "hello world \x40\u0040\U00000040!" }, quickToken(TokenKindString, "hello world \x40\u0040\U00000040!"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
}, test) )
} }
func TestTokenizeIndent (test *testing.T) { func TestTokenizeIndent (test *testing.T) {
checkTokenSlice("../tests/lexer/indent.arf", []Token { checkTokenSlice("../tests/lexer/indent.arf", test,
Token { kind: TokenKindName, value: "line1" }, quickToken(TokenKindName, "line1"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindIndent, value: 1 }, quickToken(TokenKindIndent, 1),
Token { kind: TokenKindName, value: "line2" }, quickToken(TokenKindName, "line2"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindIndent, value: 4 }, quickToken(TokenKindIndent, 4),
Token { kind: TokenKindName, value: "line3" }, quickToken(TokenKindName, "line3"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindName, value: "line4" }, quickToken(TokenKindName, "line4"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
Token { kind: TokenKindIndent, value: 2 }, quickToken(TokenKindIndent, 2),
Token { kind: TokenKindName, value: "line5" }, quickToken(TokenKindName, "line5"),
Token { kind: TokenKindNewline }, quickToken(TokenKindNewline, nil),
}, test) )
} }
func TestTokenizeErr (test *testing.T) { func TestTokenizeErr (test *testing.T) {