sync/test/test_lexer.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;
}