working on csv data, parser works but needs more testing, might add bool to ParserData_DestroyFn callback for clearing

This commit is contained in:
herbglitch 2024-12-04 02:43:58 -07:00
parent 4c3d357cb9
commit ca6a9c118f
13 changed files with 384 additions and 279 deletions

View file

@ -4,23 +4,20 @@
#include "arc/std/string.h"
#include "arc/std/parser/parserlang.h"
const uint32_t TEST_LAMBDA = 0;
const uint32_t TEST_ALPHA_LOWER_CHAR = 1;
const uint32_t TEST_ALPHA_UPPER_CHAR = 2;
const uint32_t TEST_ALPHA_CHAR = 3;
uint32_t TEST_PARSERLANG_ALPHA_CHAR = 24;
/* ~ parserlang tests ~ */
uint32_t TEST_ParserLang_GetIdFn(ARC_String *string){
if(ARC_String_EqualsCStringWithStrlen(string, "<alphaChar>")){
return TEST_ALPHA_CHAR;
return TEST_PARSERLANG_ALPHA_CHAR;
}
if(ARC_String_EqualsCStringWithStrlen(string, "ALPHA_LOWER_CHAR")){
return TEST_ALPHA_LOWER_CHAR;
return ARC_PARSERLANG_TOKEN_ALPHA_LOWER_CHAR;
}
if(ARC_String_EqualsCStringWithStrlen(string, "ALPHA_UPPER_CHAR")){
return TEST_ALPHA_UPPER_CHAR;
return ARC_PARSERLANG_TOKEN_ALPHA_UPPER_CHAR;
}
return ~(uint32_t)0;
@ -31,7 +28,7 @@ ARC_TEST(Parser_ParserLang_BasicTest){
ARC_ParserLang_CreateAsParser(&parser, TEST_ParserLang_GetIdFn);
ARC_String *tempString;
ARC_String_CreateWithStrlen(&tempString, "<alphaChar> -> ALPHA_LOWER_CHAR | ALPHA_UPPER_CHAR\n");
ARC_String_CreateWithStrlen(&tempString, "\n\n<alphaChar> -> ALPHA_LOWER_CHAR | ALPHA_UPPER_CHAR\n\n\n");
//this destroys string, so no need for cleanup
ARC_Parser_Parse(parser, &tempString);
@ -40,13 +37,13 @@ ARC_TEST(Parser_ParserLang_BasicTest){
void *data = ARC_Parser_GetData(parser);
ARC_ParserTag *tag = ARC_Vector_Get((ARC_Vector *)data, 0);
ARC_CHECK(tag->tagId == TEST_ALPHA_CHAR);
ARC_CHECK(tag->tagId == TEST_PARSERLANG_ALPHA_CHAR);
ARC_CHECK(tag->tokensOrTagsSize == 2);
ARC_CHECK(tag->tokensOrTags[0][0] == 1);
ARC_CHECK(tag->tokensOrTags[0][1] == TEST_ALPHA_LOWER_CHAR);
ARC_CHECK(tag->tokensOrTags[1][0] == 1);
ARC_CHECK(tag->tokensOrTags[1][1] == TEST_ALPHA_UPPER_CHAR);
ARC_CHECK(tag->tokensOrTagsSize == 2);
ARC_CHECK(tag->tokensOrTags[0][0] == 1);
ARC_CHECK(tag->tokensOrTags[0][1] == ARC_PARSERLANG_TOKEN_ALPHA_LOWER_CHAR);
ARC_CHECK(tag->tokensOrTags[1][0] == 1);
ARC_CHECK(tag->tokensOrTags[1][1] == ARC_PARSERLANG_TOKEN_ALPHA_UPPER_CHAR);
ARC_Parser_Destroy(parser);
}