ruffle/core/tests/swfs/avm2/subtract/Test.as

1594 lines
32 KiB
ActionScript

package {
public class Test {
}
}
function assert_subtract(val1, val2) {
trace(val1 - val2);
}
trace("//true - true");
assert_subtract(true, true);
trace("//false - true");
assert_subtract(false, true);
trace("//null - true");
assert_subtract(null, true);
trace("//undefined - true");
assert_subtract(undefined, true);
trace("//\"\" - true");
assert_subtract("", true);
trace("//\"str\" - true");
assert_subtract("str", true);
trace("//\"true\" - true");
assert_subtract("true", true);
trace("//\"false\" - true");
assert_subtract("false", true);
trace("//0.0 - true");
assert_subtract(0.0, true);
trace("//NaN - true");
assert_subtract(NaN, true);
trace("//-0.0 - true");
assert_subtract(-0.0, true);
trace("//Infinity - true");
assert_subtract(Infinity, true);
trace("//1.0 - true");
assert_subtract(1.0, true);
trace("//-1.0 - true");
assert_subtract(-1.0, true);
trace("//0xFF1306 - true");
assert_subtract(0xFF1306, true);
trace("//new Object() - true");
assert_subtract({}, true);
trace("//\"0.0\" - true");
assert_subtract("0.0", true);
trace("//\"NaN\" - true");
assert_subtract("NaN", true);
trace("//\"-0.0\" - true");
assert_subtract("-0.0", true);
trace("//\"Infinity\" - true");
assert_subtract("Infinity", true);
trace("//\"1.0\" - true");
assert_subtract("1.0", true);
trace("//\"-1.0\" - true");
assert_subtract("-1.0", true);
trace("//\"0xFF1306\" - true");
assert_subtract("0xFF1306", true);
trace("//true - false");
assert_subtract(true, false);
trace("//false - false");
assert_subtract(false, false);
trace("//null - false");
assert_subtract(null, false);
trace("//undefined - false");
assert_subtract(undefined, false);
trace("//\"\" - false");
assert_subtract("", false);
trace("//\"str\" - false");
assert_subtract("str", false);
trace("//\"true\" - false");
assert_subtract("true", false);
trace("//\"false\" - false");
assert_subtract("false", false);
trace("//0.0 - false");
assert_subtract(0.0, false);
trace("//NaN - false");
assert_subtract(NaN, false);
trace("//-0.0 - false");
assert_subtract(-0.0, false);
trace("//Infinity - false");
assert_subtract(Infinity, false);
trace("//1.0 - false");
assert_subtract(1.0, false);
trace("//-1.0 - false");
assert_subtract(-1.0, false);
trace("//0xFF1306 - false");
assert_subtract(0xFF1306, false);
trace("//new Object() - false");
assert_subtract({}, false);
trace("//\"0.0\" - false");
assert_subtract("0.0", false);
trace("//\"NaN\" - false");
assert_subtract("NaN", false);
trace("//\"-0.0\" - false");
assert_subtract("-0.0", false);
trace("//\"Infinity\" - false");
assert_subtract("Infinity", false);
trace("//\"1.0\" - false");
assert_subtract("1.0", false);
trace("//\"-1.0\" - false");
assert_subtract("-1.0", false);
trace("//\"0xFF1306\" - false");
assert_subtract("0xFF1306", false);
trace("//true - null");
assert_subtract(true, null);
trace("//false - null");
assert_subtract(false, null);
trace("//null - null");
assert_subtract(null, null);
trace("//undefined - null");
assert_subtract(undefined, null);
trace("//\"\" - null");
assert_subtract("", null);
trace("//\"str\" - null");
assert_subtract("str", null);
trace("//\"true\" - null");
assert_subtract("true", null);
trace("//\"false\" - null");
assert_subtract("false", null);
trace("//0.0 - null");
assert_subtract(0.0, null);
trace("//NaN - null");
assert_subtract(NaN, null);
trace("//-0.0 - null");
assert_subtract(-0.0, null);
trace("//Infinity - null");
assert_subtract(Infinity, null);
trace("//1.0 - null");
assert_subtract(1.0, null);
trace("//-1.0 - null");
assert_subtract(-1.0, null);
trace("//0xFF1306 - null");
assert_subtract(0xFF1306, null);
trace("//new Object() - null");
assert_subtract({}, null);
trace("//\"0.0\" - null");
assert_subtract("0.0", null);
trace("//\"NaN\" - null");
assert_subtract("NaN", null);
trace("//\"-0.0\" - null");
assert_subtract("-0.0", null);
trace("//\"Infinity\" - null");
assert_subtract("Infinity", null);
trace("//\"1.0\" - null");
assert_subtract("1.0", null);
trace("//\"-1.0\" - null");
assert_subtract("-1.0", null);
trace("//\"0xFF1306\" - null");
assert_subtract("0xFF1306", null);
trace("//true - undefined");
assert_subtract(true, undefined);
trace("//false - undefined");
assert_subtract(false, undefined);
trace("//null - undefined");
assert_subtract(null, undefined);
trace("//undefined - undefined");
assert_subtract(undefined, undefined);
trace("//\"\" - undefined");
assert_subtract("", undefined);
trace("//\"str\" - undefined");
assert_subtract("str", undefined);
trace("//\"true\" - undefined");
assert_subtract("true", undefined);
trace("//\"false\" - undefined");
assert_subtract("false", undefined);
trace("//0.0 - undefined");
assert_subtract(0.0, undefined);
trace("//NaN - undefined");
assert_subtract(NaN, undefined);
trace("//-0.0 - undefined");
assert_subtract(-0.0, undefined);
trace("//Infinity - undefined");
assert_subtract(Infinity, undefined);
trace("//1.0 - undefined");
assert_subtract(1.0, undefined);
trace("//-1.0 - undefined");
assert_subtract(-1.0, undefined);
trace("//0xFF1306 - undefined");
assert_subtract(0xFF1306, undefined);
trace("//new Object() - undefined");
assert_subtract({}, undefined);
trace("//\"0.0\" - undefined");
assert_subtract("0.0", undefined);
trace("//\"NaN\" - undefined");
assert_subtract("NaN", undefined);
trace("//\"-0.0\" - undefined");
assert_subtract("-0.0", undefined);
trace("//\"Infinity\" - undefined");
assert_subtract("Infinity", undefined);
trace("//\"1.0\" - undefined");
assert_subtract("1.0", undefined);
trace("//\"-1.0\" - undefined");
assert_subtract("-1.0", undefined);
trace("//\"0xFF1306\" - undefined");
assert_subtract("0xFF1306", undefined);
trace("//true - \"\"");
assert_subtract(true, "");
trace("//false - \"\"");
assert_subtract(false, "");
trace("//null - \"\"");
assert_subtract(null, "");
trace("//undefined - \"\"");
assert_subtract(undefined, "");
trace("//\"\" - \"\"");
assert_subtract("", "");
trace("//\"str\" - \"\"");
assert_subtract("str", "");
trace("//\"true\" - \"\"");
assert_subtract("true", "");
trace("//\"false\" - \"\"");
assert_subtract("false", "");
trace("//0.0 - \"\"");
assert_subtract(0.0, "");
trace("//NaN - \"\"");
assert_subtract(NaN, "");
trace("//-0.0 - \"\"");
assert_subtract(-0.0, "");
trace("//Infinity - \"\"");
assert_subtract(Infinity, "");
trace("//1.0 - \"\"");
assert_subtract(1.0, "");
trace("//-1.0 - \"\"");
assert_subtract(-1.0, "");
trace("//0xFF1306 - \"\"");
assert_subtract(0xFF1306, "");
trace("//new Object() - \"\"");
assert_subtract({}, "");
trace("//\"0.0\" - \"\"");
assert_subtract("0.0", "");
trace("//\"NaN\" - \"\"");
assert_subtract("NaN", "");
trace("//\"-0.0\" - \"\"");
assert_subtract("-0.0", "");
trace("//\"Infinity\" - \"\"");
assert_subtract("Infinity", "");
trace("//\"1.0\" - \"\"");
assert_subtract("1.0", "");
trace("//\"-1.0\" - \"\"");
assert_subtract("-1.0", "");
trace("//\"0xFF1306\" - \"\"");
assert_subtract("0xFF1306", "");
trace("//true - \"str\"");
assert_subtract(true, "str");
trace("//false - \"str\"");
assert_subtract(false, "str");
trace("//null - \"str\"");
assert_subtract(null, "str");
trace("//undefined - \"str\"");
assert_subtract(undefined, "str");
trace("//\"\" - \"str\"");
assert_subtract("", "str");
trace("//\"str\" - \"str\"");
assert_subtract("str", "str");
trace("//\"true\" - \"str\"");
assert_subtract("true", "str");
trace("//\"false\" - \"str\"");
assert_subtract("false", "str");
trace("//0.0 - \"str\"");
assert_subtract(0.0, "str");
trace("//NaN - \"str\"");
assert_subtract(NaN, "str");
trace("//-0.0 - \"str\"");
assert_subtract(-0.0, "str");
trace("//Infinity - \"str\"");
assert_subtract(Infinity, "str");
trace("//1.0 - \"str\"");
assert_subtract(1.0, "str");
trace("//-1.0 - \"str\"");
assert_subtract(-1.0, "str");
trace("//0xFF1306 - \"str\"");
assert_subtract(0xFF1306, "str");
trace("//new Object() - \"str\"");
assert_subtract({}, "str");
trace("//\"0.0\" - \"str\"");
assert_subtract("0.0", "str");
trace("//\"NaN\" - \"str\"");
assert_subtract("NaN", "str");
trace("//\"-0.0\" - \"str\"");
assert_subtract("-0.0", "str");
trace("//\"Infinity\" - \"str\"");
assert_subtract("Infinity", "str");
trace("//\"1.0\" - \"str\"");
assert_subtract("1.0", "str");
trace("//\"-1.0\" - \"str\"");
assert_subtract("-1.0", "str");
trace("//\"0xFF1306\" - \"str\"");
assert_subtract("0xFF1306", "str");
trace("//true - \"true\"");
assert_subtract(true, "true");
trace("//false - \"true\"");
assert_subtract(false, "true");
trace("//null - \"true\"");
assert_subtract(null, "true");
trace("//undefined - \"true\"");
assert_subtract(undefined, "true");
trace("//\"\" - \"true\"");
assert_subtract("", "true");
trace("//\"str\" - \"true\"");
assert_subtract("str", "true");
trace("//\"true\" - \"true\"");
assert_subtract("true", "true");
trace("//\"false\" - \"true\"");
assert_subtract("false", "true");
trace("//0.0 - \"true\"");
assert_subtract(0.0, "true");
trace("//NaN - \"true\"");
assert_subtract(NaN, "true");
trace("//-0.0 - \"true\"");
assert_subtract(-0.0, "true");
trace("//Infinity - \"true\"");
assert_subtract(Infinity, "true");
trace("//1.0 - \"true\"");
assert_subtract(1.0, "true");
trace("//-1.0 - \"true\"");
assert_subtract(-1.0, "true");
trace("//0xFF1306 - \"true\"");
assert_subtract(0xFF1306, "true");
trace("//new Object() - \"true\"");
assert_subtract({}, "true");
trace("//\"0.0\" - \"true\"");
assert_subtract("0.0", "true");
trace("//\"NaN\" - \"true\"");
assert_subtract("NaN", "true");
trace("//\"-0.0\" - \"true\"");
assert_subtract("-0.0", "true");
trace("//\"Infinity\" - \"true\"");
assert_subtract("Infinity", "true");
trace("//\"1.0\" - \"true\"");
assert_subtract("1.0", "true");
trace("//\"-1.0\" - \"true\"");
assert_subtract("-1.0", "true");
trace("//\"0xFF1306\" - \"true\"");
assert_subtract("0xFF1306", "true");
trace("//true - \"false\"");
assert_subtract(true, "false");
trace("//false - \"false\"");
assert_subtract(false, "false");
trace("//null - \"false\"");
assert_subtract(null, "false");
trace("//undefined - \"false\"");
assert_subtract(undefined, "false");
trace("//\"\" - \"false\"");
assert_subtract("", "false");
trace("//\"str\" - \"false\"");
assert_subtract("str", "false");
trace("//\"true\" - \"false\"");
assert_subtract("true", "false");
trace("//\"false\" - \"false\"");
assert_subtract("false", "false");
trace("//0.0 - \"false\"");
assert_subtract(0.0, "false");
trace("//NaN - \"false\"");
assert_subtract(NaN, "false");
trace("//-0.0 - \"false\"");
assert_subtract(-0.0, "false");
trace("//Infinity - \"false\"");
assert_subtract(Infinity, "false");
trace("//1.0 - \"false\"");
assert_subtract(1.0, "false");
trace("//-1.0 - \"false\"");
assert_subtract(-1.0, "false");
trace("//0xFF1306 - \"false\"");
assert_subtract(0xFF1306, "false");
trace("//new Object() - \"false\"");
assert_subtract({}, "false");
trace("//\"0.0\" - \"false\"");
assert_subtract("0.0", "false");
trace("//\"NaN\" - \"false\"");
assert_subtract("NaN", "false");
trace("//\"-0.0\" - \"false\"");
assert_subtract("-0.0", "false");
trace("//\"Infinity\" - \"false\"");
assert_subtract("Infinity", "false");
trace("//\"1.0\" - \"false\"");
assert_subtract("1.0", "false");
trace("//\"-1.0\" - \"false\"");
assert_subtract("-1.0", "false");
trace("//\"0xFF1306\" - \"false\"");
assert_subtract("0xFF1306", "false");
trace("//true - 0.0");
assert_subtract(true, 0.0);
trace("//false - 0.0");
assert_subtract(false, 0.0);
trace("//null - 0.0");
assert_subtract(null, 0.0);
trace("//undefined - 0.0");
assert_subtract(undefined, 0.0);
trace("//\"\" - 0.0");
assert_subtract("", 0.0);
trace("//\"str\" - 0.0");
assert_subtract("str", 0.0);
trace("//\"true\" - 0.0");
assert_subtract("true", 0.0);
trace("//\"false\" - 0.0");
assert_subtract("false", 0.0);
trace("//0.0 - 0.0");
assert_subtract(0.0, 0.0);
trace("//NaN - 0.0");
assert_subtract(NaN, 0.0);
trace("//-0.0 - 0.0");
assert_subtract(-0.0, 0.0);
trace("//Infinity - 0.0");
assert_subtract(Infinity, 0.0);
trace("//1.0 - 0.0");
assert_subtract(1.0, 0.0);
trace("//-1.0 - 0.0");
assert_subtract(-1.0, 0.0);
trace("//0xFF1306 - 0.0");
assert_subtract(0xFF1306, 0.0);
trace("//new Object() - 0.0");
assert_subtract({}, 0.0);
trace("//\"0.0\" - 0.0");
assert_subtract("0.0", 0.0);
trace("//\"NaN\" - 0.0");
assert_subtract("NaN", 0.0);
trace("//\"-0.0\" - 0.0");
assert_subtract("-0.0", 0.0);
trace("//\"Infinity\" - 0.0");
assert_subtract("Infinity", 0.0);
trace("//\"1.0\" - 0.0");
assert_subtract("1.0", 0.0);
trace("//\"-1.0\" - 0.0");
assert_subtract("-1.0", 0.0);
trace("//\"0xFF1306\" - 0.0");
assert_subtract("0xFF1306", 0.0);
trace("//true - NaN");
assert_subtract(true, NaN);
trace("//false - NaN");
assert_subtract(false, NaN);
trace("//null - NaN");
assert_subtract(null, NaN);
trace("//undefined - NaN");
assert_subtract(undefined, NaN);
trace("//\"\" - NaN");
assert_subtract("", NaN);
trace("//\"str\" - NaN");
assert_subtract("str", NaN);
trace("//\"true\" - NaN");
assert_subtract("true", NaN);
trace("//\"false\" - NaN");
assert_subtract("false", NaN);
trace("//0.0 - NaN");
assert_subtract(0.0, NaN);
trace("//NaN - NaN");
assert_subtract(NaN, NaN);
trace("//-0.0 - NaN");
assert_subtract(-0.0, NaN);
trace("//Infinity - NaN");
assert_subtract(Infinity, NaN);
trace("//1.0 - NaN");
assert_subtract(1.0, NaN);
trace("//-1.0 - NaN");
assert_subtract(-1.0, NaN);
trace("//0xFF1306 - NaN");
assert_subtract(0xFF1306, NaN);
trace("//new Object() - NaN");
assert_subtract({}, NaN);
trace("//\"0.0\" - NaN");
assert_subtract("0.0", NaN);
trace("//\"NaN\" - NaN");
assert_subtract("NaN", NaN);
trace("//\"-0.0\" - NaN");
assert_subtract("-0.0", NaN);
trace("//\"Infinity\" - NaN");
assert_subtract("Infinity", NaN);
trace("//\"1.0\" - NaN");
assert_subtract("1.0", NaN);
trace("//\"-1.0\" - NaN");
assert_subtract("-1.0", NaN);
trace("//\"0xFF1306\" - NaN");
assert_subtract("0xFF1306", NaN);
trace("//true - -0.0");
assert_subtract(true, -0.0);
trace("//false - -0.0");
assert_subtract(false, -0.0);
trace("//null - -0.0");
assert_subtract(null, -0.0);
trace("//undefined - -0.0");
assert_subtract(undefined, -0.0);
trace("//\"\" - -0.0");
assert_subtract("", -0.0);
trace("//\"str\" - -0.0");
assert_subtract("str", -0.0);
trace("//\"true\" - -0.0");
assert_subtract("true", -0.0);
trace("//\"false\" - -0.0");
assert_subtract("false", -0.0);
trace("//0.0 - -0.0");
assert_subtract(0.0, -0.0);
trace("//NaN - -0.0");
assert_subtract(NaN, -0.0);
trace("//-0.0 - -0.0");
assert_subtract(-0.0, -0.0);
trace("//Infinity - -0.0");
assert_subtract(Infinity, -0.0);
trace("//1.0 - -0.0");
assert_subtract(1.0, -0.0);
trace("//-1.0 - -0.0");
assert_subtract(-1.0, -0.0);
trace("//0xFF1306 - -0.0");
assert_subtract(0xFF1306, -0.0);
trace("//new Object() - -0.0");
assert_subtract({}, -0.0);
trace("//\"0.0\" - -0.0");
assert_subtract("0.0", -0.0);
trace("//\"NaN\" - -0.0");
assert_subtract("NaN", -0.0);
trace("//\"-0.0\" - -0.0");
assert_subtract("-0.0", -0.0);
trace("//\"Infinity\" - -0.0");
assert_subtract("Infinity", -0.0);
trace("//\"1.0\" - -0.0");
assert_subtract("1.0", -0.0);
trace("//\"-1.0\" - -0.0");
assert_subtract("-1.0", -0.0);
trace("//\"0xFF1306\" - -0.0");
assert_subtract("0xFF1306", -0.0);
trace("//true - Infinity");
assert_subtract(true, Infinity);
trace("//false - Infinity");
assert_subtract(false, Infinity);
trace("//null - Infinity");
assert_subtract(null, Infinity);
trace("//undefined - Infinity");
assert_subtract(undefined, Infinity);
trace("//\"\" - Infinity");
assert_subtract("", Infinity);
trace("//\"str\" - Infinity");
assert_subtract("str", Infinity);
trace("//\"true\" - Infinity");
assert_subtract("true", Infinity);
trace("//\"false\" - Infinity");
assert_subtract("false", Infinity);
trace("//0.0 - Infinity");
assert_subtract(0.0, Infinity);
trace("//NaN - Infinity");
assert_subtract(NaN, Infinity);
trace("//-0.0 - Infinity");
assert_subtract(-0.0, Infinity);
trace("//Infinity - Infinity");
assert_subtract(Infinity, Infinity);
trace("//1.0 - Infinity");
assert_subtract(1.0, Infinity);
trace("//-1.0 - Infinity");
assert_subtract(-1.0, Infinity);
trace("//0xFF1306 - Infinity");
assert_subtract(0xFF1306, Infinity);
trace("//new Object() - Infinity");
assert_subtract({}, Infinity);
trace("//\"0.0\" - Infinity");
assert_subtract("0.0", Infinity);
trace("//\"NaN\" - Infinity");
assert_subtract("NaN", Infinity);
trace("//\"-0.0\" - Infinity");
assert_subtract("-0.0", Infinity);
trace("//\"Infinity\" - Infinity");
assert_subtract("Infinity", Infinity);
trace("//\"1.0\" - Infinity");
assert_subtract("1.0", Infinity);
trace("//\"-1.0\" - Infinity");
assert_subtract("-1.0", Infinity);
trace("//\"0xFF1306\" - Infinity");
assert_subtract("0xFF1306", Infinity);
trace("//true - 1.0");
assert_subtract(true, 1.0);
trace("//false - 1.0");
assert_subtract(false, 1.0);
trace("//null - 1.0");
assert_subtract(null, 1.0);
trace("//undefined - 1.0");
assert_subtract(undefined, 1.0);
trace("//\"\" - 1.0");
assert_subtract("", 1.0);
trace("//\"str\" - 1.0");
assert_subtract("str", 1.0);
trace("//\"true\" - 1.0");
assert_subtract("true", 1.0);
trace("//\"false\" - 1.0");
assert_subtract("false", 1.0);
trace("//0.0 - 1.0");
assert_subtract(0.0, 1.0);
trace("//NaN - 1.0");
assert_subtract(NaN, 1.0);
trace("//-0.0 - 1.0");
assert_subtract(-0.0, 1.0);
trace("//Infinity - 1.0");
assert_subtract(Infinity, 1.0);
trace("//1.0 - 1.0");
assert_subtract(1.0, 1.0);
trace("//-1.0 - 1.0");
assert_subtract(-1.0, 1.0);
trace("//0xFF1306 - 1.0");
assert_subtract(0xFF1306, 1.0);
trace("//new Object() - 1.0");
assert_subtract({}, 1.0);
trace("//\"0.0\" - 1.0");
assert_subtract("0.0", 1.0);
trace("//\"NaN\" - 1.0");
assert_subtract("NaN", 1.0);
trace("//\"-0.0\" - 1.0");
assert_subtract("-0.0", 1.0);
trace("//\"Infinity\" - 1.0");
assert_subtract("Infinity", 1.0);
trace("//\"1.0\" - 1.0");
assert_subtract("1.0", 1.0);
trace("//\"-1.0\" - 1.0");
assert_subtract("-1.0", 1.0);
trace("//\"0xFF1306\" - 1.0");
assert_subtract("0xFF1306", 1.0);
trace("//true - -1.0");
assert_subtract(true, -1.0);
trace("//false - -1.0");
assert_subtract(false, -1.0);
trace("//null - -1.0");
assert_subtract(null, -1.0);
trace("//undefined - -1.0");
assert_subtract(undefined, -1.0);
trace("//\"\" - -1.0");
assert_subtract("", -1.0);
trace("//\"str\" - -1.0");
assert_subtract("str", -1.0);
trace("//\"true\" - -1.0");
assert_subtract("true", -1.0);
trace("//\"false\" - -1.0");
assert_subtract("false", -1.0);
trace("//0.0 - -1.0");
assert_subtract(0.0, -1.0);
trace("//NaN - -1.0");
assert_subtract(NaN, -1.0);
trace("//-0.0 - -1.0");
assert_subtract(-0.0, -1.0);
trace("//Infinity - -1.0");
assert_subtract(Infinity, -1.0);
trace("//1.0 - -1.0");
assert_subtract(1.0, -1.0);
trace("//-1.0 - -1.0");
assert_subtract(-1.0, -1.0);
trace("//0xFF1306 - -1.0");
assert_subtract(0xFF1306, -1.0);
trace("//new Object() - -1.0");
assert_subtract({}, -1.0);
trace("//\"0.0\" - -1.0");
assert_subtract("0.0", -1.0);
trace("//\"NaN\" - -1.0");
assert_subtract("NaN", -1.0);
trace("//\"-0.0\" - -1.0");
assert_subtract("-0.0", -1.0);
trace("//\"Infinity\" - -1.0");
assert_subtract("Infinity", -1.0);
trace("//\"1.0\" - -1.0");
assert_subtract("1.0", -1.0);
trace("//\"-1.0\" - -1.0");
assert_subtract("-1.0", -1.0);
trace("//\"0xFF1306\" - -1.0");
assert_subtract("0xFF1306", -1.0);
trace("//true - 0xFF1306");
assert_subtract(true, 0xFF1306);
trace("//false - 0xFF1306");
assert_subtract(false, 0xFF1306);
trace("//null - 0xFF1306");
assert_subtract(null, 0xFF1306);
trace("//undefined - 0xFF1306");
assert_subtract(undefined, 0xFF1306);
trace("//\"\" - 0xFF1306");
assert_subtract("", 0xFF1306);
trace("//\"str\" - 0xFF1306");
assert_subtract("str", 0xFF1306);
trace("//\"true\" - 0xFF1306");
assert_subtract("true", 0xFF1306);
trace("//\"false\" - 0xFF1306");
assert_subtract("false", 0xFF1306);
trace("//0.0 - 0xFF1306");
assert_subtract(0.0, 0xFF1306);
trace("//NaN - 0xFF1306");
assert_subtract(NaN, 0xFF1306);
trace("//-0.0 - 0xFF1306");
assert_subtract(-0.0, 0xFF1306);
trace("//Infinity - 0xFF1306");
assert_subtract(Infinity, 0xFF1306);
trace("//1.0 - 0xFF1306");
assert_subtract(1.0, 0xFF1306);
trace("//-1.0 - 0xFF1306");
assert_subtract(-1.0, 0xFF1306);
trace("//0xFF1306 - 0xFF1306");
assert_subtract(0xFF1306, 0xFF1306);
trace("//new Object() - 0xFF1306");
assert_subtract({}, 0xFF1306);
trace("//\"0.0\" - 0xFF1306");
assert_subtract("0.0", 0xFF1306);
trace("//\"NaN\" - 0xFF1306");
assert_subtract("NaN", 0xFF1306);
trace("//\"-0.0\" - 0xFF1306");
assert_subtract("-0.0", 0xFF1306);
trace("//\"Infinity\" - 0xFF1306");
assert_subtract("Infinity", 0xFF1306);
trace("//\"1.0\" - 0xFF1306");
assert_subtract("1.0", 0xFF1306);
trace("//\"-1.0\" - 0xFF1306");
assert_subtract("-1.0", 0xFF1306);
trace("//\"0xFF1306\" - 0xFF1306");
assert_subtract("0xFF1306", 0xFF1306);
trace("//true - new Object()");
assert_subtract(true, {});
trace("//false - new Object()");
assert_subtract(false, {});
trace("//null - new Object()");
assert_subtract(null, {});
trace("//undefined - new Object()");
assert_subtract(undefined, {});
trace("//\"\" - new Object()");
assert_subtract("", {});
trace("//\"str\" - new Object()");
assert_subtract("str", {});
trace("//\"true\" - new Object()");
assert_subtract("true", {});
trace("//\"false\" - new Object()");
assert_subtract("false", {});
trace("//0.0 - new Object()");
assert_subtract(0.0, {});
trace("//NaN - new Object()");
assert_subtract(NaN, {});
trace("//-0.0 - new Object()");
assert_subtract(-0.0, {});
trace("//Infinity - new Object()");
assert_subtract(Infinity, {});
trace("//1.0 - new Object()");
assert_subtract(1.0, {});
trace("//-1.0 - new Object()");
assert_subtract(-1.0, {});
trace("//0xFF1306 - new Object()");
assert_subtract(0xFF1306, {});
trace("//new Object() - new Object()");
assert_subtract({}, {});
trace("//\"0.0\" - new Object()");
assert_subtract("0.0", {});
trace("//\"NaN\" - new Object()");
assert_subtract("NaN", {});
trace("//\"-0.0\" - new Object()");
assert_subtract("-0.0", {});
trace("//\"Infinity\" - new Object()");
assert_subtract("Infinity", {});
trace("//\"1.0\" - new Object()");
assert_subtract("1.0", {});
trace("//\"-1.0\" - new Object()");
assert_subtract("-1.0", {});
trace("//\"0xFF1306\" - new Object()");
assert_subtract("0xFF1306", {});
trace("//true - \"0.0\"");
assert_subtract(true, "0.0");
trace("//false - \"0.0\"");
assert_subtract(false, "0.0");
trace("//null - \"0.0\"");
assert_subtract(null, "0.0");
trace("//undefined - \"0.0\"");
assert_subtract(undefined, "0.0");
trace("//\"\" - \"0.0\"");
assert_subtract("", "0.0");
trace("//\"str\" - \"0.0\"");
assert_subtract("str", "0.0");
trace("//\"true\" - \"0.0\"");
assert_subtract("true", "0.0");
trace("//\"false\" - \"0.0\"");
assert_subtract("false", "0.0");
trace("//0.0 - \"0.0\"");
assert_subtract(0.0, "0.0");
trace("//NaN - \"0.0\"");
assert_subtract(NaN, "0.0");
trace("//-0.0 - \"0.0\"");
assert_subtract(-0.0, "0.0");
trace("//Infinity - \"0.0\"");
assert_subtract(Infinity, "0.0");
trace("//1.0 - \"0.0\"");
assert_subtract(1.0, "0.0");
trace("//-1.0 - \"0.0\"");
assert_subtract(-1.0, "0.0");
trace("//0xFF1306 - \"0.0\"");
assert_subtract(0xFF1306, "0.0");
trace("//new Object() - \"0.0\"");
assert_subtract({}, "0.0");
trace("//\"0.0\" - \"0.0\"");
assert_subtract("0.0", "0.0");
trace("//\"NaN\" - \"0.0\"");
assert_subtract("NaN", "0.0");
trace("//\"-0.0\" - \"0.0\"");
assert_subtract("-0.0", "0.0");
trace("//\"Infinity\" - \"0.0\"");
assert_subtract("Infinity", "0.0");
trace("//\"1.0\" - \"0.0\"");
assert_subtract("1.0", "0.0");
trace("//\"-1.0\" - \"0.0\"");
assert_subtract("-1.0", "0.0");
trace("//\"0xFF1306\" - \"0.0\"");
assert_subtract("0xFF1306", "0.0");
trace("//true - \"NaN\"");
assert_subtract(true, "NaN");
trace("//false - \"NaN\"");
assert_subtract(false, "NaN");
trace("//null - \"NaN\"");
assert_subtract(null, "NaN");
trace("//undefined - \"NaN\"");
assert_subtract(undefined, "NaN");
trace("//\"\" - \"NaN\"");
assert_subtract("", "NaN");
trace("//\"str\" - \"NaN\"");
assert_subtract("str", "NaN");
trace("//\"true\" - \"NaN\"");
assert_subtract("true", "NaN");
trace("//\"false\" - \"NaN\"");
assert_subtract("false", "NaN");
trace("//0.0 - \"NaN\"");
assert_subtract(0.0, "NaN");
trace("//NaN - \"NaN\"");
assert_subtract(NaN, "NaN");
trace("//-0.0 - \"NaN\"");
assert_subtract(-0.0, "NaN");
trace("//Infinity - \"NaN\"");
assert_subtract(Infinity, "NaN");
trace("//1.0 - \"NaN\"");
assert_subtract(1.0, "NaN");
trace("//-1.0 - \"NaN\"");
assert_subtract(-1.0, "NaN");
trace("//0xFF1306 - \"NaN\"");
assert_subtract(0xFF1306, "NaN");
trace("//new Object() - \"NaN\"");
assert_subtract({}, "NaN");
trace("//\"0.0\" - \"NaN\"");
assert_subtract("0.0", "NaN");
trace("//\"NaN\" - \"NaN\"");
assert_subtract("NaN", "NaN");
trace("//\"-0.0\" - \"NaN\"");
assert_subtract("-0.0", "NaN");
trace("//\"Infinity\" - \"NaN\"");
assert_subtract("Infinity", "NaN");
trace("//\"1.0\" - \"NaN\"");
assert_subtract("1.0", "NaN");
trace("//\"-1.0\" - \"NaN\"");
assert_subtract("-1.0", "NaN");
trace("//\"0xFF1306\" - \"NaN\"");
assert_subtract("0xFF1306", "NaN");
trace("//true - \"-0.0\"");
assert_subtract(true, "-0.0");
trace("//false - \"-0.0\"");
assert_subtract(false, "-0.0");
trace("//null - \"-0.0\"");
assert_subtract(null, "-0.0");
trace("//undefined - \"-0.0\"");
assert_subtract(undefined, "-0.0");
trace("//\"\" - \"-0.0\"");
assert_subtract("", "-0.0");
trace("//\"str\" - \"-0.0\"");
assert_subtract("str", "-0.0");
trace("//\"true\" - \"-0.0\"");
assert_subtract("true", "-0.0");
trace("//\"false\" - \"-0.0\"");
assert_subtract("false", "-0.0");
trace("//0.0 - \"-0.0\"");
assert_subtract(0.0, "-0.0");
trace("//NaN - \"-0.0\"");
assert_subtract(NaN, "-0.0");
trace("//-0.0 - \"-0.0\"");
assert_subtract(-0.0, "-0.0");
trace("//Infinity - \"-0.0\"");
assert_subtract(Infinity, "-0.0");
trace("//1.0 - \"-0.0\"");
assert_subtract(1.0, "-0.0");
trace("//-1.0 - \"-0.0\"");
assert_subtract(-1.0, "-0.0");
trace("//0xFF1306 - \"-0.0\"");
assert_subtract(0xFF1306, "-0.0");
trace("//new Object() - \"-0.0\"");
assert_subtract({}, "-0.0");
trace("//\"0.0\" - \"-0.0\"");
assert_subtract("0.0", "-0.0");
trace("//\"NaN\" - \"-0.0\"");
assert_subtract("NaN", "-0.0");
trace("//\"-0.0\" - \"-0.0\"");
assert_subtract("-0.0", "-0.0");
trace("//\"Infinity\" - \"-0.0\"");
assert_subtract("Infinity", "-0.0");
trace("//\"1.0\" - \"-0.0\"");
assert_subtract("1.0", "-0.0");
trace("//\"-1.0\" - \"-0.0\"");
assert_subtract("-1.0", "-0.0");
trace("//\"0xFF1306\" - \"-0.0\"");
assert_subtract("0xFF1306", "-0.0");
trace("//true - \"Infinity\"");
assert_subtract(true, "Infinity");
trace("//false - \"Infinity\"");
assert_subtract(false, "Infinity");
trace("//null - \"Infinity\"");
assert_subtract(null, "Infinity");
trace("//undefined - \"Infinity\"");
assert_subtract(undefined, "Infinity");
trace("//\"\" - \"Infinity\"");
assert_subtract("", "Infinity");
trace("//\"str\" - \"Infinity\"");
assert_subtract("str", "Infinity");
trace("//\"true\" - \"Infinity\"");
assert_subtract("true", "Infinity");
trace("//\"false\" - \"Infinity\"");
assert_subtract("false", "Infinity");
trace("//0.0 - \"Infinity\"");
assert_subtract(0.0, "Infinity");
trace("//NaN - \"Infinity\"");
assert_subtract(NaN, "Infinity");
trace("//-0.0 - \"Infinity\"");
assert_subtract(-0.0, "Infinity");
trace("//Infinity - \"Infinity\"");
assert_subtract(Infinity, "Infinity");
trace("//1.0 - \"Infinity\"");
assert_subtract(1.0, "Infinity");
trace("//-1.0 - \"Infinity\"");
assert_subtract(-1.0, "Infinity");
trace("//0xFF1306 - \"Infinity\"");
assert_subtract(0xFF1306, "Infinity");
trace("//new Object() - \"Infinity\"");
assert_subtract({}, "Infinity");
trace("//\"0.0\" - \"Infinity\"");
assert_subtract("0.0", "Infinity");
trace("//\"NaN\" - \"Infinity\"");
assert_subtract("NaN", "Infinity");
trace("//\"-0.0\" - \"Infinity\"");
assert_subtract("-0.0", "Infinity");
trace("//\"Infinity\" - \"Infinity\"");
assert_subtract("Infinity", "Infinity");
trace("//\"1.0\" - \"Infinity\"");
assert_subtract("1.0", "Infinity");
trace("//\"-1.0\" - \"Infinity\"");
assert_subtract("-1.0", "Infinity");
trace("//\"0xFF1306\" - \"Infinity\"");
assert_subtract("0xFF1306", "Infinity");
trace("//true - \"1.0\"");
assert_subtract(true, "1.0");
trace("//false - \"1.0\"");
assert_subtract(false, "1.0");
trace("//null - \"1.0\"");
assert_subtract(null, "1.0");
trace("//undefined - \"1.0\"");
assert_subtract(undefined, "1.0");
trace("//\"\" - \"1.0\"");
assert_subtract("", "1.0");
trace("//\"str\" - \"1.0\"");
assert_subtract("str", "1.0");
trace("//\"true\" - \"1.0\"");
assert_subtract("true", "1.0");
trace("//\"false\" - \"1.0\"");
assert_subtract("false", "1.0");
trace("//0.0 - \"1.0\"");
assert_subtract(0.0, "1.0");
trace("//NaN - \"1.0\"");
assert_subtract(NaN, "1.0");
trace("//-0.0 - \"1.0\"");
assert_subtract(-0.0, "1.0");
trace("//Infinity - \"1.0\"");
assert_subtract(Infinity, "1.0");
trace("//1.0 - \"1.0\"");
assert_subtract(1.0, "1.0");
trace("//-1.0 - \"1.0\"");
assert_subtract(-1.0, "1.0");
trace("//0xFF1306 - \"1.0\"");
assert_subtract(0xFF1306, "1.0");
trace("//new Object() - \"1.0\"");
assert_subtract({}, "1.0");
trace("//\"0.0\" - \"1.0\"");
assert_subtract("0.0", "1.0");
trace("//\"NaN\" - \"1.0\"");
assert_subtract("NaN", "1.0");
trace("//\"-0.0\" - \"1.0\"");
assert_subtract("-0.0", "1.0");
trace("//\"Infinity\" - \"1.0\"");
assert_subtract("Infinity", "1.0");
trace("//\"1.0\" - \"1.0\"");
assert_subtract("1.0", "1.0");
trace("//\"-1.0\" - \"1.0\"");
assert_subtract("-1.0", "1.0");
trace("//\"0xFF1306\" - \"1.0\"");
assert_subtract("0xFF1306", "1.0");
trace("//true - \"-1.0\"");
assert_subtract(true, "-1.0");
trace("//false - \"-1.0\"");
assert_subtract(false, "-1.0");
trace("//null - \"-1.0\"");
assert_subtract(null, "-1.0");
trace("//undefined - \"-1.0\"");
assert_subtract(undefined, "-1.0");
trace("//\"\" - \"-1.0\"");
assert_subtract("", "-1.0");
trace("//\"str\" - \"-1.0\"");
assert_subtract("str", "-1.0");
trace("//\"true\" - \"-1.0\"");
assert_subtract("true", "-1.0");
trace("//\"false\" - \"-1.0\"");
assert_subtract("false", "-1.0");
trace("//0.0 - \"-1.0\"");
assert_subtract(0.0, "-1.0");
trace("//NaN - \"-1.0\"");
assert_subtract(NaN, "-1.0");
trace("//-0.0 - \"-1.0\"");
assert_subtract(-0.0, "-1.0");
trace("//Infinity - \"-1.0\"");
assert_subtract(Infinity, "-1.0");
trace("//1.0 - \"-1.0\"");
assert_subtract(1.0, "-1.0");
trace("//-1.0 - \"-1.0\"");
assert_subtract(-1.0, "-1.0");
trace("//0xFF1306 - \"-1.0\"");
assert_subtract(0xFF1306, "-1.0");
trace("//new Object() - \"-1.0\"");
assert_subtract({}, "-1.0");
trace("//\"0.0\" - \"-1.0\"");
assert_subtract("0.0", "-1.0");
trace("//\"NaN\" - \"-1.0\"");
assert_subtract("NaN", "-1.0");
trace("//\"-0.0\" - \"-1.0\"");
assert_subtract("-0.0", "-1.0");
trace("//\"Infinity\" - \"-1.0\"");
assert_subtract("Infinity", "-1.0");
trace("//\"1.0\" - \"-1.0\"");
assert_subtract("1.0", "-1.0");
trace("//\"-1.0\" - \"-1.0\"");
assert_subtract("-1.0", "-1.0");
trace("//\"0xFF1306\" - \"-1.0\"");
assert_subtract("0xFF1306", "-1.0");
trace("//true - \"0xFF1306\"");
assert_subtract(true, "0xFF1306");
trace("//false - \"0xFF1306\"");
assert_subtract(false, "0xFF1306");
trace("//null - \"0xFF1306\"");
assert_subtract(null, "0xFF1306");
trace("//undefined - \"0xFF1306\"");
assert_subtract(undefined, "0xFF1306");
trace("//\"\" - \"0xFF1306\"");
assert_subtract("", "0xFF1306");
trace("//\"str\" - \"0xFF1306\"");
assert_subtract("str", "0xFF1306");
trace("//\"true\" - \"0xFF1306\"");
assert_subtract("true", "0xFF1306");
trace("//\"false\" - \"0xFF1306\"");
assert_subtract("false", "0xFF1306");
trace("//0.0 - \"0xFF1306\"");
assert_subtract(0.0, "0xFF1306");
trace("//NaN - \"0xFF1306\"");
assert_subtract(NaN, "0xFF1306");
trace("//-0.0 - \"0xFF1306\"");
assert_subtract(-0.0, "0xFF1306");
trace("//Infinity - \"0xFF1306\"");
assert_subtract(Infinity, "0xFF1306");
trace("//1.0 - \"0xFF1306\"");
assert_subtract(1.0, "0xFF1306");
trace("//-1.0 - \"0xFF1306\"");
assert_subtract(-1.0, "0xFF1306");
trace("//0xFF1306 - \"0xFF1306\"");
assert_subtract(0xFF1306, "0xFF1306");
trace("//new Object() - \"0xFF1306\"");
assert_subtract({}, "0xFF1306");
trace("//\"0.0\" - \"0xFF1306\"");
assert_subtract("0.0", "0xFF1306");
trace("//\"NaN\" - \"0xFF1306\"");
assert_subtract("NaN", "0xFF1306");
trace("//\"-0.0\" - \"0xFF1306\"");
assert_subtract("-0.0", "0xFF1306");
trace("//\"Infinity\" - \"0xFF1306\"");
assert_subtract("Infinity", "0xFF1306");
trace("//\"1.0\" - \"0xFF1306\"");
assert_subtract("1.0", "0xFF1306");
trace("//\"-1.0\" - \"0xFF1306\"");
assert_subtract("-1.0", "0xFF1306");
trace("//\"0xFF1306\" - \"0xFF1306\"");
assert_subtract("0xFF1306", "0xFF1306");