Created test to check lexer errors
This commit is contained in:
		
							parent
							
								
									39e4fbe844
								
							
						
					
					
						commit
						9e66305001
					
				| @ -3,8 +3,10 @@ package lexer | ||||
| import "testing" | ||||
| import "git.tebibyte.media/sashakoshka/arf/file" | ||||
| import "git.tebibyte.media/sashakoshka/arf/types" | ||||
| import "git.tebibyte.media/sashakoshka/arf/infoerr" | ||||
| 
 | ||||
| func checkTokenSlice (filePath string, correct []Token, test *testing.T) { | ||||
| 	test.Log("checking lexer results for", filePath) | ||||
| 	file, err := file.Open(filePath) | ||||
| 	if err != nil { | ||||
| 		test.Log(err) | ||||
| @ -46,6 +48,62 @@ func checkTokenSlice (filePath string, correct []Token, test *testing.T) { | ||||
| 	test.Log("token slice content match") | ||||
| } | ||||
| 
 | ||||
| func compareErr ( | ||||
| 	filePath string, | ||||
| 	correctKind    infoerr.ErrorKind, | ||||
| 	correctMessage string, | ||||
| 	correctRow     int, | ||||
| 	correctColumn  int, | ||||
| 	correctWidth   int, | ||||
| 	test *testing.T, | ||||
| ) { | ||||
| 	test.Log("testing errors in", filePath) | ||||
| 	file, err := file.Open(filePath) | ||||
| 	if err != nil { | ||||
| 		test.Log(err) | ||||
| 		test.Fail() | ||||
| 		return | ||||
| 	} | ||||
| 	 | ||||
| 	_, err = Tokenize(file) | ||||
| 	check := err.(infoerr.Error) | ||||
| 
 | ||||
| 	if check.Kind() != correctKind { | ||||
| 		test.Log("mismatched error kind") | ||||
| 		test.Log("- want:", correctKind) | ||||
| 		test.Log("- have:", check.Kind()) | ||||
| 		test.Fail() | ||||
| 	} | ||||
| 
 | ||||
| 	if check.Message() != correctMessage { | ||||
| 		test.Log("mismatched error message") | ||||
| 		test.Log("- want:", correctMessage) | ||||
| 		test.Log("- have:", check.Message()) | ||||
| 		test.Fail() | ||||
| 	} | ||||
| 
 | ||||
| 	if check.Row() != correctRow { | ||||
| 		test.Log("mismatched error row") | ||||
| 		test.Log("- want:", correctRow) | ||||
| 		test.Log("- have:", check.Row()) | ||||
| 		test.Fail() | ||||
| 	} | ||||
| 
 | ||||
| 	if check.Column() != correctColumn { | ||||
| 		test.Log("mismatched error column") | ||||
| 		test.Log("- want:", correctColumn) | ||||
| 		test.Log("- have:", check.Column()) | ||||
| 		test.Fail() | ||||
| 	} | ||||
| 
 | ||||
| 	if check.Width() != correctWidth { | ||||
| 		test.Log("mismatched error width") | ||||
| 		test.Log("- want:", check.Width()) | ||||
| 		test.Log("- have:", correctWidth) | ||||
| 		test.Fail() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestTokenizeAll (test *testing.T) { | ||||
| 	checkTokenSlice("../tests/lexer/all.arf", []Token { | ||||
| 		Token { kind: TokenKindSeparator }, | ||||
| @ -161,3 +219,12 @@ func TestTokenizeIndent (test *testing.T) { | ||||
| 		Token { kind: TokenKindNewline }, | ||||
| 	}, test) | ||||
| } | ||||
| 
 | ||||
| func TestTokenizeErr (test *testing.T) { | ||||
| 	compareErr ( | ||||
| 		"../tests/lexer/error.arf", | ||||
| 		infoerr.ErrorKindError, | ||||
| 		"unexpected symbol character ;", | ||||
| 		1, 0, 1, | ||||
| 		test) | ||||
| } | ||||
|  | ||||
							
								
								
									
										2
									
								
								tests/lexer/error.arf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tests/lexer/error.arf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| :arf | ||||
| ; | ||||
		Reference in New Issue
	
	Block a user