Compare commits
No commits in common. "master" and "v1.0-alpha" have entirely different histories.
master
...
v1.0-alpha
7
Makefile
7
Makefile
@ -35,7 +35,6 @@ TEST_VAL_DIR = $(TEST_DIR)/validation
|
|||||||
RESETCOLOR = \033[0m
|
RESETCOLOR = \033[0m
|
||||||
WHITE = $(RESETCOLOR)\033[37m
|
WHITE = $(RESETCOLOR)\033[37m
|
||||||
WHITE_BOLD = $(RESETCOLOR)\033[37;1m
|
WHITE_BOLD = $(RESETCOLOR)\033[37;1m
|
||||||
RED_BOLD = $(RESETCOLOR)\033[31;1m
|
|
||||||
|
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
@ -82,20 +81,18 @@ $(UNITY_OBJ): $(UNITY_C) $(UNITY_H)
|
|||||||
|
|
||||||
# Compile test object.
|
# Compile test object.
|
||||||
$(TEST_OBJ_DIR)/test_%.o: $(TEST_DIR)/test_%.c
|
$(TEST_OBJ_DIR)/test_%.o: $(TEST_DIR)/test_%.c
|
||||||
@ mkdir -p $(TEST_OBJ_DIR)
|
|
||||||
@ $(PRINT) "$(WHITE_BOLD)Compiling test object $(WHITE)$@$(WHITE_BOLD)...$(RESETCOLOR)"
|
@ $(PRINT) "$(WHITE_BOLD)Compiling test object $(WHITE)$@$(WHITE_BOLD)...$(RESETCOLOR)"
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
# Link final test binary.
|
# Link final test binary.
|
||||||
$(TEST_BUILD_DIR)/test_%.out: $(TEST_OBJ_DIR)/test_%.o $(OBJ_DIR)/grammar.o $(OBJ_FILES_NOMAIN) $(UNITY_OBJ)
|
$(TEST_BUILD_DIR)/test_%.out: $(TEST_OBJ_DIR)/test_%.o $(OBJ_DIR)/%.o $(UNITY_OBJ)
|
||||||
@ mkdir -p $(TEST_BUILD_DIR)
|
|
||||||
@ $(PRINT) "$(WHITE_BOLD)Linking test binary $(WHITE)$@$(WHITE_BOLD)...$(RESETCOLOR)"
|
@ $(PRINT) "$(WHITE_BOLD)Linking test binary $(WHITE)$@$(WHITE_BOLD)...$(RESETCOLOR)"
|
||||||
$(LINK) -o $@ $? $(LDFLAGS)
|
$(LINK) -o $@ $? $(LDFLAGS)
|
||||||
|
|
||||||
# Run the test files.
|
# Run the test files.
|
||||||
test: $(TARGET) $(TEST_BIN_FILES)
|
test: $(TARGET) $(TEST_BIN_FILES)
|
||||||
@ $(PRINT) "$(WHITE_BOLD)Running unit tests...$(RESETCOLOR)"
|
@ $(PRINT) "$(WHITE_BOLD)Running unit tests...$(RESETCOLOR)"
|
||||||
for test in $(TEST_BIN_FILES); do ./$${test} || echo -e "$(RED_BOLD) BAD EXIT ON $${test} $(RESETCOLOR)"; done
|
for test in $(TEST_BIN_FILES); do ./$${test}; done
|
||||||
@ $(PRINT) "$(WHITE_BOLD)Running validation tests...$(RESETCOLOR)"
|
@ $(PRINT) "$(WHITE_BOLD)Running validation tests...$(RESETCOLOR)"
|
||||||
$(BATS) $(TEST_VAL_DIR)
|
$(BATS) $(TEST_VAL_DIR)
|
||||||
|
|
||||||
|
15
README.md
15
README.md
@ -5,18 +5,9 @@ Version v1.0-alpha
|
|||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://git.signorovitch.org/jacob/scl -b stable
|
git clone https://git.signorovitch.org/jacob/scl && cd scl
|
||||||
cd scl
|
make release # Build.
|
||||||
make release
|
./scl # Run.
|
||||||
./scl.out
|
|
||||||
```
|
|
||||||
|
|
||||||
### For Development
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone git@signorovitch.org:jacob/scl --recurse-submodules && cd scl
|
|
||||||
make all test
|
|
||||||
./scl.out
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you wish to run tests, make sure to run `git clone --recurse-submodules` to
|
If you wish to run tests, make sure to run `git clone --recurse-submodules` to
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
#include "include/global.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
// Global input text.
|
|
||||||
char* inp = NULL;
|
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define DSTR_INITSZ 128
|
#define DSTR_INITSZ 2
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char* buf; // The buffer containing the string.
|
char* buf; // The buffer containing the string.
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
#ifndef GLOBAL_H
|
|
||||||
#define GLOBAL_H
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,7 +1,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "include/global.h"
|
|
||||||
#include "include/ast.h"
|
#include "include/ast.h"
|
||||||
#include "include/dstr.h"
|
#include "include/dstr.h"
|
||||||
#include "include/exec.h"
|
#include "include/exec.h"
|
||||||
@ -12,7 +11,10 @@
|
|||||||
|
|
||||||
// Global Abstract Syntax Tree.
|
// Global Abstract Syntax Tree.
|
||||||
extern AST* root;
|
extern AST* root;
|
||||||
extern char* inp;
|
|
||||||
|
// Global input text.
|
||||||
|
char* inp = NULL;
|
||||||
|
|
||||||
extern int yyparse();
|
extern int yyparse();
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
#include "../src/include/ast.h"
|
|
||||||
#include "Unity/src/unity.h"
|
|
||||||
#include "Unity/src/unity_internals.h"
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
void setUp() {}
|
|
||||||
void tearDown() {}
|
|
||||||
|
|
||||||
void test_ast_num() {
|
|
||||||
ASTNumData* num = ast_num_data_init(12.0);
|
|
||||||
AST* ast = ast_init(AST_TYPE_NUM, num);
|
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL(AST_TYPE_NUM, ast->type);
|
|
||||||
TEST_ASSERT_EQUAL(12.0, *(ASTNumData*)ast->data);
|
|
||||||
|
|
||||||
ast_destroy(ast);
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_ast_vref() {
|
|
||||||
char* s = malloc(2);
|
|
||||||
strcpy(s, "x");
|
|
||||||
ASTVrefData* vref = ast_vref_data_init(s);
|
|
||||||
AST* ast = ast_init(AST_TYPE_VREF, vref);
|
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL(AST_TYPE_VREF, ast->type);
|
|
||||||
ASTVrefData data = *(ASTVrefData*)ast->data;
|
|
||||||
TEST_ASSERT_EQUAL_STRING("x", data.to);
|
|
||||||
|
|
||||||
//ast_destroy(ast);
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_ast_call() {
|
|
||||||
AST** argv = malloc(2*sizeof(AST*));
|
|
||||||
argv[0] = ast_init(AST_TYPE_NUM, ast_num_data_init(1.0));
|
|
||||||
argv[1] = ast_init(AST_TYPE_NUM, ast_num_data_init(2.0));
|
|
||||||
|
|
||||||
ASTCallData* call = ast_call_data_init("f", 2, argv);
|
|
||||||
|
|
||||||
AST* ast = ast_init(AST_TYPE_CALL, call);
|
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL(AST_TYPE_CALL, ast->type);
|
|
||||||
TEST_ASSERT_EQUAL("f", ((ASTCallData*)ast->data)->to);
|
|
||||||
TEST_ASSERT_EQUAL(2, ((ASTCallData*)ast->data)->argc);
|
|
||||||
TEST_ASSERT_EQUAL(1.0, ((ASTCallData*)ast->data)->argv[0]);
|
|
||||||
TEST_ASSERT_EQUAL(2.0, ((ASTCallData*)ast->data)->argv[1]);
|
|
||||||
|
|
||||||
ast_destroy(ast);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
UNITY_BEGIN();
|
|
||||||
RUN_TEST(test_ast_num);
|
|
||||||
RUN_TEST(test_ast_vref);
|
|
||||||
RUN_TEST(test_ast_call);
|
|
||||||
return UNITY_END();
|
|
||||||
}
|
|
@ -9,7 +9,7 @@ void test_dstr_init() {
|
|||||||
Dstr* dstr = dstr_init();
|
Dstr* dstr = dstr_init();
|
||||||
TEST_ASSERT_EQUAL(0, strlen(dstr->buf));
|
TEST_ASSERT_EQUAL(0, strlen(dstr->buf));
|
||||||
TEST_ASSERT_EQUAL(0, dstr->ln);
|
TEST_ASSERT_EQUAL(0, dstr->ln);
|
||||||
TEST_ASSERT_EQUAL(DSTR_INITSZ, dstr->sz);
|
TEST_ASSERT_EQUAL(DSTR_INITSZ, dstr->bufsz);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_dstr_append() {
|
void test_dstr_append() {
|
||||||
@ -22,7 +22,7 @@ void test_dstr_append() {
|
|||||||
|
|
||||||
TEST_ASSERT_EQUAL_STRING(hello_world, dstr->buf);
|
TEST_ASSERT_EQUAL_STRING(hello_world, dstr->buf);
|
||||||
TEST_ASSERT_EQUAL(strlen(hello_world), dstr->ln);
|
TEST_ASSERT_EQUAL(strlen(hello_world), dstr->ln);
|
||||||
TEST_ASSERT_EQUAL(DSTR_INITSZ, dstr->sz);
|
TEST_ASSERT_EQUAL(DSTR_INITSZ, dstr->bufsz);
|
||||||
|
|
||||||
dstr_destroy(dstr);
|
dstr_destroy(dstr);
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ void test_dstr_append() {
|
|||||||
|
|
||||||
TEST_ASSERT_EQUAL_STRING(h, dstr->buf);
|
TEST_ASSERT_EQUAL_STRING(h, dstr->buf);
|
||||||
TEST_ASSERT_EQUAL(strlen(h), dstr->ln);
|
TEST_ASSERT_EQUAL(strlen(h), dstr->ln);
|
||||||
TEST_ASSERT_EQUAL(DSTR_INITSZ * 2, dstr->sz);
|
TEST_ASSERT_EQUAL(DSTR_INITSZ * 2, dstr->bufsz);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_dstr_appendch() {
|
void test_dstr_appendch() {
|
||||||
@ -50,7 +50,7 @@ void test_dstr_appendch() {
|
|||||||
|
|
||||||
TEST_ASSERT_EQUAL_STRING(c_str, dstr->buf);
|
TEST_ASSERT_EQUAL_STRING(c_str, dstr->buf);
|
||||||
TEST_ASSERT_EQUAL(strlen(c_str), dstr->ln);
|
TEST_ASSERT_EQUAL(strlen(c_str), dstr->ln);
|
||||||
TEST_ASSERT_EQUAL(DSTR_INITSZ, dstr->sz);
|
TEST_ASSERT_EQUAL(DSTR_INITSZ, dstr->bufsz);
|
||||||
|
|
||||||
dstr_destroy(dstr);
|
dstr_destroy(dstr);
|
||||||
|
|
||||||
@ -66,10 +66,11 @@ void test_dstr_appendch() {
|
|||||||
|
|
||||||
TEST_ASSERT_EQUAL_STRING(h, dstr->buf);
|
TEST_ASSERT_EQUAL_STRING(h, dstr->buf);
|
||||||
TEST_ASSERT_EQUAL(strlen(h), dstr->ln);
|
TEST_ASSERT_EQUAL(strlen(h), dstr->ln);
|
||||||
TEST_ASSERT_EQUAL(DSTR_INITSZ * 2, dstr->sz);
|
TEST_ASSERT_EQUAL(DSTR_INITSZ * 2, dstr->bufsz);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
// not needed when using generate_test_runner.rb
|
||||||
|
int main(void) {
|
||||||
UNITY_BEGIN();
|
UNITY_BEGIN();
|
||||||
RUN_TEST(test_dstr_init);
|
RUN_TEST(test_dstr_init);
|
||||||
RUN_TEST(test_dstr_append);
|
RUN_TEST(test_dstr_append);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user