summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/core/test_sizeof.in29
-rw-r--r--tests/core/test_sizeof.out1
-rw-r--r--tests/test_core.py32
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)