init commit
This commit is contained in:
commit
6300e42bb2
28 files changed
+104005
No files matched your search
@@ -0,0 +1,61 @@
|
||||
#include "enfilade.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static void get_values(enfilade_t *e, const char *address,
|
||||
void ***items, size_t *count)
|
||||
{
|
||||
enf_result_t r = getXtumbler_values_enfilade(e, address, items, count);
|
||||
assert(r.code == ENF_OK);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
enfilade_t *e = create_enfilade();
|
||||
int a = 41, b = 42, c = 43, d = 99;
|
||||
void **items = NULL;
|
||||
size_t count = 0;
|
||||
enf_result_t r;
|
||||
|
||||
assert(e);
|
||||
|
||||
assert(put_enfilade(e, "1.2.3", &a).code == ENF_OK);
|
||||
assert(put_enfilade(e, "1.2.4", &b).code == ENF_OK);
|
||||
assert(put_enfilade(e, "1.2.5", &c).code == ENF_OK);
|
||||
assert(put_enfilade(e, "1.2", &d).code == ENF_OK);
|
||||
|
||||
get_values(e, "1.2", &items, &count);
|
||||
assert(count == 4);
|
||||
assert(*(int *)items[0] == 99);
|
||||
assert(*(int *)items[1] == 41);
|
||||
assert(*(int *)items[2] == 42);
|
||||
assert(*(int *)items[3] == 43);
|
||||
free(items);
|
||||
|
||||
assert(getXtumbler_enfilade(e, "1.2.4") == &b);
|
||||
|
||||
r = remove_enfilade(e, "1.2");
|
||||
assert(r.code == ENF_OK);
|
||||
get_values(e, "1.2", &items, &count);
|
||||
assert(count == 3);
|
||||
assert(*(int *)items[0] == 41);
|
||||
free(items);
|
||||
|
||||
r = remove_enfilade(e, "1.2.3");
|
||||
assert(r.code == ENF_OK);
|
||||
assert(getXtumbler_enfilade(e, "1.2.3") == NULL);
|
||||
assert(getXtumbler_enfilade(e, "1.2.4") == &b);
|
||||
|
||||
r = remove_enfilade(e, "1.2.3");
|
||||
assert(r.code == ENF_ERR_NOT_FOUND);
|
||||
|
||||
assert(put_enfilade(e, "9.9.9", &a).code == ENF_OK);
|
||||
assert(remove_enfilade(e, "9.9.9").code == ENF_OK);
|
||||
assert(getXtumbler_enfilade(e, "9.9") == NULL);
|
||||
|
||||
destroy_enfilade(e);
|
||||
puts("enfilade tests: ok");
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
#include "enfilade_s7.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
s7_scheme *sc = s7_init();
|
||||
s7_pointer value;
|
||||
|
||||
init_enfilade_s7(sc);
|
||||
|
||||
value = s7_eval_c_string(sc,
|
||||
"(let ((e (make-enfilade)))"
|
||||
" (enfilade-put-data e \"1.2.3\" 42)"
|
||||
" (enfilade-put-data e \"1.2.4\" 43)"
|
||||
" (enfilade-put-data e \"1.3.1\" 99)"
|
||||
" (list"
|
||||
" (enfilade-get-by-tumbler e \"1.2\")"
|
||||
" (enfilade-get-range e 1 3)"
|
||||
" (tumbler-compare \"1.2\" \"1.2.1\")"
|
||||
" (tumbler-add \"25.6.46.93\" \"0.0.3.1.21\")"
|
||||
" (tumbler-subtract \"1.4.3\" \"1.1.1\")"
|
||||
" (enfilade-remove e \"1.2.3\")"
|
||||
" (enfilade-get-by-tumbler e \"1.2.3\")))");
|
||||
|
||||
puts(s7_object_to_c_string(sc, value));
|
||||
s7_free(sc);
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
#include "tumbler.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static void expect_string(const tumbler_t *t, const char *want)
|
||||
{
|
||||
char *got = NULL;
|
||||
tumbler_result_t r = tumbler_to_string(t, &got);
|
||||
assert(r.code == TUMBLER_OK);
|
||||
assert(strcmp(got, want) == 0);
|
||||
free(got);
|
||||
}
|
||||
|
||||
static tumbler_t parse(const char *s)
|
||||
{
|
||||
tumbler_t t = {0};
|
||||
tumbler_result_t r = tumbler_parse(s, &t);
|
||||
assert(r.code == TUMBLER_OK);
|
||||
return t;
|
||||
}
|
||||
|
||||
static void test_compare(void)
|
||||
{
|
||||
const char *line[] = {
|
||||
"1", "1.1", "1.1.1", "1.1.2", "1.1.3",
|
||||
"1.2", "1.2.1", "1.2.2", "1.3", "1.4", "2"
|
||||
};
|
||||
|
||||
for (size_t i = 0; i + 1 < sizeof(line) / sizeof(line[0]); i++) {
|
||||
tumbler_t a = parse(line[i]);
|
||||
tumbler_t b = parse(line[i + 1]);
|
||||
assert(tumbler_compare(&a, &b) < 0);
|
||||
tumbler_free(&a);
|
||||
tumbler_free(&b);
|
||||
}
|
||||
|
||||
{
|
||||
tumbler_t a = parse("1");
|
||||
tumbler_t b = parse("1.0.0");
|
||||
assert(tumbler_compare(&a, &b) == 0);
|
||||
tumbler_free(&a);
|
||||
tumbler_free(&b);
|
||||
}
|
||||
}
|
||||
|
||||
static void test_arithmetic(void)
|
||||
{
|
||||
tumbler_t a, b, out = {0};
|
||||
|
||||
a = parse("3"); b = parse("2.16.3");
|
||||
assert(tumbler_add(&a, &b, &out).code == TUMBLER_OK);
|
||||
expect_string(&out, "5.16.3");
|
||||
tumbler_free(&a); tumbler_free(&b); tumbler_free(&out);
|
||||
|
||||
a = parse("25.6.46.93"); b = parse("0.0.3.1.21");
|
||||
assert(tumbler_add(&a, &b, &out).code == TUMBLER_OK);
|
||||
expect_string(&out, "25.6.49.1.21");
|
||||
tumbler_free(&a); tumbler_free(&b); tumbler_free(&out);
|
||||
|
||||
a = parse("1.4.3"); b = parse("1.1.1");
|
||||
assert(tumbler_subtract_strong(&a, &b, &out).code == TUMBLER_OK);
|
||||
expect_string(&out, "0.3.3");
|
||||
tumbler_free(&out);
|
||||
assert(tumbler_subtract(&a, &b, &out).code == TUMBLER_OK);
|
||||
expect_string(&out, "0.3.3");
|
||||
tumbler_free(&a); tumbler_free(&b); tumbler_free(&out);
|
||||
|
||||
a = parse("0.3.3.3.4.5.6"); b = parse("0.1.1.3.3.3.3");
|
||||
assert(tumbler_subtract_weak(&a, &b, &out).code == TUMBLER_OK);
|
||||
expect_string(&out, "0.2");
|
||||
tumbler_free(&a); tumbler_free(&b); tumbler_free(&out);
|
||||
|
||||
a = parse("1.2.3"); b = parse("1.1");
|
||||
assert(tumbler_subtract(&a, &b, &out).code == TUMBLER_OK);
|
||||
expect_string(&out, "0.1.3");
|
||||
tumbler_free(&a); tumbler_free(&b); tumbler_free(&out);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
test_compare();
|
||||
test_arithmetic();
|
||||
puts("tumbler tests: ok");
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user