summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:44:09 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:44:09 (GMT)
commit058a2edd75debbd0297f92572316daa704bd379f (patch)
treead303f091f9a08b209b91eb34a9fcad996a3de69 /src/tests
parente3594aba9e05c6865d396418c028049cda92c2f3 (diff)
parent7a21ae192fe19868539956f3fe28e62b2c7c4429 (diff)
downloadpowder-058a2edd75debbd0297f92572316daa704bd379f.zip
powder-058a2edd75debbd0297f92572316daa704bd379f.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/PowderInteractionMachine.cpp21
-rw-r--r--src/tests/VirtualMachineTest.cpp16
-rw-r--r--src/tests/test.c171
-rw-r--r--src/tests/test.qvmbin0 -> 2340 bytes
4 files changed, 208 insertions, 0 deletions
diff --git a/src/tests/PowderInteractionMachine.cpp b/src/tests/PowderInteractionMachine.cpp
new file mode 100644
index 0000000..c2b37a2
--- /dev/null
+++ b/src/tests/PowderInteractionMachine.cpp
@@ -0,0 +1,21 @@
+#ifdef TEST
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include "pim/Parser.h"
+
+int main(int argc, char * argv[])
+{
+ std::ifstream file("test.p");
+
+ std::stringstream buffer;
+
+ buffer << file.rdbuf();
+ file.close();
+
+ pim::compiler::Parser * parser = new pim::compiler::Parser(buffer);
+
+ parser->Compile();
+}
+#endif \ No newline at end of file
diff --git a/src/tests/VirtualMachineTest.cpp b/src/tests/VirtualMachineTest.cpp
new file mode 100644
index 0000000..ee92999
--- /dev/null
+++ b/src/tests/VirtualMachineTest.cpp
@@ -0,0 +1,16 @@
+#ifdef TEST
+
+#include <iostream>
+#include "virtualmachine/VirtualMachine.h"
+
+int main(int argc, char * argv[])
+{
+ vm::VirtualMachine * vm = new vm::VirtualMachine(2);
+ vm->LoadProgram("test.qvm");
+ while(true)
+ {
+ vm->Call(0/*, 0, 88, 12*/);
+ std::cout << "Return value: " << vm->Pop<vm::uint4_t>() << std::endl;
+ }
+}
+#endif \ No newline at end of file
diff --git a/src/tests/test.c b/src/tests/test.c
new file mode 100644
index 0000000..06b9e95
--- /dev/null
+++ b/src/tests/test.c
@@ -0,0 +1,171 @@
+int g;
+
+int trapp(int a, int b);
+float compl(float* a, unsigned int n);
+void spam();
+
+int main()
+{
+ int l, r;
+ int a, b, m, d, s, as;
+ int b1, b2, b3;
+ float f, dd;
+ int i;
+ int k, j, o;
+ unsigned int ua, ub, um, ud, us, uas;
+ int re;
+ float arr[] = { 1.6f, -3.0f, 1.41f, -0.01f };
+ float* point;
+ float res;
+
+ trap_Print("System calls work\n");
+
+ if (!1)
+ return -1;
+
+ trap_Print("Negation works\n");
+
+ if (!(9 == 9 && 6!=4 && 100>10 && 34<85))
+ return -1;
+
+ trap_Print("Basic comparisons work\n");
+
+ b1 = 9 & 3;
+ b2 = 7 | 8;
+ b3 = 10 ^ 3;
+
+ if (!(b1 == 1 && b2 == 15 && b3 == 9))
+ return -1;
+
+ trap_Print("Boolean functions work\n");
+
+ l = 2;
+ l = l<<2;
+
+ r = 9;
+ r = r>>2;
+
+ if (!(l == 8 && r == 2))
+ return -1;
+
+ trap_Print("Bit shifts work\n");
+
+ a = 6;
+ b = 2*2;
+
+ m = a*b;
+ d = a/b;
+ s = a+b;
+ as = a-b;
+
+ if (!(m == 24 && d == 1 && s == 10 && as == 2))
+ return -1;
+
+ trap_Print("Arithmetics works\n");
+
+ f = 5.1f;
+ dd = 3.1415f;
+
+ if (!((f*dd)>15.0f && (f*dd)<17.0f && (f-dd)<2.0f && (f-dd)>1.0f))
+ return -1;
+
+ trap_Print("Floating point arithmetics works\n");
+
+ i = f*dd;
+
+ if (!(i==16))
+ return -1;
+
+ trap_Print("Float to Int works\n");
+
+ f = i+1;
+
+ if (!(f>16.0f && f<18.0f))
+ return -1;
+
+ trap_Print("Int to Float works\n");
+
+ j = 0; o = 0;
+ for(k=0; k<5; k++)
+ j++;
+
+ for(k=5; k>0; k--)
+ o++;
+
+ if (!(o == 5 && j == 5))
+ return -1;
+
+ trap_Print("Cycles work\n");
+
+ g = 11;
+ g++;
+
+ if (!(g == 12))
+ return -1;
+
+ trap_Print("Global variables work\n");
+
+ ua = 6;
+ ub = 2*2;
+
+ um = ua*ub;
+ ud = ua/ub;
+ us = ua+ub;
+ uas = ua-ub;
+
+ if (!(um == 24 && ud == 1 && us == 10 && uas == 2))
+ return -1;
+
+ trap_Print("Unsigned ints work\n");
+
+ point = &arr[0];
+ point += 2;
+ if (!(*point == 1.41f))
+ return -1;
+
+ trap_Print("Pointer arithmetics works\n");
+
+ re = trapp(12, 4);
+
+ if (!(re == 8))
+ return -1;
+
+ trap_Print("Function calls work\n");
+
+ res = compl(arr, 4);
+
+ if (!(res<0.01f && res>(-0.01f)))
+ return -1;
+
+ trap_Print("Complex function call works\n");
+
+ for(i=0; i<1000000; i++)
+ spam();
+
+ trap_Print("Stack spam check passed\n");
+
+ trap_Print("All checks are passed!\n");
+
+ return 10;
+}
+
+int trapp(int a, int b)
+{
+ int c;
+ c = (a+b)/2;
+ return c;
+}
+
+float compl(float* a, unsigned int n)
+{
+ int s, i;
+ for(i=0; i<n; i++)
+ s+=a[i];
+ return s;
+}
+
+void spam()
+{
+ return;
+}
+
diff --git a/src/tests/test.qvm b/src/tests/test.qvm
new file mode 100644
index 0000000..22b99b2
--- /dev/null
+++ b/src/tests/test.qvm
Binary files differ