aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authors-over-42023-07-10 00:59:08 -0400
committers-over-42023-07-10 00:59:08 -0400
commitfa403b3fb6ff14dbed73d815684d6935c3c19717 (patch)
treed255f1a2ea4f27f1b2046e29f9811e52dbd4dee9
parent979bf65d49a8d362be8ba370dc453362dca158cd (diff)
made a test framework (HLKT)
-rw-r--r--src/include/hlkt.h29
-rw-r--r--src/include/util.h1
-rw-r--r--src/main.c5
-rw-r--r--src/parser.c2
-rw-r--r--src/tree.c1
-rw-r--r--src/util.c16
6 files changed, 48 insertions, 6 deletions
diff --git a/src/include/hlkt.h b/src/include/hlkt.h
new file mode 100644
index 0000000..295e5f4
--- /dev/null
+++ b/src/include/hlkt.h
@@ -0,0 +1,29 @@
+#ifndef HLKT_H
+#define HLKT_H
+
+#include <time.h>
+
+#include "util.h"
+
+static int hlkt_run = 0; /* number of tests run */
+static int hlkt_failed = 0; /* number of tests that have failed */
+
+#define HLKT_HIDE(stuff) do { stuff } while (0)
+
+#define HLKT_LOG() HLKT_HIDE( \
+ if ((hlkt_run > 0) && (hlkt_failed > 0)) { \
+ log_war("HLKT: %d/%d tests failed", hlkt_failed, hlkt_run); \
+ } else { \
+ log_inf("HLKT: all %d tests passed", hlkt_run); \
+ } \
+)
+
+#define HLKT_ASS(pred) HLKT_HIDE( \
+ hlkt_run ++; \
+ if (! pred) { \
+ hlkt_failed ++; \
+ log_err("HLKT: test [%s] failed: %s:%s:%d", #pred, __FILE__, __func__, __LINE__);\
+ } \
+)
+
+#endif
diff --git a/src/include/util.h b/src/include/util.h
index 63ee8bb..a7879e9 100644
--- a/src/include/util.h
+++ b/src/include/util.h
@@ -8,6 +8,7 @@
void die(const char* fmt, ...);
+void log_err(const char* fmt, ...);
void log_inf(const char* fmt, ...);
void log_raw(const char* fmt, ...);
void log_war(const char* fmt, ...);
diff --git a/src/main.c b/src/main.c
index 1efc797..75ee98f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -5,6 +5,7 @@
#include "include/token.h"
#include "include/lexer.h"
#include "include/source.h"
+#include "include/hlkt.h"
int main(int argc, char* argv[]) {
char* source;
@@ -14,6 +15,7 @@ int main(int argc, char* argv[]) {
source = source_get(argv[1]);
lexer = lexer_init(source);
+ HLKT_ASS(lexer);
log_inf("lexer created");
log_inf("BEGIN INPUT");
@@ -37,10 +39,9 @@ int main(int argc, char* argv[]) {
// clean up
lexer_destroy(lexer);
- //fclose(fsource);
free(source);
- log_inf("source file closed");
+ HLKT_LOG();
return 0;
}
diff --git a/src/parser.c b/src/parser.c
index ab51b5b..4233138 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -99,7 +99,7 @@ tree_t* parser_parse_def(parser_t* parser) {
def->data.def.name = parser->token->value;
- def->data.def.
+// def->data.def.
while (parser->token->type == TOKEN_DEF_TAG) {
diff --git a/src/tree.c b/src/tree.c
index aadfc3f..0ed0697 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -12,7 +12,6 @@ tree_t* tree_init(int type) {
tree->data.comp.size = 0;
break;
case TREE_DEF:
- tree->data.def.mutability = 0;
tree->data.def.name = (void*) 0;
tree->data.def.value = (void*) 0;
break;
diff --git a/src/util.c b/src/util.c
index 15ac0d4..ba99bda 100644
--- a/src/util.c
+++ b/src/util.c
@@ -3,7 +3,7 @@
void die(const char* fmt, ...) {
va_list ap;
- fprintf(stderr, "[\e[31m==\e[0m] ERROR ");
+ fprintf(stderr, "[\e[31;1m==\e[0m] FATAL ERROR ");
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
@@ -13,6 +13,18 @@ void die(const char* fmt, ...) {
exit(1);
}
+void log_err(const char* fmt, ...) {
+ va_list ap;
+
+ fprintf(stderr, "[\e[31m==\e[0m] ERROR ");
+
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+
+ fprintf(stderr, "\n");
+}
+
void log_inf(const char* fmt, ...) {
va_list ap;
@@ -35,7 +47,7 @@ void log_raw(const char* fmt, ...) {
void log_war(const char* fmt, ...) {
va_list ap;
- fprintf(stderr, "[\e[33m==\e[0m] WARNING");
+ fprintf(stderr, "[\e[33m==\e[0m] WARNING ");
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);