whistlepig 0.9.1 → 0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,67 +0,0 @@
1
- #include <string.h>
2
- #include "stringpool.h"
3
- #include "error.h"
4
- #include "test.h"
5
-
6
- TEST(stringpool_initial_state) {
7
- stringpool* p = malloc(stringpool_initial_size());
8
- stringpool_init(p);
9
-
10
- ASSERT(!stringpool_needs_bump(p));
11
-
12
- free(p);
13
- return NO_ERROR;
14
- }
15
-
16
- TEST(stringpool_add_gives_unique_ids) {
17
- stringpool* p = malloc(stringpool_initial_size());
18
- stringpool_init(p);
19
-
20
- uint32_t ret1 = stringpool_add(p, "potato");
21
- ASSERT(ret1 > 0);
22
-
23
- uint32_t ret2 = stringpool_add(p, "monkey");
24
- ASSERT(ret2 > 0);
25
-
26
- ASSERT(ret1 != ret2);
27
-
28
- free(p);
29
- return NO_ERROR;
30
- }
31
-
32
- TEST(stringpool_add_gives_ids_that_lookup_returns) {
33
- stringpool* p = malloc(stringpool_initial_size());
34
- stringpool_init(p);
35
-
36
- uint32_t ret;
37
- char* s;
38
-
39
- ret = stringpool_add(p, "potato");
40
- s = stringpool_lookup(p, ret);
41
- ASSERT(!strcmp(s, "potato"));
42
-
43
- ret = stringpool_add(p, "monkey");
44
- s = stringpool_lookup(p, ret);
45
- ASSERT(!strcmp(s, "monkey"));
46
-
47
- free(p);
48
- return NO_ERROR;
49
- }
50
-
51
- TEST(stringpool_detects_out_of_room) {
52
- stringpool* p = malloc(stringpool_initial_size());
53
- stringpool_init(p);
54
-
55
- uint32_t ret;
56
- int times = stringpool_initial_size() / 6;
57
- for(int i = 0; i < times - 1; i++) {
58
- ret = stringpool_add(p, "12345");
59
- ASSERT(ret != (uint32_t)-1);
60
- }
61
-
62
- ret = stringpool_add(p, "12345");
63
- ASSERT(ret == (uint32_t)-1);
64
-
65
- return NO_ERROR;
66
- }
67
-
@@ -1,95 +0,0 @@
1
- #include "termhash.h"
2
- #include "test.h"
3
- #include "error.h"
4
-
5
- TEST(termhash_initial_state) {
6
- termhash* h = malloc(termhash_initial_size());
7
- termhash_init(h);
8
-
9
- ASSERT(h->n_occupied == 0);
10
- //ASSERT(!termhash_getting_full(h));
11
-
12
- free(h);
13
- return NO_ERROR;
14
- }
15
-
16
- TEST(termhash_lookups_on_empty) {
17
- termhash* h = malloc(termhash_initial_size());
18
- termhash_init(h);
19
-
20
- term t1 = {0, 0};
21
- term t2 = {10, 20};
22
- term t3 = {123, 345};
23
-
24
- ASSERT(termhash_get_val(h, t1) == (uint32_t)-1);
25
- ASSERT(termhash_get_val(h, t2) == (uint32_t)-1);
26
- ASSERT(termhash_get_val(h, t3) == (uint32_t)-1);
27
-
28
- free(h);
29
- return NO_ERROR;
30
- }
31
-
32
- TEST(termhash_overwriting) {
33
- termhash* h = malloc(termhash_initial_size());
34
- termhash_init(h);
35
-
36
- term t1 = {5, 11};
37
-
38
- ASSERT(termhash_get_val(h, t1) == (uint32_t)-1);
39
- RELAY_ERROR(termhash_put_val(h, t1, 1234));
40
- ASSERT(termhash_get_val(h, t1) == 1234);
41
-
42
- RELAY_ERROR(termhash_put_val(h, t1, 2345));
43
- ASSERT(termhash_get_val(h, t1) == 2345);
44
-
45
- RELAY_ERROR(termhash_put_val(h, t1, 1));
46
- ASSERT(termhash_get_val(h, t1) == 1);
47
-
48
- free(h);
49
- return NO_ERROR;
50
- }
51
-
52
- TEST(termhash_many_puts) { // try and force a resize
53
- termhash* h = malloc(termhash_initial_size());
54
- termhash_init(h);
55
-
56
- term t1 = {1, 0};
57
-
58
- for(int i = 1; i < 100; i++) {
59
- t1.word_s = i;
60
- RELAY_ERROR(termhash_put_val(h, t1, 1000 + i));
61
- if(termhash_needs_bump(h)) {
62
- h = realloc(h, termhash_next_size(h));
63
- if(h == NULL) RAISE_SYSERROR("realloc");
64
- termhash_setup(h);
65
- RELAY_ERROR(termhash_bump_size(h));
66
- }
67
- }
68
-
69
- t1.word_s = 55;
70
- uint32_t v = termhash_get_val(h, t1);
71
- ASSERT(v == 1055);
72
-
73
- free(h);
74
- return NO_ERROR;
75
- }
76
-
77
- TEST(termhash_detects_out_of_room) {
78
- termhash* h = malloc(termhash_initial_size());
79
- termhash_init(h);
80
-
81
- term t = {1, 0};
82
-
83
- for(int i = 0; i < 3; i++) {
84
- t.word_s = i;
85
- RELAY_ERROR(termhash_put_val(h, t, 100 + i));
86
- }
87
-
88
- t.word_s = 999;
89
- wp_error* e = termhash_put_val(h, t, 999);
90
- ASSERT(e != NULL);
91
- wp_error_free(e);
92
-
93
- free(h);
94
- return NO_ERROR;
95
- }
@@ -1,55 +0,0 @@
1
- #include "test.h"
2
- #include "tokenizer.lex.h"
3
-
4
- #define ASSERT_NEXT_WORD(word) { \
5
- int token_type = yylex(scanner); \
6
- ASSERT(token_type == TOK_WORD); \
7
- ASSERT(!strcmp(word, yyget_text(scanner))); \
8
- }
9
-
10
- #define ASSERT_DONE { \
11
- int token_type = yylex(scanner); \
12
- ASSERT(token_type == TOK_DONE); \
13
- }
14
-
15
- TEST(tokenizes_easy_words) {
16
- yyscan_t scanner;
17
- lexinfo charpos = {0, 0};
18
-
19
- yylex_init_extra(&charpos, &scanner);
20
-
21
- const char* string = "i love mice";
22
- YY_BUFFER_STATE state = yy_scan_string(string, scanner);
23
-
24
- ASSERT_NEXT_WORD("i");
25
- ASSERT_NEXT_WORD("love");
26
- ASSERT_NEXT_WORD("mice");
27
- ASSERT_DONE;
28
-
29
- yy_delete_buffer(state, scanner);
30
- yylex_destroy(scanner);
31
-
32
- return NO_ERROR;
33
- }
34
-
35
- TEST(strips_trailing_punctuation) {
36
- yyscan_t scanner;
37
- lexinfo charpos = {0, 0};
38
-
39
- yylex_init_extra(&charpos, &scanner);
40
-
41
- const char* string = "hey! this: you're <cool>";
42
- YY_BUFFER_STATE state = yy_scan_string(string, scanner);
43
-
44
- ASSERT_NEXT_WORD("hey");
45
- ASSERT_NEXT_WORD("this");
46
- ASSERT_NEXT_WORD("you're");
47
- ASSERT_NEXT_WORD("cool");
48
- ASSERT_DONE;
49
-
50
- yy_delete_buffer(state, scanner);
51
- yylex_destroy(scanner);
52
-
53
- return NO_ERROR;
54
- }
55
-
@@ -1,38 +0,0 @@
1
- #ifndef WP_TEST_H_
2
- #define WP_TEST_H_
3
-
4
- // whistlepig test header file
5
- // (c) 2011 William Morgan. See COPYING for license terms.
6
- //
7
- // macros for the c unit tests
8
-
9
- #define ASSERT(x) do { \
10
- (*asserts)++; \
11
- if(!(x)) { \
12
- printf("-- test failure: (" #x ") is FALSE in %s (%s:%d)\n\n", __PRETTY_FUNCTION__, __FILE__, __LINE__); \
13
- *fail = 1; \
14
- return NO_ERROR; \
15
- } \
16
- } while(0)
17
-
18
- #define TEST(x) wp_error* test_##x(int* fail, int* asserts)
19
-
20
- #define RUNTEST(x) do { \
21
- int fail = 0; \
22
- int this_asserts = 0; \
23
- tests++; \
24
- wp_error* err = test_##x(&fail, &this_asserts); \
25
- asserts += this_asserts; \
26
- if(fail) { \
27
- printf("FAIL " #x "\n"); \
28
- failures++; \
29
- } \
30
- else if(err) { \
31
- errors++; \
32
- printf(" ERR " #x "\n"); \
33
- PRINT_ERROR(err, stdout); \
34
- } \
35
- else printf("PASS %d/%d " #x "\n", this_asserts, this_asserts); \
36
- } while(0)
37
-
38
- #endif
@@ -1,28 +0,0 @@
1
- #ifndef WP_TIMER_H_
2
- #define WP_TIMER_H_
3
-
4
- // whistlepig main header file
5
- // (c) 2011 William Morgan. See COPYING for license terms.
6
- //
7
- // just some timer macros
8
-
9
- #include <sys/time.h>
10
-
11
- #define TIMER(name) \
12
- struct timeval name##_startt, name##_endt; \
13
- long name##_elapsed;
14
-
15
- #define START_TIMER(name) \
16
- TIMER(name) \
17
- gettimeofday(&name##_startt, NULL);
18
-
19
- #define RESET_TIMER(name) gettimeofday(&name##_startt, NULL);
20
-
21
- #define MARK_TIMER(name) \
22
- gettimeofday(&name##_endt, NULL); \
23
- name##_elapsed = ((name##_endt.tv_sec - name##_startt.tv_sec) * 1000) + ((name##_endt.tv_usec - name##_startt.tv_usec) / 1000);
24
-
25
- #define TIMER_MS(name) name##_elapsed
26
- #define TIMER_MS(name) name##_elapsed
27
-
28
- #endif