66 lines
2.1 KiB
C
66 lines
2.1 KiB
C
// Kyler Olsen
|
|
// ZINC Bootstrap compiler
|
|
// Lexer Tests
|
|
// June 2025
|
|
|
|
#include <assert.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include "../include/sync/types.h"
|
|
#include "../include/sync/lexer.h"
|
|
|
|
// TODO: Update Tests
|
|
|
|
// void test_tokenize_simple_assignment(void) {
|
|
// const char* src = "x = 42;";
|
|
// Lexer lexer;
|
|
// lexer_init(&lexer, "<stdin>", src);
|
|
|
|
// TokenResult t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_IDENTIFIER && strncmp(t.result.start, "x", t.result.length) == 0);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_OPERATOR && strncmp(t.result.start, "=", t.result.length) == 0);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_NUMBER && strncmp(t.result.start, "42", t.result.length) == 0);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_SEMICOLON);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_EOF);
|
|
// }
|
|
|
|
// void test_tokenize_function_call(void) {
|
|
// const char* src = "print(x);";
|
|
// Lexer lexer;
|
|
// lexer_init(&lexer, "<stdin>", src);
|
|
|
|
// TokenResult t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_IDENTIFIER && strncmp(t.result.start, "print", t.result.length) == 0);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_LPAREN);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_IDENTIFIER && strncmp(t.result.start, "x", t.result.length) == 0);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_RPAREN);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_SEMICOLON);
|
|
|
|
// t = lexer_next(&lexer);
|
|
// assert(t.type == SYNC_RESULT && t.result.type == TOKEN_EOF);
|
|
// }
|
|
|
|
int main(void) {
|
|
// test_tokenize_simple_assignment();
|
|
// test_tokenize_function_call();
|
|
|
|
printf("All lexer tests passed.\n");
|
|
return 0;
|
|
}
|