Skip to content

Commit 18bfefa

Browse files
committed
Add cache-test
1 parent a5a0f49 commit 18bfefa

17 files changed

+3492
-0
lines changed

tests/cache-test/Makefile

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
include ../../mk/common.mk
2+
3+
.PHONY: all check clean
4+
5+
BUILDDIR := build
6+
SOURCE := ../../src
7+
TARGET := testCache
8+
TESTDIR := testCases
9+
10+
CFLAGS = -std=gnu99 -O2 -Wall -Wextra
11+
CFLAGS += -Wno-unused-label -I$(SOURCE)
12+
13+
OBJS := cache.o \
14+
testCache.o
15+
16+
OBJS := $(addprefix $(BUILDDIR)/, $(OBJS))
17+
deps := $(OBJS:%.o=%.o.d)
18+
19+
CHECK_ELF_FILES := \
20+
TEST_CACHE_NEW \
21+
TEST_CACHE_PUT \
22+
TEST_CACHE_GET \
23+
TEST_CACHE_REPLACE \
24+
TEST_CACHE_LRU_REPLACE \
25+
TEST_CACHE_LFU_REPLACE \
26+
TEST_CACHE_LFU_GHOST_REPLACE \
27+
28+
all:$(TARGET)
29+
30+
$(TARGET): $(OBJS)
31+
$(Q) mkdir -p $(BUILDDIR)
32+
$(CC) $^ -o $(BUILDDIR)/$(TARGET)
33+
34+
$(BUILDDIR)/cache.o: $(SOURCE)/cache.c
35+
$(Q)$(CC) -o $@ $(CFLAGS) -c -MMD -MF $@.d $<
36+
37+
$(BUILDDIR)/testCache.o: src/testCache.c
38+
$(Q)$(CC) -o $@ $(CFLAGS) -c -MMD -MF $@.d $<
39+
40+
clean:
41+
$(Q)$(RM) $(BIN) $(OBJS) $(deps) $(BUILDDIR)/$(TARGET)
42+
43+
check: $(TARGET)
44+
$(Q)$(foreach e,$(CHECK_ELF_FILES),\
45+
$(PRINTF) "Running $(e) ... "; \
46+
if [ "$(strip $(shell cat $(TESTDIR)/$(e).ans))" = "$(strip $(shell ./$(BUILDDIR)/$(TARGET) $(TESTDIR)/$(e).txt))" ]; then \
47+
$(call notice, [OK]); \
48+
else \
49+
$(PRINTF) "Failed.\n"; \
50+
exit 1; \
51+
fi; \
52+
)

tests/cache-test/build/testCache

17.3 KB
Binary file not shown.

tests/cache-test/src/testCache.c

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#include <assert.h>
2+
#include <stdio.h>
3+
#include <stdlib.h>
4+
#include <string.h>
5+
6+
#include "cache.h"
7+
#define TESTSIZE 1
8+
9+
void printValue(int *val)
10+
{
11+
if (val)
12+
printf("%d\n", *val);
13+
else
14+
printf("NULL\n");
15+
}
16+
17+
void split(char **arr, char *str, const char *del)
18+
{
19+
char *s = strtok(str, del);
20+
21+
while (s != NULL) {
22+
*arr++ = s;
23+
s = strtok(NULL, del);
24+
}
25+
}
26+
27+
int main(__attribute__((unused)) int argc, char *argv[])
28+
{
29+
FILE *fp = fopen(argv[1], "r");
30+
char *line = NULL, *ptr = NULL;
31+
size_t len = 0;
32+
struct cache *cache = NULL;
33+
int key, *ans, *val;
34+
while (getline(&line, &len, fp) != -1) {
35+
char *arr[3];
36+
split(arr, line, " ");
37+
if (!strcmp(arr[0], "GET")) {
38+
key = (int) strtol(arr[1], &ptr, 10);
39+
ans = cache_get(cache, key);
40+
printValue(ans);
41+
} else if (!strcmp(arr[0], "PUT")) {
42+
key = (int) strtol(arr[1], &ptr, 10);
43+
val = malloc(sizeof(int));
44+
*val = (int) strtol(arr[2], &ptr, 10);
45+
val = cache_put(cache, key, val);
46+
if (val) {
47+
printf("REPLACE %d\n", *val);
48+
free(val);
49+
}
50+
} else if (!strcmp(arr[0], "NEW\n")) {
51+
cache = cache_create();
52+
if (cache) {
53+
printf("NEW CACHE\n");
54+
} else {
55+
printf("FAIL\n");
56+
}
57+
} else if (!strcmp(arr[0], "FREE")) {
58+
cache_free(cache, free);
59+
printf("FREE CACHE\n");
60+
}
61+
}
62+
fclose(fp);
63+
return 0;
64+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
NEW CACHE
2+
NULL
3+
NULL
4+
3
5+
FREE CACHE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
NEW
2+
GET 1
3+
GET 2
4+
PUT 3 3
5+
GET 3
6+
FREE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
NEW CACHE
2+
1
3+
2
4+
3
5+
4
6+
5
7+
6
8+
7
9+
8
10+
9
11+
10
12+
11
13+
12
14+
13
15+
14
16+
15
17+
16
18+
17
19+
18
20+
19
21+
20
22+
21
23+
22
24+
23
25+
24
26+
25
27+
26
28+
27
29+
28
30+
29
31+
30
32+
31
33+
32
34+
33
35+
34
36+
35
37+
36
38+
37
39+
38
40+
39
41+
40
42+
41
43+
42
44+
43
45+
44
46+
45
47+
46
48+
47
49+
48
50+
49
51+
50
52+
51
53+
52
54+
53
55+
54
56+
55
57+
56
58+
57
59+
58
60+
59
61+
60
62+
61
63+
62
64+
63
65+
64
66+
65
67+
66
68+
67
69+
68
70+
69
71+
70
72+
71
73+
72
74+
73
75+
74
76+
75
77+
76
78+
77
79+
78
80+
79
81+
80
82+
81
83+
82
84+
83
85+
84
86+
85
87+
86
88+
87
89+
88
90+
89
91+
90
92+
91
93+
92
94+
93
95+
94
96+
95
97+
96
98+
97
99+
98
100+
99
101+
100
102+
101
103+
102
104+
103
105+
104
106+
105
107+
106
108+
107
109+
108
110+
109
111+
110
112+
111
113+
112
114+
113
115+
114
116+
115
117+
116
118+
117
119+
118
120+
119
121+
120
122+
121
123+
122
124+
123
125+
124
126+
125
127+
126
128+
127
129+
128
130+
129
131+
130
132+
131
133+
132
134+
133
135+
134
136+
135
137+
136
138+
137
139+
138
140+
139
141+
140
142+
141
143+
142
144+
143
145+
144
146+
145
147+
146
148+
147
149+
148
150+
149
151+
150
152+
151
153+
152
154+
153
155+
154
156+
155
157+
156
158+
157
159+
158
160+
159
161+
160
162+
161
163+
162
164+
163
165+
164
166+
165
167+
166
168+
167
169+
168
170+
169
171+
170
172+
171
173+
172
174+
173
175+
174
176+
175
177+
176
178+
177
179+
178
180+
179
181+
180
182+
181
183+
182
184+
183
185+
184
186+
185
187+
186
188+
187
189+
188
190+
189
191+
190
192+
191
193+
192
194+
193
195+
194
196+
195
197+
196
198+
197
199+
198
200+
199
201+
200
202+
201
203+
202
204+
203
205+
204
206+
205
207+
206
208+
207
209+
208
210+
209
211+
210
212+
211
213+
212
214+
213
215+
214
216+
215
217+
216
218+
217
219+
218
220+
219
221+
220
222+
221
223+
222
224+
223
225+
224
226+
225
227+
226
228+
227
229+
228
230+
229
231+
230
232+
231
233+
232
234+
233
235+
234
236+
235
237+
236
238+
237
239+
238
240+
239
241+
240
242+
241
243+
242
244+
243
245+
244
246+
245
247+
246
248+
247
249+
248
250+
249
251+
250
252+
251
253+
252
254+
253
255+
254
256+
255
257+
256
258+
REPLACE 257
259+
FREE CACHE

0 commit comments

Comments
 (0)