expo.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
  6. var tests = [
  7. {
  8. name: "Exponentiation operator (**) test cases",
  9. body: function () {
  10. assert.areEqual(8 , 2 ** 3, "2 to the power of 3 is 8");
  11. assert.areEqual(Math.pow(-2, -4), -2 ** -4, "Exponentiation operator ** works as intended");
  12. assert.areEqual(Math.pow(-0, -4), -0 ** -4, "Exponentiation operator ** works as intended");
  13. assert.areEqual(Math.pow(4, 0), 4 ** -0, "Exponentiation operator ** works as intended");
  14. assert.areEqual(Math.pow(0, -0), 0 ** -0, "Exponentiation operator ** works as intended");
  15. assert.areEqual(Math.pow(0, -0), 0 ** -0, "Exponentiation operator ** works as intended");
  16. assert.areEqual(Math.pow(Infinity, 0), Infinity ** 0,"Exponentiation operator ** works as intended");
  17. assert.areEqual(Math.pow(Infinity, -Infinity), Infinity ** -Infinity, "Exponentiation operator ** works as intended");
  18. assert.areEqual(Math.pow(NaN, 2), NaN ** 2, "Exponentiation operator ** works as intended");
  19. assert.areEqual(Math.pow(3.4, 2.2), 3.4 ** 2.2,"Exponentiation operator ** works as intended");
  20. assert.areEqual(Math.pow({}, 2.2), ({}) ** 2.2, "Exponentiation operator ** works as intended");
  21. }
  22. },
  23. {
  24. name: "Right associativity",
  25. body: function () {
  26. assert.areEqual( Math.pow(2, Math.pow(3, 2)), 2 ** 3 ** 2, "** is right associative");
  27. }
  28. },
  29. {
  30. name: "Exponentiation operator assignment",
  31. body: function () {
  32. var a = 2;
  33. a**= 4;
  34. assert.areEqual(Math.pow(2,4), a, "Exponentiation assignment works as intended");
  35. var b = -2;
  36. b **= -4;
  37. assert.areEqual(Math.pow(-2,-4), b,"Exponentiation assignment works as intended");
  38. }
  39. },
  40. {
  41. name: "Exponentiation operator must be evaluated before multiplication ",
  42. body: function () {
  43. assert.areEqual((2 * 3) ** 2, 2 * 3 ** 2, "Exponentiation operator has lower precedence than multiplicative operator *");
  44. assert.areEqual(2 + (3 ** 2), 2 + 3 ** 2, "Exponentiation operator has higher precedence than additive operator +");
  45. }
  46. },
  47. ];
  48. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });