Added tests for `xor` subroutine from stdlib.
[vvhitespace] / stdlib_tests / 3006_xor.pvvs
diff --git a/stdlib_tests/3006_xor.pvvs b/stdlib_tests/3006_xor.pvvs
new file mode 100644 (file)
index 0000000..68a72d1
--- /dev/null
@@ -0,0 +1,37 @@
+@ Test 0 xor 0 = 0
+SSSSN           | PUSH 0
+SSSSN           | PUSH 0
+NSTTSTSTTN      | JSR > 101110 (xor)
+NSTTSSTN        | JSR > 1001 (print number from stack)
+
+@ Test 0 xor 1 = 1
+SSSSN           | PUSH 0
+SSSTN           | PUSH +1
+NSTTSTSTTN      | JSR > 101110 (xor)
+NSTTSSTN        | JSR > 1001 (print number from stack)
+
+@ Test 1 xor 1 = 0
+SSSTN           | PUSH +1
+SSSTN           | PUSH +1
+NSTTSTSTTN      | JSR > 101110 (xor)
+NSTTSSTN        | JSR > 1001 (print number from stack)
+
+@ Test 1 xor 1...1 = 1...10
+SSSTN           | PUSH +1
+SSTTN           | PUSH -1
+NSTTSTSTTN      | JSR > 101110 (xor)
+NSTTSSTN        | JSR > 1001 (print number from stack)
+
+@ Test 1010...1010 xor 0101...0101 = 1...1
+@ Note that -6148914691236517206 = 1010...1010 in twos-complement but we 
+@ enter it in sign magnitude format so the bit pattern appears different.
+SSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTTSN | PUSH -6148914691236517206
+SSSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTN  | PUSH +6148914691236517205
+NSTTSTSTTN      | JSR > 101110 (xor)
+NSTTSSTN        | JSR > 1001 (print number from stack)
+
+@ All done.
+NNN             | DIE
+
+#include <logic.pvvs>
+#include <stdio.pvvs>