Add method versions of operators
This commit is contained in:
parent
2a10c5480a
commit
3946dd2b1c
3 changed files with 61 additions and 0 deletions
25
fraction.cpp
25
fraction.cpp
|
@ -84,6 +84,31 @@ namespace FractionNS {
|
||||||
float Fraction::toFloat() const { return float(m_numerator) / m_denominator; }
|
float Fraction::toFloat() const { return float(m_numerator) / m_denominator; }
|
||||||
double Fraction::toDouble() const { return double(m_numerator) / m_denominator; }
|
double Fraction::toDouble() const { return double(m_numerator) / m_denominator; }
|
||||||
|
|
||||||
|
Fraction& Fraction::add(const Fraction& other) const {
|
||||||
|
return *this + other;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::add(const int n) const {
|
||||||
|
return *this + n;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::sub(const Fraction& other) const {
|
||||||
|
return *this - other;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::sub(const int n) const {
|
||||||
|
return *this - n;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::mul(const Fraction& other) const {
|
||||||
|
return *this * other;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::mul(const int n) const {
|
||||||
|
return *this * n;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::div(const Fraction& other) const {
|
||||||
|
return *this / other;
|
||||||
|
}
|
||||||
|
Fraction& Fraction::div(const int n) const {
|
||||||
|
return *this / n;
|
||||||
|
}
|
||||||
|
|
||||||
bool Fraction::operator==(const int n) const {
|
bool Fraction::operator==(const int n) const {
|
||||||
return m_denominator == 1
|
return m_denominator == 1
|
||||||
&& m_numerator == n;
|
&& m_numerator == n;
|
||||||
|
|
18
fraction.hpp
18
fraction.hpp
|
@ -63,6 +63,16 @@ namespace FractionNS {
|
||||||
|
|
||||||
// <=> would go here
|
// <=> would go here
|
||||||
|
|
||||||
|
// Method versions of operators
|
||||||
|
Fraction& add(const Fraction&) const;
|
||||||
|
Fraction& add(const int) const;
|
||||||
|
Fraction& sub(const Fraction&) const;
|
||||||
|
Fraction& sub(const int) const;
|
||||||
|
Fraction& mul(const Fraction&) const;
|
||||||
|
Fraction& mul(const int) const;
|
||||||
|
Fraction& div(const Fraction&) const;
|
||||||
|
Fraction& div(const int) const;
|
||||||
|
|
||||||
// Binary math operators
|
// Binary math operators
|
||||||
Fraction& operator+(const int) const;
|
Fraction& operator+(const int) const;
|
||||||
Fraction& operator+(const Fraction&) const;
|
Fraction& operator+(const Fraction&) const;
|
||||||
|
@ -98,5 +108,13 @@ namespace FractionNS {
|
||||||
// Unary operators
|
// Unary operators
|
||||||
Fraction& operator-() const;
|
Fraction& operator-() const;
|
||||||
Fraction& operator+() const; // Should return a copy of the Fraction.
|
Fraction& operator+() const; // Should return a copy of the Fraction.
|
||||||
|
|
||||||
|
/*
|
||||||
|
Fraction& operator++(); // ++x
|
||||||
|
Fraction& operator++(const int); // x++
|
||||||
|
|
||||||
|
Fraction& operator--(); // --x
|
||||||
|
Fraction& operator--(const int); // x--
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ private slots:
|
||||||
void test_greater_than_or_equal();
|
void test_greater_than_or_equal();
|
||||||
void test_inverse();
|
void test_inverse();
|
||||||
void test_pow();
|
void test_pow();
|
||||||
|
void test_math_methods();
|
||||||
};
|
};
|
||||||
|
|
||||||
FractionTest::FractionTest() {
|
FractionTest::FractionTest() {
|
||||||
|
@ -482,6 +483,23 @@ void FractionTest::test_pow() {
|
||||||
QVERIFY(threw_not_real_error);
|
QVERIFY(threw_not_real_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FractionTest::test_math_methods() {
|
||||||
|
const Fraction f1 = Fraction(9, 7);
|
||||||
|
const Fraction f2 = Fraction(3, 1);
|
||||||
|
|
||||||
|
QCOMPARE(f1 + 3, f1.add(3));
|
||||||
|
QCOMPARE(f1 + f2, f1.add(f2));
|
||||||
|
|
||||||
|
QCOMPARE(f1 - 3, f1.sub(3));
|
||||||
|
QCOMPARE(f1 - f2, f1.sub(f2));
|
||||||
|
|
||||||
|
QCOMPARE(f1 * 3, f1.mul(3));
|
||||||
|
QCOMPARE(f1 * f2, f1.mul(f2));
|
||||||
|
|
||||||
|
QCOMPARE(f1 / 3, f1.div(3));
|
||||||
|
QCOMPARE(f1 / f2, f1.div(f2));
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_APPLESS_MAIN(FractionTest)
|
QTEST_APPLESS_MAIN(FractionTest)
|
||||||
|
|
||||||
#include "tst_fractiontest.moc"
|
#include "tst_fractiontest.moc"
|
||||||
|
|
Reference in a new issue