diff options
author | Vasilis Kalintiris <ehostunreach@gmail.com> | 2013-12-06 21:17:54 +0200 |
---|---|---|
committer | Vasilis Kalintiris <ehostunreach@gmail.com> | 2013-12-07 19:35:50 +0200 |
commit | 70a3dae19cc998ea315ccfa120515d1790aeeed6 (patch) | |
tree | 704e1cbd1c002c2b99ba09f601570a41caee7291 | |
parent | 4a871c3e0f72542cbe4d2158bed707d301c5f29e (diff) |
Use do_run_from_file() for test_double_i64_conversion
-rw-r--r-- | tests/core/test_double_i64_conversion.in | 69 | ||||
-rw-r--r-- | tests/core/test_double_i64_conversion.out | 1 | ||||
-rw-r--r-- | tests/test_core.py | 72 |
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 |