aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasilis Kalintiris <ehostunreach@gmail.com>2013-12-07 14:19:15 +0200
committerVasilis Kalintiris <ehostunreach@gmail.com>2013-12-07 19:35:58 +0200
commitfc4b03f90b817cc6083ff74e17507fb7a8bc8f45 (patch)
treee45fb2d086f714629bbe2884dd9b0f9cb1545254
parent46a2bf30fb1f52b88de44776158ac110cdef530e (diff)
Use do_run_from_file() for test_copyop
-rw-r--r--tests/core/test_copyop.in36
-rw-r--r--tests/core/test_copyop.out4
-rw-r--r--tests/test_core.py39
3 files changed, 43 insertions, 36 deletions
diff --git a/tests/core/test_copyop.in b/tests/core/test_copyop.in
new file mode 100644
index 00000000..4bf7da12
--- /dev/null
+++ b/tests/core/test_copyop.in
@@ -0,0 +1,36 @@
+
+ #include <stdio.h>
+ #include <math.h>
+ #include <string.h>
+
+ struct vec {
+ double x,y,z;
+ vec() : x(0), y(0), z(0) { };
+ vec(const double a, const double b, const double c) : x(a), y(b), z(c) { };
+ };
+
+ struct basis {
+ vec a, b, c;
+ basis(const vec& v) {
+ a=v; // should not touch b!
+ printf("*%.2f,%.2f,%.2f*\n", b.x, b.y, b.z);
+ }
+ };
+
+ int main() {
+ basis B(vec(1,0,0));
+
+ // Part 2: similar problem with memset and memmove
+ int x = 1, y = 77, z = 2;
+ memset((void*)&x, 0, sizeof(int));
+ memset((void*)&z, 0, sizeof(int));
+ printf("*%d,%d,%d*\n", x, y, z);
+ memcpy((void*)&x, (void*)&z, sizeof(int));
+ memcpy((void*)&z, (void*)&x, sizeof(int));
+ printf("*%d,%d,%d*\n", x, y, z);
+ memmove((void*)&x, (void*)&z, sizeof(int));
+ memmove((void*)&z, (void*)&x, sizeof(int));
+ printf("*%d,%d,%d*\n", x, y, z);
+ return 0;
+ }
+ \ No newline at end of file
diff --git a/tests/core/test_copyop.out b/tests/core/test_copyop.out
new file mode 100644
index 00000000..17bde9e7
--- /dev/null
+++ b/tests/core/test_copyop.out
@@ -0,0 +1,4 @@
+*0.00,0.00,0.00*
+*0,77,0*
+*0,77,0*
+*0,77,0* \ No newline at end of file
diff --git a/tests/test_core.py b/tests/test_core.py
index f1fbae7a..40833390 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -2519,43 +2519,10 @@ The current type of b is: 9
# memcpy for assignments, with hardcoded numbers of bytes
# (llvm-gcc copies items one by one). See QUANTUM_SIZE in
# settings.js.
- src = '''
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
-
- struct vec {
- double x,y,z;
- vec() : x(0), y(0), z(0) { };
- vec(const double a, const double b, const double c) : x(a), y(b), z(c) { };
- };
-
- struct basis {
- vec a, b, c;
- basis(const vec& v) {
- a=v; // should not touch b!
- printf("*%.2f,%.2f,%.2f*\\n", b.x, b.y, b.z);
- }
- };
+ test_path = path_from_root('tests', 'core', 'test_copyop')
+ src, output = (test_path + s for s in ('.in', '.out'))
- int main() {
- basis B(vec(1,0,0));
-
- // Part 2: similar problem with memset and memmove
- int x = 1, y = 77, z = 2;
- memset((void*)&x, 0, sizeof(int));
- memset((void*)&z, 0, sizeof(int));
- printf("*%d,%d,%d*\\n", x, y, z);
- memcpy((void*)&x, (void*)&z, sizeof(int));
- memcpy((void*)&z, (void*)&x, sizeof(int));
- printf("*%d,%d,%d*\\n", x, y, z);
- memmove((void*)&x, (void*)&z, sizeof(int));
- memmove((void*)&z, (void*)&x, sizeof(int));
- printf("*%d,%d,%d*\\n", x, y, z);
- return 0;
- }
- '''
- self.do_run(src, '*0.00,0.00,0.00*\n*0,77,0*\n*0,77,0*\n*0,77,0*')
+ self.do_run_from_file(src, output)
def test_memcpy_memcmp(self):
src = '''