#include #include #include #include "../include/sync/types.h" #include "../include/sync/lexer.h" void test_tokenize_simple_assignment(void) { const char *src = "x = 42;"; Lexer lexer; lexer_init(&lexer, "", 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, "", 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; }