mirror of
https://github.com/open-goal/jak-project
synced 2026-07-08 14:36:52 -04:00
[decompiler] Print floats as neatly as possible (#307)
* [decompiler] Print floats as neatly as possible * style fixes * more * Update test.bat * Add and fix tests * Jesus christ fine
This commit is contained in:
+22
-12
@@ -155,11 +155,11 @@ TEST(GoosBuiltins, Addition) {
|
||||
|
||||
// two element adding
|
||||
EXPECT_EQ(e(i, "(+ 1 2)"), "3");
|
||||
EXPECT_EQ(e(i, "(+ 1.1 2.2)"), "3.300000");
|
||||
EXPECT_EQ(e(i, "(+ 1.1 2.2)"), "3.3");
|
||||
|
||||
// mixed
|
||||
EXPECT_EQ(e(i, "(+ 1 1.1)"), "2");
|
||||
EXPECT_EQ(e(i, "(+ 1.1 1)"), "2.100000");
|
||||
EXPECT_EQ(e(i, "(+ 1.1 1)"), "2.1");
|
||||
|
||||
// many, and check rounding happens at the right time
|
||||
EXPECT_EQ(e(i, "(+ 1 1.4 1.4 1.4 1.4)"), "5");
|
||||
@@ -178,11 +178,11 @@ TEST(GoosBuiltins, Multiplication) {
|
||||
|
||||
// two element adding
|
||||
EXPECT_EQ(e(i, "(* 3 2)"), "6");
|
||||
EXPECT_EQ(e(i, "(* 1.1 2.2)"), "2.420000");
|
||||
EXPECT_EQ(e(i, "(* 1.1 2.2)"), "2.42");
|
||||
|
||||
// mixed
|
||||
EXPECT_EQ(e(i, "(* 1 1.1)"), "1");
|
||||
EXPECT_EQ(e(i, "(* 1.1 1)"), "1.100000");
|
||||
EXPECT_EQ(e(i, "(* 1.1 1)"), "1.1");
|
||||
|
||||
// many, and check rounding happens at the right time
|
||||
EXPECT_EQ(e(i, "(* 3 1.4 1.4 1.4 1.4)"), "3");
|
||||
@@ -201,11 +201,11 @@ TEST(GoosBuiltins, Subtraction) {
|
||||
|
||||
// two element adding
|
||||
EXPECT_EQ(e(i, "(- 3 2)"), "1");
|
||||
EXPECT_EQ(e(i, "(- 1.1 2.2)"), "-1.100000");
|
||||
EXPECT_EQ(e(i, "(- 1.1 2.2)"), "-1.1");
|
||||
|
||||
// mixed
|
||||
EXPECT_EQ(e(i, "(- 1 1.1)"), "0");
|
||||
EXPECT_EQ(e(i, "(- 1.1 1)"), "0.100000");
|
||||
EXPECT_EQ(e(i, "(- 1.1 1)"), "0.1");
|
||||
|
||||
// many, and check rounding happens at the right time
|
||||
EXPECT_EQ(e(i, "(- 3 1.4 1.4 1.4 1.4)"), "-1");
|
||||
@@ -221,11 +221,11 @@ TEST(GoosBuiltins, Division) {
|
||||
|
||||
// two element adding
|
||||
EXPECT_EQ(e(i, "(/ 16 2)"), "8");
|
||||
EXPECT_EQ(e(i, "(/ 9. 2.)"), "4.500000");
|
||||
EXPECT_EQ(e(i, "(/ 9. 2.)"), "4.5");
|
||||
|
||||
// mixed
|
||||
EXPECT_EQ(e(i, "(/ 3 2.)"), "1");
|
||||
EXPECT_EQ(e(i, "(/ 3. 2)"), "1.500000");
|
||||
EXPECT_EQ(e(i, "(/ 3. 2)"), "1.5");
|
||||
|
||||
i.disable_printfs();
|
||||
for (auto x : {"(/ 1)", "(/ 1.0)", "(/)", "(/ 'a)", "(/ #\\a)", "(/ 1 :test 2)",
|
||||
@@ -494,7 +494,7 @@ TEST(GoosEval, EvalSelfEvaluating) {
|
||||
EXPECT_EQ(e(i, "010"), "10");
|
||||
EXPECT_EQ(e(i, "-010"), "-10");
|
||||
EXPECT_EQ(e(i, "\"test\""), "\"test\"");
|
||||
EXPECT_EQ(e(i, "1.2"), "1.200000"); // this depends on how we decide to print floats
|
||||
EXPECT_EQ(e(i, "1.2"), "1.2"); // this depends on how we decide to print floats
|
||||
EXPECT_EQ(e(i, "#\\a"), "#\\a");
|
||||
EXPECT_EQ(e(i, "#\\\\n"), "#\\\\n");
|
||||
|
||||
@@ -502,6 +502,16 @@ TEST(GoosEval, EvalSelfEvaluating) {
|
||||
EXPECT_ANY_THROW(e(i, "#\\\\a"));
|
||||
}
|
||||
|
||||
TEST(GoosEval, FloatEvalAndPrinting) {
|
||||
Interpreter i;
|
||||
EXPECT_EQ(e(i, "0.9999979734420776"), "0.999998");
|
||||
EXPECT_EQ(e(i, "0.999998"), e(i, "0.9999979734420776"));
|
||||
EXPECT_EQ(e(i, "1."), "1.0");
|
||||
EXPECT_EQ(e(i, ".03"), "0.03");
|
||||
EXPECT_EQ(e(i, "0.02999999932944774627685546875"), e(i, "0.03"));
|
||||
EXPECT_EQ(e(i, "0.5883"), e(i, "0.5882999897"));
|
||||
}
|
||||
|
||||
/*!
|
||||
* Check named "keyword" arguments
|
||||
*/
|
||||
@@ -1020,8 +1030,8 @@ TEST(GoosObject, Float) {
|
||||
EXPECT_TRUE(different == same);
|
||||
|
||||
// check print and inspect
|
||||
EXPECT_EQ(different.print(), "-12.340000");
|
||||
EXPECT_EQ(different.inspect(), "[float] -12.340000\n");
|
||||
EXPECT_EQ(different.print(), "-12.34");
|
||||
EXPECT_EQ(different.inspect(), "[float] -12.34\n");
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1300,4 +1310,4 @@ TEST(GoosBuiltins, Format) {
|
||||
TEST(GoosBuiltins, Error) {
|
||||
Interpreter i;
|
||||
EXPECT_ANY_THROW(e(i, "(error \"hi\")"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user