--- /dev/null
+# we randomize ports to minimize collisions,
+# this needs to be fixed someday (use netstat and check which port is free)
+
+cp -af $srcdir/files ./
+port=$((RANDOM+1500))
+./rxpd -dq -b files -p policy -t $port example
+
+function rxpd_client()
+{
+ nc localhost $port;
+}
+
+TESTING "list manipulation tests" rxpd_client
+
+
+TEST "append to list 1" <<END
+in: APPEND:test
+in: # test list line 1
+in: # test list line 2
+in: #EXIT:
+out: #OK:
+END
+
+TEST "append to list 1, check" <<END
+in: DUMP:test
+out: # test list line 1
+out: # test list line 2
+END
+
+
+TEST "append to list 2" <<END
+in: APPEND:test
+in: # test list line 3
+in: # test list line 4
+in: #EXIT:
+out: #OK:
+END
+
+TEST "append to list 2, check" <<END
+in: DUMP:test
+out: # test list line 1
+out: # test list line 2
+out: # test list line 3
+out: # test list line 4
+END
+
+
+TEST "prepend to list 1" <<END
+in: PREPEND:test
+in: # test list line -2
+in: # test list line -1
+in: #EXIT:
+out: #OK:
+END
+
+TEST "prepend to list 1, check" <<END
+in: DUMP:test
+out: # test list line -2
+out: # test list line -1
+out: # test list line 1
+out: # test list line 2
+out: # test list line 3
+out: # test list line 4
+END
+
+
+TEST "prepend to list 2" <<END
+in: PREPEND:test
+in: # test list line -4
+in: # test list line -3
+in: #EXIT:
+out: #OK:
+END
+
+TEST "prepend to list 2, check" <<END
+in: DUMP:test
+out: # test list line -4
+out: # test list line -3
+out: # test list line -2
+out: # test list line -1
+out: # test list line 1
+out: # test list line 2
+out: # test list line 3
+out: # test list line 4
+END
+
+
+TEST "remove lines" <<END
+in: REMOVE:test
+in: # test list line -2
+in: # test list line 2
+in: #EXIT:
+out: #OK:
+out: #OK:
+END
+
+TEST "remove lines, check" <<END
+in: DUMP:test
+out: # test list line -4
+out: # test list line -3
+out: # test list line -1
+out: # test list line 1
+out: # test list line 3
+out: # test list line 4
+END
+
+
+TEST "remove nonexisting line" <<END
+in: REMOVE:test
+in: # test list line 2
+in: #EXIT:
+out: #ERROR: line not found
+END
+
+TEST "replace nonexisting line" <<END
+in: REPLACE:test
+in: # test list line 2
+in: # test list line new
+in: #EXIT:
+out: #ERROR: no rule matching '# test list line 2'
+END
+
+
+TEST "replace lines" <<END
+in: REPLACE:test
+in: # test list line -3
+in: # test list line -3
+in: # test list line -2
+in: #EXIT:
+out: #OK:
+END
+
+TEST "replace lines, check" <<END
+in: DUMP:test
+out: # test list line -4
+out: # test list line -3
+out: # test list line -2
+out: # test list line -1
+out: # test list line 1
+out: # test list line 3
+out: # test list line 4
+END
+
+
+TEST "save file" <<END
+in: SAVE:test
+out: #OK:
+END
+
+TEST "delete list" <<END
+in: DELETE:test
+out: #OK:
+END
+
+TEST "delete list, check" <<END
+in: DUMP:test
+out: #OK:
+END
+
+TEST "load file" <<END
+in: LOAD:test
+out: #OK:
+END
+
+TEST "load file, check" <<END
+in: DUMP:test
+out: # test list line -4
+out: # test list line -3
+out: # test list line -2
+out: # test list line -1
+out: # test list line 1
+out: # test list line 3
+out: # test list line 4
+END
+
+
+TEST "daemon shutdown" <<END
+in: SHUTDOWN:
+out: #OK:
+END