summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVasilis Kalintiris <ehostunreach@gmail.com>2013-12-06 21:17:54 +0200
committerVasilis Kalintiris <ehostunreach@gmail.com>2013-12-07 19:35:50 +0200
commit70a3dae19cc998ea315ccfa120515d1790aeeed6 (patch)
tree704e1cbd1c002c2b99ba09f601570a41caee7291 /tests
parent4a871c3e0f72542cbe4d2158bed707d301c5f29e (diff)
Use do_run_from_file() for test_double_i64_conversion
Diffstat (limited to 'tests')
-rw-r--r--tests/core/test_double_i64_conversion.in69
-rw-r--r--tests/core/test_double_i64_conversion.out1
-rw-r--r--tests/test_core.py72
3 files changed, 73 insertions, 69 deletions
diff --git a/tests/core/test_double_i64_conversion.in b/tests/core/test_double_i64_conversion.in
new file mode 100644
index 00000000..404c6796
--- /dev/null
+++ b/tests/core/test_double_i64_conversion.in
@@ -0,0 +1,69 @@
+
+ #include <cassert>
+ #include <inttypes.h>
+ #include <stdio.h>
+
+ __attribute((noinline)) bool eq(double d, int64_t i) {
+ int64_t i2 = (int64_t)d;
+ if (i != i2) {
+ printf("%.20g converted to int64 returns %lld, not %lld as expected!\n", d, i2, i);
+ }
+ return i == i2;
+ }
+
+ int main() {
+ assert(eq(0.0, 0));
+ assert(eq(-0.0, 0));
+ assert(eq(0.1, 0));
+ assert(eq(-0.1, 0));
+ assert(eq(0.6, 0));
+ assert(eq(-0.6, 0));
+ assert(eq(1.0, 1));
+ assert(eq(-1.0, -1));
+ assert(eq(1.1, 1));
+ assert(eq(-1.1, -1));
+ assert(eq(1.6, 1));
+ assert(eq(-1.6, -1));
+ assert(eq(4294967295.0, 4294967295LL));
+ assert(eq(4294967295.5, 4294967295LL));
+ assert(eq(4294967296.0, 4294967296LL));
+ assert(eq(4294967296.5, 4294967296LL));
+ assert(eq(14294967295.0, 14294967295LL));
+ assert(eq(14294967295.5, 14294967295LL));
+ assert(eq(14294967296.0, 14294967296LL));
+ assert(eq(14294967296.5, 14294967296LL));
+ assert(eq(-4294967295.0, -4294967295LL));
+ assert(eq(-4294967295.5, -4294967295LL));
+ assert(eq(-4294967296.0, -4294967296LL));
+ assert(eq(-4294967296.5, -4294967296LL));
+ assert(eq(-14294967295.0, -14294967295LL));
+ assert(eq(-14294967295.5, -14294967295LL));
+ assert(eq(-14294967296.0, -14294967296LL));
+ assert(eq(-14294967296.5, -14294967296LL));
+
+ assert(eq(4294967295.3, 4294967295LL));
+ assert(eq(4294967296.3, 4294967296LL));
+ assert(eq(14294967295.3, 14294967295LL));
+ assert(eq(14294967296.3, 14294967296LL));
+ assert(eq(-4294967295.3, -4294967295LL));
+ assert(eq(-4294967296.3, -4294967296LL));
+ assert(eq(-14294967295.3, -14294967295LL));
+ assert(eq(-14294967296.3, -14294967296LL));
+
+ assert(eq(4294967295.8, 4294967295LL));
+ assert(eq(4294967296.8, 4294967296LL));
+ assert(eq(14294967295.8, 14294967295LL));
+ assert(eq(14294967296.8, 14294967296LL));
+ assert(eq(-4294967295.8, -4294967295LL));
+ assert(eq(-4294967296.8, -4294967296LL));
+ assert(eq(-14294967295.8, -14294967295LL));
+ assert(eq(-14294967296.8, -14294967296LL));
+
+ // The following number is the largest double such that all integers smaller than this can exactly be represented in a double.
+ assert(eq(9007199254740992.0, 9007199254740992LL /* == 2^53 */));
+ assert(eq(-9007199254740992.0, -9007199254740992LL /* == -2^53 */));
+
+ printf("OK!\n");
+ return 0;
+ }
+ \ No newline at end of file
diff --git a/tests/core/test_double_i64_conversion.out b/tests/core/test_double_i64_conversion.out
new file mode 100644
index 00000000..d6406617
--- /dev/null
+++ b/tests/core/test_double_i64_conversion.out
@@ -0,0 +1 @@
+OK!
diff --git a/tests/test_core.py b/tests/test_core.py
index 74500dc3..43a91a41 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -453,76 +453,10 @@ class T(RunnerCore): # Short name, to make it more fun to use manually on the co
def test_double_i64_conversion(self):
if Settings.USE_TYPED_ARRAYS != 2: return self.skip('needs ta2')
- src = r'''
- #include <cassert>
- #include <inttypes.h>
- #include <stdio.h>
-
- __attribute((noinline)) bool eq(double d, int64_t i) {
- int64_t i2 = (int64_t)d;
- if (i != i2) {
- printf("%.20g converted to int64 returns %lld, not %lld as expected!\n", d, i2, i);
- }
- return i == i2;
- }
+ test_path = path_from_root('tests', 'core', 'test_double_i64_conversion')
+ src, output = (test_path + s for s in ('.in', '.out'))
- int main() {
- assert(eq(0.0, 0));
- assert(eq(-0.0, 0));
- assert(eq(0.1, 0));
- assert(eq(-0.1, 0));
- assert(eq(0.6, 0));
- assert(eq(-0.6, 0));
- assert(eq(1.0, 1));
- assert(eq(-1.0, -1));
- assert(eq(1.1, 1));
- assert(eq(-1.1, -1));
- assert(eq(1.6, 1));
- assert(eq(-1.6, -1));
- assert(eq(4294967295.0, 4294967295LL));
- assert(eq(4294967295.5, 4294967295LL));
- assert(eq(4294967296.0, 4294967296LL));
- assert(eq(4294967296.5, 4294967296LL));
- assert(eq(14294967295.0, 14294967295LL));
- assert(eq(14294967295.5, 14294967295LL));
- assert(eq(14294967296.0, 14294967296LL));
- assert(eq(14294967296.5, 14294967296LL));
- assert(eq(-4294967295.0, -4294967295LL));
- assert(eq(-4294967295.5, -4294967295LL));
- assert(eq(-4294967296.0, -4294967296LL));
- assert(eq(-4294967296.5, -4294967296LL));
- assert(eq(-14294967295.0, -14294967295LL));
- assert(eq(-14294967295.5, -14294967295LL));
- assert(eq(-14294967296.0, -14294967296LL));
- assert(eq(-14294967296.5, -14294967296LL));
-
- assert(eq(4294967295.3, 4294967295LL));
- assert(eq(4294967296.3, 4294967296LL));
- assert(eq(14294967295.3, 14294967295LL));
- assert(eq(14294967296.3, 14294967296LL));
- assert(eq(-4294967295.3, -4294967295LL));
- assert(eq(-4294967296.3, -4294967296LL));
- assert(eq(-14294967295.3, -14294967295LL));
- assert(eq(-14294967296.3, -14294967296LL));
-
- assert(eq(4294967295.8, 4294967295LL));
- assert(eq(4294967296.8, 4294967296LL));
- assert(eq(14294967295.8, 14294967295LL));
- assert(eq(14294967296.8, 14294967296LL));
- assert(eq(-4294967295.8, -4294967295LL));
- assert(eq(-4294967296.8, -4294967296LL));
- assert(eq(-14294967295.8, -14294967295LL));
- assert(eq(-14294967296.8, -14294967296LL));
-
- // The following number is the largest double such that all integers smaller than this can exactly be represented in a double.
- assert(eq(9007199254740992.0, 9007199254740992LL /* == 2^53 */));
- assert(eq(-9007199254740992.0, -9007199254740992LL /* == -2^53 */));
-
- printf("OK!\n");
- return 0;
- }
- '''
- self.do_run(src, 'OK!\n');
+ self.do_run_from_file(src, output)
def test_float32_precise(self):
Settings.PRECISE_F32 = 1