126 lines
2.4 KiB
C++
126 lines
2.4 KiB
C++
#include <QtTest>
|
|
|
|
#include "fraction.hpp"
|
|
|
|
using namespace FractionNS;
|
|
|
|
class FractionTest : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
FractionTest();
|
|
~FractionTest();
|
|
|
|
private slots:
|
|
void test_constructor();
|
|
void test_display();
|
|
void test_equivalence();
|
|
void test_addition();
|
|
void test_inequivalence();
|
|
};
|
|
|
|
FractionTest::FractionTest()
|
|
{
|
|
|
|
}
|
|
|
|
FractionTest::~FractionTest()
|
|
{
|
|
|
|
}
|
|
|
|
void FractionTest::test_constructor()
|
|
{
|
|
// Normal fraction
|
|
Fraction f1 = Fraction(1, 2);
|
|
QCOMPARE(f1.getNumerator(), 1);
|
|
QCOMPARE(f1.getDenominator(), 2);
|
|
|
|
// Reducible fraction
|
|
Fraction f2 = Fraction(2,4);
|
|
QCOMPARE(f2.getNumerator(), 1);
|
|
QCOMPARE(f2.getDenominator(), 2);
|
|
|
|
// Negative fractions
|
|
Fraction f3 = Fraction(-1, 3);
|
|
QCOMPARE(f3.getNumerator(), -1);
|
|
QCOMPARE(f3.getDenominator(), 3);
|
|
|
|
Fraction f4 = Fraction(1, -3);
|
|
QCOMPARE(f4.getNumerator(), -1);
|
|
QCOMPARE(f4.getDenominator(), 3);
|
|
|
|
// Double negative (positive) fraction
|
|
Fraction f5 = Fraction(-2, -3);
|
|
QCOMPARE(f5.getNumerator(), 2);
|
|
QCOMPARE(f5.getDenominator(), 3);
|
|
}
|
|
|
|
void FractionTest::test_display()
|
|
{
|
|
// Normal fraction
|
|
Fraction f1 = Fraction(1, 2);
|
|
QCOMPARE(f1.display(), "1/2");
|
|
Fraction f2 = Fraction(1, 3);
|
|
QCOMPARE(f2.display(), "1/3");
|
|
|
|
// Fractions that reduce
|
|
Fraction f3 = Fraction(2, 4);
|
|
QCOMPARE(f3.display(), "1/2");
|
|
Fraction f4 = Fraction(982929, 123456);
|
|
QCOMPARE(f4.display(), "327643/41152");
|
|
|
|
// Negative Fractions
|
|
Fraction f5 = Fraction(-5, 2);
|
|
QCOMPARE(f5.display(), "-5/2");
|
|
}
|
|
|
|
void FractionTest::test_equivalence()
|
|
{
|
|
Fraction f1 = Fraction(1, 1);
|
|
Fraction f2 = Fraction(1, 1);
|
|
Fraction f3 = Fraction(-1, 1);
|
|
|
|
QCOMPARE(f1, f2);
|
|
|
|
QCOMPARE(f1, 1);
|
|
QCOMPARE(f1, 1.0);
|
|
QCOMPARE(f1, 1.0f);
|
|
|
|
QCOMPARE(f2, 1);
|
|
QCOMPARE(f2, 1.0);
|
|
QCOMPARE(f2, 1.0f);
|
|
|
|
QCOMPARE(f3, -1);
|
|
QCOMPARE(f3, -1.0);
|
|
QCOMPARE(f3, -1.0f);
|
|
}
|
|
void FractionTest::test_inequivalence() {
|
|
Fraction f1 = Fraction(1, 1);
|
|
Fraction f2 = Fraction(-1, 1);
|
|
Fraction f3 = Fraction(2, 3);
|
|
QVERIFY(f1 != f2);
|
|
QVERIFY(f2 != f3);
|
|
QVERIFY(f3 != f1);
|
|
|
|
QVERIFY(f3 != 1);
|
|
QVERIFY(f3 != 1.0);
|
|
QVERIFY(f3 != 1.0f);
|
|
}
|
|
|
|
void FractionTest::test_addition()
|
|
{
|
|
Fraction f1 = Fraction(1, 2);
|
|
QCOMPARE(f1 + 1.0f, 1.5f);
|
|
f1 += 1.0f;
|
|
QCOMPARE(f1, 1.5);
|
|
|
|
Fraction f2 = Fraction(1, 2);
|
|
QCOMPARE(f2 + 1.0f, 1.5f);
|
|
QCOMPARE(f2, 1.0f);
|
|
}
|
|
|
|
QTEST_APPLESS_MAIN(FractionTest)
|
|
|
|
#include "tst_fractiontest.moc"
|