add additional tests folder
This commit is contained in:
parent
826d319dbd
commit
e70a883dd2
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -16,3 +16,6 @@ picoc.files
|
||||||
picoc.includes
|
picoc.includes
|
||||||
tests/fred.txt
|
tests/fred.txt
|
||||||
|
|
||||||
|
analysis.txt
|
||||||
|
gmon.out
|
||||||
|
tests/gmon.out
|
||||||
|
|
1
Makefile
1
Makefile
|
@ -22,6 +22,7 @@ $(TARGET): $(OBJS)
|
||||||
test: all
|
test: all
|
||||||
(cd tests; make test)
|
(cd tests; make test)
|
||||||
(cd tests; make csmith)
|
(cd tests; make csmith)
|
||||||
|
(cd tests; make jpoirier)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(TARGET) $(OBJS) *~
|
rm -f $(TARGET) $(OBJS) *~
|
||||||
|
|
|
@ -65,6 +65,7 @@ TESTS= 00_assignment.test \
|
||||||
|
|
||||||
|
|
||||||
include csmith/Makefile
|
include csmith/Makefile
|
||||||
|
include jpoirier/Makefile
|
||||||
|
|
||||||
%.test: %.expect %.c
|
%.test: %.expect %.c
|
||||||
@echo Test: $*...
|
@echo Test: $*...
|
||||||
|
@ -91,3 +92,6 @@ test: $(TESTS)
|
||||||
csmith: $(CSMITH_TESTS)
|
csmith: $(CSMITH_TESTS)
|
||||||
@echo "CSmith test passed"
|
@echo "CSmith test passed"
|
||||||
|
|
||||||
|
jpoirier: $(JPOIRIER_TESTS)
|
||||||
|
@echo "JPoirier test passed"
|
||||||
|
|
||||||
|
|
125
tests/jpoirier/00_linked_list.c
Normal file
125
tests/jpoirier/00_linked_list.c
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
static void enqueue_tail(int d);
|
||||||
|
static void enqueue_head(int d);
|
||||||
|
static int dequeue_tail(void);
|
||||||
|
static int dequeue_head(void);
|
||||||
|
|
||||||
|
struct Node {
|
||||||
|
struct Node *next;
|
||||||
|
struct Node *prev;
|
||||||
|
int data;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Node *head = NULL;
|
||||||
|
struct Node *tail = NULL;
|
||||||
|
|
||||||
|
void enqueue_tail(int d) {
|
||||||
|
struct Node *new_node = malloc(sizeof(new_node));
|
||||||
|
|
||||||
|
new_node->data = d;
|
||||||
|
new_node->next = tail;
|
||||||
|
new_node->prev = NULL;
|
||||||
|
if (tail != NULL)
|
||||||
|
tail->prev = new_node;
|
||||||
|
tail = new_node;
|
||||||
|
if (head == NULL)
|
||||||
|
head = tail;
|
||||||
|
|
||||||
|
// printf("enqueue_tail new node data: %d\n", new_node->data);
|
||||||
|
// printf("enqueue_tail new node: %p\n", (void*)new_node);
|
||||||
|
// printf("enqueue_tail next node: %p\n", (void*)new_node->next);
|
||||||
|
// printf("enqueue_tail prev node: %p\n", (void*)new_node->prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
void enqueue_head(int d) {
|
||||||
|
struct Node *new_node = malloc(sizeof(new_node));
|
||||||
|
|
||||||
|
new_node->data = d;
|
||||||
|
new_node->next = NULL;
|
||||||
|
new_node->prev = head;
|
||||||
|
if (head != NULL)
|
||||||
|
head->next = new_node;
|
||||||
|
head = new_node;
|
||||||
|
if (tail == NULL)
|
||||||
|
tail = head;
|
||||||
|
|
||||||
|
// printf("enqueue_head new node data: %d\n", new_node->data);
|
||||||
|
// printf("enqueue_head new node: %p\n", (void*)new_node);
|
||||||
|
// printf("enqueue_head next node: %p\n", (void*)new_node->next);
|
||||||
|
// printf("enqueue_head prev node: %p\n", (void*)new_node->prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
int dequeue_tail(void) {
|
||||||
|
if (tail == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// printf("dequeue_tail tail: %p\n", (void*)tail);
|
||||||
|
// printf("dequeue_tail tail next: %p\n", (void*)tail->next);
|
||||||
|
// printf("dequeue_tail tail prev: %p\n", (void*)tail->prev);
|
||||||
|
|
||||||
|
struct Node *t = tail;
|
||||||
|
int d = tail->data;
|
||||||
|
if (tail->next != NULL)
|
||||||
|
tail->next->prev = NULL;
|
||||||
|
tail = tail->next;
|
||||||
|
free(t);
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dequeue_head(void) {
|
||||||
|
if (head == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
// printf("A. dequeue_head head: %p\n", (void*)head);
|
||||||
|
// printf("A. dequeue_head head next: %p\n", (void*)head->next);
|
||||||
|
// printf("A. dequeue_head head prev: %p\n", (void*)head->prev);
|
||||||
|
|
||||||
|
struct Node *t = head;
|
||||||
|
int d = head->data;
|
||||||
|
if (head->prev != NULL) {
|
||||||
|
head->prev->next = NULL;
|
||||||
|
}
|
||||||
|
head = head->prev;
|
||||||
|
|
||||||
|
// printf("B. dequeue_head head: %p\n", (void*)head);
|
||||||
|
// printf("B. dequeue_head head next: %p\n", (void*)((head == NULL) ? NULL : head->next));
|
||||||
|
// printf("B. dequeue_head head prev: %p\n", (void*)((head == NULL) ? NULL : head->prev));
|
||||||
|
|
||||||
|
free(t);
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 20; i++){
|
||||||
|
printf("enqueue tail: %d\n", i);
|
||||||
|
enqueue_tail(i);
|
||||||
|
}
|
||||||
|
for (i = 0; i < 20; i++) {
|
||||||
|
printf("dequeue tail: %d\n", dequeue_tail());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 20; i++){
|
||||||
|
printf("enqueue head: %d\n", i);
|
||||||
|
enqueue_head(i);
|
||||||
|
}
|
||||||
|
for (i = 0; i < 20; i++) {
|
||||||
|
printf("dequeue head: %d\n", dequeue_head());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i++){
|
||||||
|
printf("enqueue head: %d\n", i);
|
||||||
|
enqueue_head(i);
|
||||||
|
}
|
||||||
|
for (i = 10; i < 20; i++){
|
||||||
|
printf("enqueue tail: %d\n", i);
|
||||||
|
enqueue_head(i);
|
||||||
|
}
|
||||||
|
for (i = 0; i < 20; i++) {
|
||||||
|
printf("dequeue tail: %d\n", dequeue_tail());
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
120
tests/jpoirier/00_linked_list.expect
Normal file
120
tests/jpoirier/00_linked_list.expect
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
enqueue tail: 0
|
||||||
|
enqueue tail: 1
|
||||||
|
enqueue tail: 2
|
||||||
|
enqueue tail: 3
|
||||||
|
enqueue tail: 4
|
||||||
|
enqueue tail: 5
|
||||||
|
enqueue tail: 6
|
||||||
|
enqueue tail: 7
|
||||||
|
enqueue tail: 8
|
||||||
|
enqueue tail: 9
|
||||||
|
enqueue tail: 10
|
||||||
|
enqueue tail: 11
|
||||||
|
enqueue tail: 12
|
||||||
|
enqueue tail: 13
|
||||||
|
enqueue tail: 14
|
||||||
|
enqueue tail: 15
|
||||||
|
enqueue tail: 16
|
||||||
|
enqueue tail: 17
|
||||||
|
enqueue tail: 18
|
||||||
|
enqueue tail: 19
|
||||||
|
dequeue tail: 19
|
||||||
|
dequeue tail: 18
|
||||||
|
dequeue tail: 17
|
||||||
|
dequeue tail: 16
|
||||||
|
dequeue tail: 15
|
||||||
|
dequeue tail: 14
|
||||||
|
dequeue tail: 13
|
||||||
|
dequeue tail: 12
|
||||||
|
dequeue tail: 11
|
||||||
|
dequeue tail: 10
|
||||||
|
dequeue tail: 9
|
||||||
|
dequeue tail: 8
|
||||||
|
dequeue tail: 7
|
||||||
|
dequeue tail: 6
|
||||||
|
dequeue tail: 5
|
||||||
|
dequeue tail: 4
|
||||||
|
dequeue tail: 3
|
||||||
|
dequeue tail: 2
|
||||||
|
dequeue tail: 1
|
||||||
|
dequeue tail: 0
|
||||||
|
enqueue head: 0
|
||||||
|
enqueue head: 1
|
||||||
|
enqueue head: 2
|
||||||
|
enqueue head: 3
|
||||||
|
enqueue head: 4
|
||||||
|
enqueue head: 5
|
||||||
|
enqueue head: 6
|
||||||
|
enqueue head: 7
|
||||||
|
enqueue head: 8
|
||||||
|
enqueue head: 9
|
||||||
|
enqueue head: 10
|
||||||
|
enqueue head: 11
|
||||||
|
enqueue head: 12
|
||||||
|
enqueue head: 13
|
||||||
|
enqueue head: 14
|
||||||
|
enqueue head: 15
|
||||||
|
enqueue head: 16
|
||||||
|
enqueue head: 17
|
||||||
|
enqueue head: 18
|
||||||
|
enqueue head: 19
|
||||||
|
dequeue head: 19
|
||||||
|
dequeue head: 18
|
||||||
|
dequeue head: 17
|
||||||
|
dequeue head: 16
|
||||||
|
dequeue head: 15
|
||||||
|
dequeue head: 14
|
||||||
|
dequeue head: 13
|
||||||
|
dequeue head: 12
|
||||||
|
dequeue head: 11
|
||||||
|
dequeue head: 10
|
||||||
|
dequeue head: 9
|
||||||
|
dequeue head: 8
|
||||||
|
dequeue head: 7
|
||||||
|
dequeue head: 6
|
||||||
|
dequeue head: 5
|
||||||
|
dequeue head: 4
|
||||||
|
dequeue head: 3
|
||||||
|
dequeue head: 2
|
||||||
|
dequeue head: 1
|
||||||
|
dequeue head: 0
|
||||||
|
enqueue head: 0
|
||||||
|
enqueue head: 1
|
||||||
|
enqueue head: 2
|
||||||
|
enqueue head: 3
|
||||||
|
enqueue head: 4
|
||||||
|
enqueue head: 5
|
||||||
|
enqueue head: 6
|
||||||
|
enqueue head: 7
|
||||||
|
enqueue head: 8
|
||||||
|
enqueue head: 9
|
||||||
|
enqueue tail: 10
|
||||||
|
enqueue tail: 11
|
||||||
|
enqueue tail: 12
|
||||||
|
enqueue tail: 13
|
||||||
|
enqueue tail: 14
|
||||||
|
enqueue tail: 15
|
||||||
|
enqueue tail: 16
|
||||||
|
enqueue tail: 17
|
||||||
|
enqueue tail: 18
|
||||||
|
enqueue tail: 19
|
||||||
|
dequeue tail: 0
|
||||||
|
dequeue tail: 1
|
||||||
|
dequeue tail: 2
|
||||||
|
dequeue tail: 3
|
||||||
|
dequeue tail: 4
|
||||||
|
dequeue tail: 5
|
||||||
|
dequeue tail: 6
|
||||||
|
dequeue tail: 7
|
||||||
|
dequeue tail: 8
|
||||||
|
dequeue tail: 9
|
||||||
|
dequeue tail: 10
|
||||||
|
dequeue tail: 11
|
||||||
|
dequeue tail: 12
|
||||||
|
dequeue tail: 13
|
||||||
|
dequeue tail: 14
|
||||||
|
dequeue tail: 15
|
||||||
|
dequeue tail: 16
|
||||||
|
dequeue tail: 17
|
||||||
|
dequeue tail: 18
|
||||||
|
dequeue tail: 19
|
2
tests/jpoirier/Makefile
Normal file
2
tests/jpoirier/Makefile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
JPOIRIER_TESTS= jpoirier/00_linked_list.test \
|
||||||
|
|
Loading…
Reference in a new issue