#include #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"