TestOps.hx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package unit;
  2. class TestOps extends Test {
  3. public function testOps()
  4. {
  5. eq(1 + 2 + "", "3");
  6. eq((1 + 2) + "", "3");
  7. eq(1 + (2 + ""), "12");
  8. eq(4 - 3 + "", "1");
  9. eq((4 - 3) + "", "1");
  10. //eq(4 - (3 + ""), "1");
  11. eq(4 | 3 & 1, 1);
  12. eq((4 | 3) & 1, 1);
  13. eq(4 | (3 & 1), 5);
  14. eq(4 & 3 | 1, 1);
  15. eq((4 & 3) | 1, 1);
  16. eq(4 & (3 | 1), 0);
  17. eq( - 5 + 1, -4 );
  18. eq( - (5 + 1), -6 );
  19. t( 5 << 2 == 20 );
  20. t( (5 << 2) == 20 );
  21. t( 20 == 5 << 2 );
  22. t( 20 == (5 << 2) );
  23. eq( 5 % 3 * 4, 8 );
  24. eq( (5 % 3) * 4, 8 );
  25. eq( 5 % (3 * 4), 5 );
  26. eq( 20 / 2 / 2, 5 );
  27. eq( (20 / 2) / 2, 5 );
  28. eq( 20 / (2 / 2), 20 );
  29. eq( 2 << 3 >> 1, 8 );
  30. eq( (2 << 3) >> 1, 8 );
  31. eq( 2 << (3 >> 1), 4 );
  32. f( (1 & 0x8000) != 0 );
  33. f( 1 & 0x8000 != 0 );
  34. f( 0 != (1 & 0x8000) );
  35. f( 0 != 1 & 0x8000 );
  36. eq( 5 * 10 % 3, 5);
  37. eq( 5 * (10 % 3), 5);
  38. eq( (5 * 10) % 3, 2);
  39. eq( 10 % 3 * 5, 5);
  40. eq( (10 % 3) * 5, 5);
  41. eq( 10 % (3 * 5), 10);
  42. eq( 100 % 100, 0);
  43. eq( -100 % 100, 0);
  44. eq( 101.5 % 100, 1.5);
  45. eq( -101.5 % 100, -1.5);
  46. var x = 101.5;
  47. x %= 100;
  48. eq( x, 1.5);
  49. t(Math.isNaN(5.0 % 0.0));
  50. t(Math.isNaN(x %= 0.0));
  51. #if !macro
  52. //t(Math.isNaN(1 % 0));
  53. //t(Math.isNaN(0 % 0));
  54. //t(Math.isNaN(x %= 0));
  55. #end
  56. var x:Dynamic = [-101.5];
  57. x[0] %= 100;
  58. eq( x[0], -1.5);
  59. eq( true ? 1 : 6 * 5, 1);
  60. eq( false ? 1 : 6 * 5, 30);
  61. eq( (true ? 1 : 6) * 5, 5);
  62. eq( (false ? 1 : 6) * 5, 30);
  63. eq( 1 + (5 == 6 ? 4 : 1), 2 );
  64. eq( 1 + 1 == 3 ? 1 : 5, 5 );
  65. eq( -3 == 3 ? 0 : 1, 1 );
  66. t( !true ? true : true );
  67. var k = false;
  68. f(k = true ? false : true);
  69. f(k);
  70. f((k = true) ? false : true);
  71. t(k);
  72. t( true || false && false );
  73. var x = 1;
  74. eq( -x++, -1);
  75. eq( -x--, -2);
  76. eq( ("bla" + "x").indexOf("x"), 3);
  77. eq(5 * @foo 3 + 4, 19);
  78. eq(5 * @foo @bar 3 + @baz 4, 19);
  79. }
  80. }