summaryrefslogtreecommitdiffstats
path: root/shell/process_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/process_test.c')
-rw-r--r--shell/process_test.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/shell/process_test.c b/shell/process_test.c
new file mode 100644
index 0000000..c14aa59
--- /dev/null
+++ b/shell/process_test.c
@@ -0,0 +1,63 @@
+#include <assert.h>
+#include <string.h>
+
+#include "array.h"
+#include "process.h"
+
+void test_simple_case() {
+ Process *processes = NULL;
+ parse_line("cat my_txt ", &processes);
+ assert(arrayLen(processes) == 1);
+ assert(arrayLen(processes[0].argv) == 3);
+ assert(strcmp(processes[0].argv[0], "cat") == 0);
+ assert(strcmp(processes[0].argv[1], "my_txt") == 0);
+ free_processes(&processes);
+}
+
+void test_detached() {
+ Process *processes = NULL;
+ parse_line("cat my_txt &", &processes);
+ assert(arrayLen(processes) == 1);
+ assert(arrayLen(processes[0].argv) == 3);
+ assert(strcmp(processes[0].argv[0], "cat") == 0);
+ assert(strcmp(processes[0].argv[1], "my_txt") == 0);
+ assert(processes[0].blocking == false);
+ free_processes(&processes);
+}
+
+
+void test_pipe() {
+ Process *processes = NULL;
+ parse_line("echo my_txt | grep txt", &processes);
+ assert(arrayLen(processes) == 2);
+ assert(arrayLen(processes[0].argv) == 3);
+ assert(strcmp(processes[0].argv[0], "echo") == 0);
+ assert(strcmp(processes[0].argv[1], "my_txt") == 0);
+ assert(processes[0].out_fd != 0);
+ assert(arrayLen(processes[1].argv) == 3);
+ assert(strcmp(processes[1].argv[0], "grep") == 0);
+ assert(strcmp(processes[1].argv[1], "txt") == 0);
+ assert(processes[1].in_fd != 0);
+ free_processes(&processes);
+}
+
+void test_ls(){
+ Process *processes = NULL;
+ parse_line("ls", &processes);
+ assert(arrayLen(processes) == 1);
+ Process p = processes[0];
+ assert(arrayLen(p.argv)==2);
+ assert(p.argc == 1);
+ assert(strcmp(p.argv[0], "ls") == 0);
+ assert(p.argc[p.argv] == NULL);
+ free_processes(&processes);
+}
+
+
+int main() {
+ test_ls();
+ test_simple_case();
+ test_detached();
+ test_pipe();
+ return 0;
+}