void BigIntTest::testConstructionFromLongLong()
{ // small positive number
{
BigInt bi(static_cast<sal_Int64>(42));
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(!bi.IsNeg());
CPPUNIT_ASSERT(!bi.IsBig());
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(42), static_cast<sal_Int32>(bi));
}
// small negative number
{
BigInt bi(static_cast<sal_Int64>(-42));
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(bi.IsNeg());
CPPUNIT_ASSERT(!bi.IsBig());
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(-42), static_cast<sal_Int32>(bi));
}
// positive number just fitting to sal_Int32
{
BigInt bi(static_cast<sal_Int64>(std::numeric_limits<sal_Int32>::max()));
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(!bi.IsNeg());
CPPUNIT_ASSERT(!bi.IsBig());
CPPUNIT_ASSERT_EQUAL(std::numeric_limits<sal_Int32>::max(), static_cast<sal_Int32>(bi));
}
// negative number just fitting to sal_Int32
{
BigInt bi(static_cast<sal_Int64>(std::numeric_limits<sal_Int32>::min()));
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(bi.IsNeg());
CPPUNIT_ASSERT(!bi.IsBig());
CPPUNIT_ASSERT_EQUAL(std::numeric_limits<sal_Int32>::min(), static_cast<sal_Int32>(bi));
}
// positive number not fitting to sal_Int32
{
BigInt bi(static_cast<sal_Int64>(std::numeric_limits<sal_Int32>::max()) + 1);
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(!bi.IsNeg());
CPPUNIT_ASSERT(bi.IsBig());
}
// negative number not fitting to sal_Int32
{
BigInt bi(static_cast<sal_Int64>(std::numeric_limits<sal_Int32>::min()) - 1);
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(bi.IsNeg());
CPPUNIT_ASSERT(bi.IsBig());
}
// max possible sal_Int64 negative number
{
BigInt bi(static_cast<sal_Int64>(std::numeric_limits<sal_Int64>::min()));
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(bi.IsNeg());
CPPUNIT_ASSERT(bi.IsBig());
CPPUNIT_ASSERT_EQUAL(std::numeric_limits<sal_Int64>::min(), static_cast<sal_Int64>(bi));
}
// max possible sal_Int64 positive number
{
BigInt bi(static_cast<sal_Int64>(std::numeric_limits<sal_Int64>::max()));
CPPUNIT_ASSERT(!bi.IsZero());
CPPUNIT_ASSERT(!bi.IsNeg());
CPPUNIT_ASSERT(bi.IsBig());
CPPUNIT_ASSERT_EQUAL(std::numeric_limits<sal_Int64>::max(), static_cast<sal_Int64>(bi));
}
}
void BigIntTest::testLenB1()
{
BigInt dy(2634022912);
sal_Int64 md(-4177526784);
sal_Int64 mn(2634022912);
dy *= md;
dy -= (mn - 1) / 2;
dy /= mn;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.