39 lines
1 KiB
C
39 lines
1 KiB
C
#include "../test.h"
|
|
#include "arc/std/lexer.h"
|
|
|
|
ARC_TEST(Lexer_Char_Match){
|
|
ARC_Lexer *lexer;
|
|
ARC_Lexer_Create(&lexer);
|
|
|
|
ARC_Lexer_InitBasicTokenRules(lexer);
|
|
|
|
ARC_String *simple;
|
|
ARC_String_CreateWithStrlen(&simple, "::{}!/.");
|
|
|
|
ARC_Lexer_LexString(lexer, &simple);
|
|
|
|
ARC_LexerToken token;
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 0);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_COLON_ID);
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 1);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_COLON_ID);
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 2);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_LEFT_CURLY_BRACE_ID);
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 3);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_RIGHT_CURLY_BRACE_ID);
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 4);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_BANG_ID);
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 5);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_FORWARD_SLASH_ID);
|
|
|
|
token = ARC_Lexer_GetToken(lexer, 6);
|
|
ARC_CHECK(token.rule == ARC_LEXER_TOKEN_PERIOD_ID);
|
|
|
|
ARC_Lexer_Destroy(lexer);
|
|
}
|