[poincare] Add Integer tests

This commit is contained in:
Émilie Feral
2018-08-14 18:20:53 +02:00
parent 7f0dc24f8d
commit cf8bc636a7

View File

@@ -59,6 +59,25 @@ QUIZ_CASE(poincare_integer_compare) {
//FIXME: assert(Integer("0b1011") == Integer(11));
}
QUIZ_CASE(poincare_integer_properties) {
assert(Integer(0).isZero());
assert(!Integer(-1).isZero());
assert(!Integer(1).isZero());
assert(Integer(1).isOne());
assert(!Integer(-1).isOne());
assert(!Integer(0).isOne());
assert(Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216").isInfinity()); // 2^32^k_maxNumberOfDigits
assert(!Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215").isInfinity()); // 2^32^k_maxNumberOfDigits-1
assert(!Integer(0).isInfinity());
assert(Integer(8).isEven());
assert(!Integer(7).isEven());
assert(Integer(-8).isEven());
assert(!Integer(-7).isEven());
assert(!Integer(2).isNegative());
assert(Integer(-2).isNegative());
//assert(Integer::NumberOfBase10Digits(Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215")) == 308);
}
static inline void assert_add_to(const Integer i, const Integer j, const Integer k) {
assert(Integer::NaturalOrder(Integer::Addition(i, j), k) == 0);
}
@@ -164,50 +183,66 @@ QUIZ_CASE(poincare_integer_divide) {
assert_div_to(Integer("0"), Integer("-10"), Integer("0"), Integer("0"));
assert_div_to(Integer("0"), Integer("-123456789098760"), Integer("0"), Integer("0"));
assert_div_to(Integer("2305843009213693952"), Integer("2305843009213693921"), Integer("1"), Integer("31"));
//assert_div_to(Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216"), Integer("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216"), Integer(1), Integer(0));
}
#if 0
template<typename T>
void assert_integer_evals_to(const char * i, bool negative, T result) {
assert(Integer(i, negative).approximate<T>() == result);
static inline void assert_pow_to(const Integer i, const Integer j, const Integer k) {
assert(Integer::NaturalOrder(Integer::Power(i, j), k) == 0);
}
QUIZ_CASE(poincare_integer_pow) {
assert_pow_to(Integer(2), Integer(2), Integer(4));
assert_pow_to(Integer("12345678910111213141516171819202122232425"), Integer(2), Integer("152415787751564791571474464067365843004067618915106260955633159458990465721380625"));
}
// Simplify
template<typename T>
void assert_integer_evals_to(const char * i, T result) {
GlobalContext c;
assert(Integer(i).approximateToScalar<T>(c, Preferences::AngleUnit::Radian) == result);
}
#endif
QUIZ_CASE(poincare_integer_evaluate) {
#if 0
assert_integer_evals_to("1", false, 1.0f);
assert_integer_evals_to("1", false, 1.0);
assert_integer_evals_to("12345678", false, 12345678.0f);
assert_integer_evals_to("12345678", false, 12345678.0);
assert_integer_evals_to("0", false, 0.0f);
assert_integer_evals_to("0", false, 0.0);
assert_integer_evals_to("0", true, 0.0f);
assert_integer_evals_to("0", true, 0.0);
assert_integer_evals_to("1", true, -1.0f);
assert_integer_evals_to("1", true, -1.0);
assert_integer_evals_to("12345678", false, 12345678.0f);
assert_integer_evals_to("12345678", false, 12345678.0);
assert_integer_evals_to("4294967295", false, 4294967295.0f);
assert_integer_evals_to("4294967295", false, 4294967295.0);
assert_integer_evals_to("4294967296", true, -4294967296.0f);
assert_integer_evals_to("4294967296", true, -4294967296.0);
assert_integer_evals_to("2147483648", false, 2147483648.0f);
assert_integer_evals_to("2147483648", false, 2147483648.0);
assert_integer_evals_to("18446744073709551615", true, -18446744073709551615.0f);
assert_integer_evals_to("18446744073709551615", true, -18446744073709551615.0);
assert_integer_evals_to("18446744073709551616", true, -18446744073709551616.0f);
assert_integer_evals_to("18446744073709551616", true, -18446744073709551616.0);
assert_integer_evals_to("92233720372036854775808", false, 92233720372036854775808.0f);
assert_integer_evals_to("92233720372036854775808", false, 92233720372036854775808.0);
assert_integer_evals_to("134217720", false, 134217720.0f);
assert_integer_evals_to("134217720", false, 134217720.0);
assert_integer_evals_to("67108864", false, 67108864.0f);
assert_integer_evals_to("67108864", false, 67108864.0);
assert_integer_evals_to("33554432", false, 33554432.0f);
assert_integer_evals_to("33554432", false, 33554432.0);
assert_integer_evals_to("2", false, 2.0f);
assert_integer_evals_to("2", false, 2.0);
assert_integer_evals_to("4", false, 4.0f);
assert_integer_evals_to("4", false, 4.0);
#endif
assert_integer_evals_to("1", 1.0f);
assert_integer_evals_to("1", 1.0);
assert_integer_evals_to("12345678", 12345678.0f);
assert_integer_evals_to("12345678", 12345678.0);
assert_integer_evals_to("0", 0.0f);
assert_integer_evals_to("0", 0.0);
assert_integer_evals_to("-0", 0.0f);
assert_integer_evals_to("-0", 0.0);
assert_integer_evals_to("-1", -1.0f);
assert_integer_evals_to("-1", -1.0);
assert_integer_evals_to("12345678", 12345678.0f);
assert_integer_evals_to("12345678", 12345678.0);
assert_integer_evals_to("4294967295", 4294967295.0f);
assert_integer_evals_to("4294967295", 4294967295.0);
assert_integer_evals_to("-4294967296", -4294967296.0f);
assert_integer_evals_to("-4294967296", -4294967296.0);
assert_integer_evals_to("2147483648", 2147483648.0f);
assert_integer_evals_to("2147483648", 2147483648.0);
assert_integer_evals_to("-18446744073709551615", -18446744073709551615.0f);
assert_integer_evals_to("-18446744073709551615", -18446744073709551615.0);
assert_integer_evals_to("-18446744073709551616", -18446744073709551616.0f);
assert_integer_evals_to("-18446744073709551616", -18446744073709551616.0);
assert_integer_evals_to("92233720372036854775808", 92233720372036854775808.0f);
assert_integer_evals_to("92233720372036854775808", 92233720372036854775808.0);
assert_integer_evals_to("134217720", 134217720.0f);
assert_integer_evals_to("134217720", 134217720.0);
assert_integer_evals_to("67108864", 67108864.0f);
assert_integer_evals_to("67108864", 67108864.0);
assert_integer_evals_to("33554432", 33554432.0f);
assert_integer_evals_to("33554432", 33554432.0);
assert_integer_evals_to("2", 2.0f);
assert_integer_evals_to("2", 2.0);
assert_integer_evals_to("4", 4.0f);
assert_integer_evals_to("4", 4.0);
assert_integer_evals_to("179769313486230000002930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215", 1.7976931348622999E+308);
assert_integer_evals_to("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216", 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216.0);
assert_integer_evals_to("179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215", 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215.0);
}
//Layout
//
//SErialize