trunc.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. let passed = true;
  6. let check = function(expected, funName, ...args)
  7. {
  8. let fun = eval(funName);
  9. var result;
  10. try {
  11. result = fun(...args);
  12. }
  13. catch (e) {
  14. result = e.message;
  15. }
  16. if(result != expected)
  17. {
  18. passed = false;
  19. print(`${funName}(${[...args]}) produced ${result}, expected ${expected}`);
  20. }
  21. }
  22. let ffi = {};
  23. var mod = new WebAssembly.Module(readbuffer('trunc.wasm'));
  24. var exports = new WebAssembly.Instance(mod, ffi).exports;
  25. //i32
  26. check("Overflow","exports.i32_trunc_u_f64",Number.NaN);
  27. check("Overflow","exports.i32_trunc_s_f64",Number.NaN);
  28. check("Overflow","exports.i32_trunc_u_f32",Number.NaN);
  29. check("Overflow","exports.i32_trunc_s_f32",Number.NaN);
  30. check(-1,"exports.i32_trunc_u_f64",4294967295.0);
  31. check("Overflow","exports.i32_trunc_u_f64",4294967296.0);
  32. check(0,"exports.i32_trunc_u_f64",0.0);
  33. //check(0,"exports.i32_trunc_u_f64",0.7); BUG!!! Needs to be fixed!
  34. check("Overflow","exports.i32_trunc_u_f64",-1);
  35. check(2147483647,"exports.i32_trunc_s_f64",2147483647.0);
  36. check("Overflow","exports.i32_trunc_s_f64",2147483648.0);
  37. check(-2147483648,"exports.i32_trunc_s_f64",-2147483648.0);
  38. check("Overflow","exports.i32_trunc_s_f64",-2147483649.0);
  39. check(-256,"exports.i32_trunc_u_f32",4294967040.0);
  40. check("Overflow","exports.i32_trunc_u_f32",4294967296.0);
  41. check(2147483520,"exports.i32_trunc_s_f32",2147483520.0);
  42. check("Overflow","exports.i32_trunc_s_f32",2147483647.0);
  43. check(-2147483520,"exports.i32_trunc_s_f32",-2147483520.0);
  44. check("Overflow","exports.i32_trunc_s_f32",-2147483800.0);
  45. //i64
  46. check("Overflow","exports.i64_trunc_u_f64",Number.NaN);
  47. check("Overflow","exports.i64_trunc_s_f64",Number.NaN);
  48. check("Overflow","exports.i64_trunc_u_f32",Number.NaN);
  49. check("Overflow","exports.i64_trunc_s_f32",Number.NaN);
  50. check(1,"exports.test1");
  51. check("Overflow","exports.test2");
  52. check(1,"exports.test3");
  53. check(1,"exports.test4");
  54. check("Overflow","exports.test5");
  55. check(1,"exports.test6");
  56. check("Overflow","exports.test7");
  57. check(1,"exports.test8");
  58. check("Overflow","exports.test9");
  59. check(1,"exports.test10");
  60. check("Overflow","exports.test11");
  61. check(1,"exports.test12");
  62. check(1,"exports.test13");
  63. check("Overflow","exports.test14");
  64. check(1,"exports.test15");
  65. check("Overflow","exports.test16");
  66. check(1,"exports.test17");
  67. check("Overflow","exports.test18");
  68. if(passed)
  69. {
  70. print("Passed");
  71. }