libft
Loading...
Searching...
No Matches
test_vec.c
Go to the documentation of this file.
1#include "unity.h"
2#include "vec.h"
3
4void test_vec_new(void)
5{
6 t_vec actual;
7
8 TEST_ASSERT_EQUAL_INT_MESSAGE(-1, vec_new(&actual, 0, 0), "#1");
9 TEST_ASSERT_EQUAL_INT_MESSAGE(-1, vec_new(&actual, 0, 1), "#2");
10 TEST_ASSERT_EQUAL_INT_MESSAGE(-1, vec_new(&actual, 1, 0), "#3");
11 TEST_ASSERT_EQUAL_INT_MESSAGE(1, vec_new(&actual, 10, 1), "#4");
12 TEST_ASSERT_TRUE_MESSAGE(actual.memory != NULL, "#5");
13 TEST_ASSERT_TRUE_MESSAGE(actual.len == 0, "len");
14 TEST_ASSERT_TRUE_MESSAGE(actual.alloc_size == 10, "alloc_size");
15 vec_free(&actual);
16}
17
18void test_vec_free(void)
19{
20 t_vec actual;
21
22 TEST_ASSERT_EQUAL_INT(1, vec_new(&actual, 10, 1));
23 vec_free(&actual);
24 TEST_ASSERT_TRUE_MESSAGE(actual.len == 0, "len");
25 TEST_ASSERT_TRUE_MESSAGE(actual.alloc_size == 0, "alloc_size");
26 TEST_ASSERT_TRUE_MESSAGE(actual.elem_size == 0, "elem_size");
27 TEST_ASSERT_TRUE_MESSAGE(actual.memory == NULL, "memory");
28}
29
30void test_vec_from(void)
31{
32 t_vec actual;
33 int expected[] = {1, 2, 3, 4, 5};
34
35 vec_from(&actual, expected, 5, sizeof(int));
36 TEST_ASSERT_EQUAL_MEMORY(expected, actual.memory, sizeof(expected));
37 TEST_ASSERT_TRUE_MESSAGE(actual.len == 5, "len");
38 TEST_ASSERT_TRUE_MESSAGE(actual.elem_size == sizeof(int), "elem_size");
39 TEST_ASSERT_TRUE_MESSAGE(actual.alloc_size == sizeof(int) * 5, "alloc_size");
40 vec_free(&actual);
41}
42
44{
45 t_vec actual;
46 int expected[] = {1, 2, 3, 4, 5};
47
48 TEST_ASSERT_TRUE_MESSAGE(vec_from(&actual, expected, 5, sizeof(int)) > 0, "vec_from fail");
49 TEST_ASSERT_TRUE_MESSAGE(vec_resize(&actual, 100), "vec_resize fail");
50 TEST_ASSERT_EQUAL_MEMORY(expected, actual.memory, sizeof(expected));
51 TEST_ASSERT_TRUE_MESSAGE(actual.len == 5, "len");
52 TEST_ASSERT_TRUE_MESSAGE(actual.elem_size == sizeof(int), "elem_size");
53 TEST_ASSERT_TRUE_MESSAGE(actual.alloc_size == sizeof(int) * 100, "alloc_size");
54 vec_free(&actual);
55}
56
58{
59 t_vec actual;
60 t_vec t1;
61 int base1[] = {1, 2, 3};
62 int base2[] = {4, 5, 6};
63 int expected[] = {1, 2, 3, 4, 5, 6};
64
65 TEST_ASSERT_TRUE_MESSAGE(vec_from(&actual, base1, 3, sizeof(int)) > 0, "vec_from fail");
66 TEST_ASSERT_TRUE_MESSAGE(vec_from(&t1, base2, 3, sizeof(int)) > 0, "vec_from fail");
67 TEST_ASSERT_TRUE_MESSAGE(vec_append(&actual, &t1) > 0, "vec_append fail");
68 TEST_ASSERT_EQUAL_MEMORY(expected, actual.memory, sizeof(expected));
69 TEST_ASSERT_TRUE_MESSAGE(actual.len == 6, "len");
70 TEST_ASSERT_TRUE_MESSAGE(actual.elem_size == sizeof(int), "elem_size");
71 TEST_ASSERT_TRUE_MESSAGE(actual.alloc_size == 24, "alloc_size");
72 vec_free(&actual);
73 vec_free(&t1);
74}
75
76void test_vec_push(void)
77{
78 t_vec t1;
79 int base[] = {1, 2, 3, 4, 5};
80 int expect[] = {2, 4, 1};
81
82 TEST_ASSERT_TRUE_MESSAGE(vec_new(&t1, 1, sizeof(int)) > 0, "vec_from fail");
83 vec_push(&t1, &base[1]);
84 TEST_ASSERT_TRUE_MESSAGE(t1.len == 1, "len #1");
85 TEST_ASSERT_TRUE_MESSAGE(t1.elem_size == sizeof(int), "elem_size #1");
86 TEST_ASSERT_TRUE_MESSAGE(t1.alloc_size == sizeof(int) * 1, "alloc_size #1");
87 vec_push(&t1, &base[3]);
88 TEST_ASSERT_TRUE_MESSAGE(t1.len == 2, "len #2");
89 TEST_ASSERT_TRUE_MESSAGE(t1.elem_size == sizeof(int), "elem_size #2");
90 TEST_ASSERT_TRUE_MESSAGE(t1.alloc_size == sizeof(int) * 2, "alloc_size #2");
91 vec_push(&t1, &base[0]);
92 TEST_ASSERT_TRUE_MESSAGE(t1.len == 3, "len #3");
93 TEST_ASSERT_TRUE_MESSAGE(t1.elem_size == sizeof(int), "elem_size #3");
94 TEST_ASSERT_TRUE_MESSAGE(t1.alloc_size == 16, "alloc_size #3");
95 TEST_ASSERT_EQUAL_MEMORY(expect, t1.memory, sizeof(expect));
96 vec_free(&t1);
97}
98
99void test_vec_copy(void)
100{
101 t_vec t1;
102 t_vec t2;
103 int base[] = {1, 2, 3, 4, 5};
104 TEST_ASSERT_TRUE_MESSAGE(vec_from(&t1, base, 5, sizeof(int)) > 0, "vec_from fail");
105 TEST_ASSERT_TRUE_MESSAGE(vec_new(&t2, 5, sizeof(int)) > 0, "vec_new fail");
106 TEST_ASSERT_TRUE_MESSAGE(vec_copy(&t2, &t1) > 0, "vec_copy fail");
107 TEST_ASSERT_EQUAL_MEMORY(base, t2.memory, sizeof(base));
108 vec_free(&t1);
109 vec_free(&t2);
110}
111
113{
114 t_vec t1;
115 t_vec t2;
116 int base[] = {1, 2, 3, 4, 5};
117 int base2[] = {1, 2, 3};
118 TEST_ASSERT_TRUE_MESSAGE(vec_from(&t1, base, 5, sizeof(int)) > 0, "vec_from fail");
119 TEST_ASSERT_TRUE_MESSAGE(vec_new(&t2, 3, sizeof(int)) > 0, "vec_new fail");
120 TEST_ASSERT_TRUE_MESSAGE(vec_copy(&t2, &t1) > 0, "vec_copy fail");
121 TEST_ASSERT_EQUAL_MEMORY(base2, t2.memory, sizeof(base2));
122 TEST_ASSERT_TRUE_MESSAGE(t2.len == 3, "len");
123 TEST_ASSERT_TRUE_MESSAGE(t2.elem_size == sizeof(int), "elem_size");
124 TEST_ASSERT_TRUE_MESSAGE(t2.alloc_size == 3 * sizeof(int), "alloc_size");
125 vec_free(&t1);
126 vec_free(&t2);
127}
128
130{
131 t_vec actual;
132 t_vec t1;
133 int base1[] = {1, 2, 3};
134 int base2[] = {4, 5, 6};
135 int expected[] = {4, 5, 6, 1, 2, 3};
136
137 TEST_ASSERT_TRUE_MESSAGE(vec_from(&actual, base1, 3, sizeof(int)) > 0, "vec_from fail");
138 TEST_ASSERT_TRUE_MESSAGE(vec_from(&t1, base2, 3, sizeof(int)) > 0, "vec_from fail");
139 TEST_ASSERT_TRUE_MESSAGE(vec_append(&actual, &t1) > 0, "vec_append fail");
140 TEST_ASSERT_EQUAL_MEMORY(expected, actual.memory, sizeof(expected));
141 TEST_ASSERT_TRUE_MESSAGE(actual.len == 6, "len");
142 TEST_ASSERT_TRUE_MESSAGE(actual.elem_size == sizeof(int), "elem_size");
143 TEST_ASSERT_TRUE_MESSAGE(actual.alloc_size == 24, "alloc_size");
144 vec_free(&actual);
145 vec_free(&t1);
146}
148{
149 t_vec t1;
150 int base[] = {1, 2, 3, 4, 5};
151 int expected[] = {1, 3, 4};
152
153 TEST_ASSERT_TRUE(vec_from(&t1, base, 5, sizeof(int)) > 0);
154 vec_remove(&t1, 1);
155 vec_remove(&t1, 3);
156 TEST_ASSERT_EQUAL_INT_ARRAY(expected, t1.memory, 3);
158 vec_free(&t1);
159}
160
161int test_vec(void)
162{
163 UNITY_BEGIN();
173 // RUN_TEST(test_vec_prepend);
174 return UNITY_END();
175}
Definition vec.h:20
size_t alloc_size
Definition vec.h:23
size_t len
Definition vec.h:24
unsigned char * memory
Definition vec.h:21
size_t elem_size
Definition vec.h:22
void test_vec_append(void)
Definition test_vec.c:57
void test_vec_resize(void)
Definition test_vec.c:43
void test_vec_prepend(void)
Definition test_vec.c:129
void test_vec_from(void)
Definition test_vec.c:30
int test_vec(void)
Definition test_vec.c:161
void test_vec_remove_0(void)
Definition test_vec.c:147
void test_vec_push(void)
Definition test_vec.c:76
void test_vec_copy(void)
Definition test_vec.c:99
void test_vec_copy_2(void)
Definition test_vec.c:112
void test_vec_free(void)
Definition test_vec.c:18
void test_vec_new(void)
Definition test_vec.c:4
#define TEST_ASSERT_EQUAL_INT32(expected, actual)
Definition unity.h:138
#define TEST_ASSERT_EQUAL_INT_MESSAGE(expected, actual, message)
Definition unity.h:415
#define TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)
Definition unity.h:292
#define TEST_ASSERT_TRUE(condition)
Definition unity.h:126
#define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements)
Definition unity.h:295
#define TEST_ASSERT_TRUE_MESSAGE(condition, message)
Definition unity.h:406
#define TEST_ASSERT_EQUAL_INT(expected, actual)
Definition unity.h:135
#define RUN_TEST(func)
#define UNITY_END()
#define UNITY_BEGIN()
int vec_push(t_vec *dst, void *src)
Push element to the end of the vector.
Definition vec_push.c:17
int vec_new(t_vec *dst, size_t init_len, size_t elem_size)
Creates a new vector.
Definition vec_new.c:16
int vec_remove(t_vec *src, size_t index)
Removes item at index.
Definition vec_remove.c:15
void vec_free(t_vec *src)
Frees vectors memory.
Definition vec_free.c:15
int vec_from(t_vec *dst, void *src, size_t len, size_t elem_size)
Creates a new vector from src.
Definition vec_from.c:15
int vec_resize(t_vec *src, size_t target_len)
Resizes vector.
Definition vec_resize.c:17
int vec_copy(t_vec *dst, t_vec *src)
Definition vec_copy.c:22
int vec_append(t_vec *dst, t_vec *src)
Appends vector to a vector.
Definition vec_append.c:17