diff options
| author | 0scar <qgt268@alumni.ku.dk> | 2021-09-21 10:33:15 +0000 |
|---|---|---|
| committer | 0scar <qgt268@alumni.ku.dk> | 2021-09-21 10:33:15 +0000 |
| commit | dcfa4f31f88cb22de0ac545c7070dcd0c02f7fe0 (patch) | |
| tree | 6ac990ce034a2fc60277bb15cce90a18c0363d65 | |
| parent | 891d4c3b022791e960f79e051a42baac2b8c920b (diff) | |
Add proper tests/example in main
| -rw-r--r-- | src/main.c | 59 |
1 files changed, 44 insertions, 15 deletions
@@ -15,36 +15,65 @@ struct userdat { enum gender gender; }; +struct userdat_map { + unsigned id; + struct userdat *user; +}; + int userdat_cmp(const void *a, const void *b) { - const struct userdat *ua = a; - const struct userdat *ub = b; + const struct userdat_map *ua = a; + const struct userdat_map *ub = b; - if (ua->age == ub->age) { - if (ua->gender > ub->gender) { return BTREE_CMP_GT; } - else if (ua->gender < ub->gender) { return BTREE_CMP_LT; } - { return BTREE_CMP_EQ; } + if (ua->id == ub->id) return BTREE_CMP_EQ; + else if (ua->id < ub->id) return BTREE_CMP_LT; - } else if (ua->age > ub->age) { - return BTREE_CMP_GT; - } return BTREE_CMP_LT; + return BTREE_CMP_GT; } int main() { - struct userdat *retval; + struct userdat *retuser; + struct userdat_map *retval; struct btree *tree; - struct userdat jd = {"John Doe", 42, gender_male}; + struct userdat a = {"John Doe", 42, gender_male}; + struct userdat b = {"Michael jordan", 80, gender_male}; + struct userdat c = {"Jennifer Lawrence", 25, gender_female}; + struct userdat d = {"Taylor Switfy", 25, gender_female}; + struct userdat e = {"John Johnson", 54, gender_male}; + struct userdat f = {"Eddison", 130, gender_male}; + struct userdat g = {"Nicolas Tesla", 115, gender_male}; + struct userdat h = {"Bjarne Stroustrup", 83, gender_male}; + + struct userdat_map ap = {0, &a}; + struct userdat_map bp = {1, &b}; + struct userdat_map cp = {2, &c}; + struct userdat_map dp = {3, &d}; + struct userdat_map ep = {4, &e}; + struct userdat_map fp = {5, &f}; + struct userdat_map gp = {6, &g}; + struct userdat_map hp = {7, &h}; - tree = btree_new(sizeof(struct userdat), + tree = btree_new(sizeof(struct userdat_map), BTREE_DEGREE_DEFAULT, &userdat_cmp); + btree_insert(tree, &ap); + btree_insert(tree, &bp); + btree_insert(tree, &cp); + btree_insert(tree, &dp); - btree_insert(tree, &jd); + btree_insert(tree, &ep); + btree_insert(tree, &fp); + btree_insert(tree, &gp); + btree_insert(tree, &hp); - retval = btree_search(tree, &jd); + retval = btree_search(tree, &fp); if (retval != NULL) { - printf("Query: %s, age:%d, %c\n", retval->name, retval->age, (retval->gender == gender_male) ? 'M' : 'F' ); + retuser = retval->user; + printf("Query: %s, age:%d, %c\n", + retuser->name, + retuser->age, + (retuser->gender == gender_male) ? 'M' : 'F' ); } else { printf("Query: not found\n"); } |
