diff options
author | Vasilis Kalintiris <ehostunreach@gmail.com> | 2013-12-07 14:19:15 +0200 |
---|---|---|
committer | Vasilis Kalintiris <ehostunreach@gmail.com> | 2013-12-07 19:35:58 +0200 |
commit | fc4b03f90b817cc6083ff74e17507fb7a8bc8f45 (patch) | |
tree | e45fb2d086f714629bbe2884dd9b0f9cb1545254 | |
parent | 46a2bf30fb1f52b88de44776158ac110cdef530e (diff) |
Use do_run_from_file() for test_copyop
-rw-r--r-- | tests/core/test_copyop.in | 36 | ||||
-rw-r--r-- | tests/core/test_copyop.out | 4 | ||||
-rw-r--r-- | tests/test_core.py | 39 |
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 = ''' |