aboutsummaryrefslogtreecommitdiff
path: root/vector_test.c
blob: c1f1ae4f50cde6a9aad366718edf5f51c0efc1f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <criterion/criterion.h>
#include "vector.h"

vector_t vec;
int n = 16;
void suitesetup(void){
   vec = vector_init(n); 
}

void suiteteardown(void){
    destroy_vec(&vec);
}

TestSuite(vectortests, .init=suitesetup, .fini=suiteteardown);

Test(vectortests, capacity_test){
    cr_expect(capacity(vec) == n, "Vector should have a capacity of %d", n);
    cr_expect(capacity(vec) != n+1, "vector should have a capacity of %d", n);
}

Test(vectortests, is_empty_test){
    cr_assert(is_empty(vec)==1, "is_empty should return 1");
    push(&vec, 1);
    cr_assert(is_empty(vec)==0, "is_empty should return 0");
}

Test(vectortests, is_full_test){
   cr_assert(is_full(vec)==0, "is_full should return 0");
   for (int i = 0; i < n; i++){
        push(&vec, i);
   }
   cr_assert(is_full(vec)==1, "is_full should return 1");
}

Test(vectortests, size_test){
    cr_assert(size(vec)==0, "Size of vector should be 0 at first");
   for (int i = 0; i < 10; i++){
        push(&vec, i);
   }
    cr_assert(size(vec)==10, "Size of vector should be 10");
}

Test(vectortests, at_test){
   for (int i = 0; i < 10; i++){
        push(&vec, i+3);
   }
    cr_assert(at(vec, 6)==9, "at(vec, 6) should return 9");
}

Test(vectortests, at_invalid_index_test, .exit_code = -1, .disabled=true){
    at(vec, -5);
}

Test(vectortests, push_test){
    push(&vec, 3);
    push(&vec, 6);
    push(&vec, 9);

    cr_assert(at(vec, 1) == 6);
    cr_assert(size(vec) == 3);
}

Test(vectortests, insert_test){
    push(&vec, 3);
    push(&vec, 6);
    push(&vec, 9);
    insert(&vec, 1, 55);

    cr_assert(at(vec, 1) == 55);
    cr_assert(at(vec, 2) == 6);
    cr_assert(at(vec, 3) == 9);
    cr_assert(size(vec) == 4);
}

Test(vectortests, delete_check){
    push(&vec, 3);
    push(&vec, 6);
    push(&vec, 9);
    insert(&vec, 1, 55);
    delete_vec(&vec, 1);

    cr_assert(at(vec, 1) == 6);
    cr_assert(size(vec) == 3);
}

Test(vectortests, remove_test){
    for (int i = 0; i < vec.max_size; i++){
        if (i%2 == 0){
            push(&vec, 5);
            continue;
        }
        push(&vec, i);
    }

    remove_val(&vec, 5);

    cr_assert(size(vec) == 7);
    cr_assert(at(vec, 2) == 7);
}