This repository has been archived on 2021-10-31. You can view files and clone it, but cannot push or open issues or pull requests.
sys_prog/midterm/lists/tests/test2.c

152 lines
2.7 KiB
C

#include <assert.h>
#include "basic_testing.h"
#include "../lists.h"
int main() {
struct list L1[100];
struct list L2[100];
struct list * l;
int i;
/* L1 = [0, 1, 2, 3, 4, 5] */
l = L1;
for(i = 0; i < 5; ++i) {
l->value = i;
l->next = l + 1;
l = l->next;
}
l->value = i;
l->next = 0;
l = merge_sorted(L1, 0);
/* l should be: 0, 1, 2, 3, 4, 5 */
for (int j = 0; j <= 5; ++j) {
assert(l);
assert_int_equal(l->value, j);
l = l->next;
}
assert(!l);
/* L2 = [0, 1, 2, 3, 4, 5, 6] */
l = L2;
for(i = 0; i < 6; ++i) {
l->value = i;
l->next = l + 1;
l = l->next;
}
l->value = i;
l->next = 0;
l = merge_sorted(0, L2);
/* l should be: 0, 1, 2, 3, 4, 5, 6 */
for (int j = 0; j <= 6; ++j) {
assert(l);
assert_int_equal(l->value, j);
l = l->next;
}
assert(!l);
/* L1 = [0, 1, 2, 3, 4] */
l = L1;
for(i = 0; i < 4; ++i) {
l->value = i;
l->next = l + 1;
l = l->next;
}
l->value = i;
l->next = 0;
/* L2 = [1, 3, 5] */
l = L2;
for(i = 1; i < 5; i += 2) {
l->value = i;
l->next = l + 1;
l = l->next;
}
l->value = i;
l->next = 0;
l = merge_sorted(L1, L2);
/* l should be: 0, 1, 1, 2, 3, 3, 4, 5 */
assert(l);
assert_int_equal(l->value, 0);
l = l->next;
assert(l);
assert_int_equal(l->value, 1);
l = l->next;
assert(l);
assert_int_equal(l->value, 1);
l = l->next;
assert(l);
assert_int_equal(l->value, 2);
l = l->next;
assert(l);
assert_int_equal(l->value, 3);
l = l->next;
assert(l);
assert_int_equal(l->value, 3);
l = l->next;
assert(l);
assert_int_equal(l->value, 4);
l = l->next;
assert(l);
assert_int_equal(l->value, 5);
l = l->next;
assert(!l);
/* L1 = [0, 1, 2, 3, 4] */
l = L1;
for(i = 0; i < 4; ++i) {
l->value = i;
l->next = l + 1;
l = l->next;
}
l->value = i;
l->next = 0;
/* L2 = [1, 3, 5] */
l = L2;
for(i = 1; i < 5; i += 2) {
l->value = i;
l->next = l + 1;
l = l->next;
}
l->value = i;
l->next = 0;
l = merge_sorted(L2, L1);
/* l should be: 0, 1, 1, 2, 3, 3, 4, 5 */
assert(l);
assert_int_equal(l->value, 0);
l = l->next;
assert(l);
assert_int_equal(l->value, 1);
l = l->next;
assert(l);
assert_int_equal(l->value, 1);
l = l->next;
assert(l);
assert_int_equal(l->value, 2);
l = l->next;
assert(l);
assert_int_equal(l->value, 3);
l = l->next;
assert(l);
assert_int_equal(l->value, 3);
l = l->next;
assert(l);
assert_int_equal(l->value, 4);
l = l->next;
assert(l);
assert_int_equal(l->value, 5);
l = l->next;
assert(!l);
return 0;
}