diff options
-rw-r--r-- | tests/core/test_sizeof.in | 29 | ||||
-rw-r--r-- | tests/core/test_sizeof.out | 1 | ||||
-rw-r--r-- | tests/test_core.py | 32 |
3 files changed, 33 insertions, 29 deletions
diff --git a/tests/core/test_sizeof.in b/tests/core/test_sizeof.in new file mode 100644 index 00000000..952e900e --- /dev/null +++ b/tests/core/test_sizeof.in @@ -0,0 +1,29 @@ + + #include <stdio.h> + #include <string.h> + #include "emscripten.h" + + struct A { int x, y; }; + + int main( int argc, const char *argv[] ) { + int *a = new int[10]; + int *b = new int[1]; + int *c = new int[10]; + for (int i = 0; i < 10; i++) + a[i] = 2; + *b = 5; + for (int i = 0; i < 10; i++) + c[i] = 8; + printf("*%d,%d,%d,%d,%d*\n", a[0], a[9], *b, c[0], c[9]); + // Should overwrite a, but not touch b! + memcpy(a, c, 10*sizeof(int)); + printf("*%d,%d,%d,%d,%d*\n", a[0], a[9], *b, c[0], c[9]); + + // Part 2 + A as[3] = { { 5, 12 }, { 6, 990 }, { 7, 2 } }; + memcpy(&as[0], &as[2], sizeof(A)); + + printf("*%d,%d,%d,%d,%d,%d*\n", as[0].x, as[0].y, as[1].x, as[1].y, as[2].x, as[2].y); + return 0; + } +
\ No newline at end of file diff --git a/tests/core/test_sizeof.out b/tests/core/test_sizeof.out new file mode 100644 index 00000000..43d2c3b7 --- /dev/null +++ b/tests/core/test_sizeof.out @@ -0,0 +1 @@ +*2,2,5,8,8***8,8,5,8,8***7,2,6,990,7,2*
\ No newline at end of file diff --git a/tests/test_core.py b/tests/test_core.py index 9a2448fa..c065a993 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1837,36 +1837,10 @@ class T(RunnerCore): # Short name, to make it more fun to use manually on the co # Has invalid writes between printouts Settings.SAFE_HEAP = 0 - src = ''' - #include <stdio.h> - #include <string.h> - #include "emscripten.h" - - struct A { int x, y; }; + test_path = path_from_root('tests', 'core', 'test_sizeof') + src, output = (test_path + s for s in ('.in', '.out')) - int main( int argc, const char *argv[] ) { - int *a = new int[10]; - int *b = new int[1]; - int *c = new int[10]; - for (int i = 0; i < 10; i++) - a[i] = 2; - *b = 5; - for (int i = 0; i < 10; i++) - c[i] = 8; - printf("*%d,%d,%d,%d,%d*\\n", a[0], a[9], *b, c[0], c[9]); - // Should overwrite a, but not touch b! - memcpy(a, c, 10*sizeof(int)); - printf("*%d,%d,%d,%d,%d*\\n", a[0], a[9], *b, c[0], c[9]); - - // Part 2 - A as[3] = { { 5, 12 }, { 6, 990 }, { 7, 2 } }; - memcpy(&as[0], &as[2], sizeof(A)); - - printf("*%d,%d,%d,%d,%d,%d*\\n", as[0].x, as[0].y, as[1].x, as[1].y, as[2].x, as[2].y); - return 0; - } - ''' - self.do_run(src, '*2,2,5,8,8***8,8,5,8,8***7,2,6,990,7,2*', [], lambda x, err: x.replace('\n', '*')) + self.do_run_from_file(src, output, [], lambda x, err: x.replace('\n', '*')) def test_float_h(self): process = Popen([PYTHON, EMCC, path_from_root('tests', 'float+.c')], stdout=PIPE, stderr=PIPE) |