summaryrefslogtreecommitdiffstats
path: root/02_exercise/process_test.c
diff options
context:
space:
mode:
authorNiklas Halle <niklas@niklashalle.net>2020-05-22 09:53:42 +0200
committerNiklas Halle <niklas@niklashalle.net>2020-05-22 09:53:42 +0200
commit3b7e61eab8ce5d230bc1b172942c1ab9459ed161 (patch)
tree73da9a772782d7d1504770c8cc7582c03cf41310 /02_exercise/process_test.c
parent68f5ff29c0aae1a176c25996aab0144badd0f092 (diff)
parent4f80f043aacc568fac0e3681b62aa1971a97291a (diff)
downloadbetriebssysteme-3b7e61eab8ce5d230bc1b172942c1ab9459ed161.tar.gz
betriebssysteme-3b7e61eab8ce5d230bc1b172942c1ab9459ed161.zip
Merge branch 'process_and_pipes' into dev/niklas
Diffstat (limited to '02_exercise/process_test.c')
-rw-r--r--02_exercise/process_test.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/02_exercise/process_test.c b/02_exercise/process_test.c
new file mode 100644
index 0000000..a7b0b9c
--- /dev/null
+++ b/02_exercise/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;
+}*/