Question: Add as many test methods as possible to your JUnit test. You should strive to test all methods within RationalNumber for correct behavior - meaning

Add as many test methods as possible to your JUnit test. You should strive to test all methods within RationalNumber for correct behavior - meaning you'll need to change a few method visibilities from private to public before testing. You should also add "setters" (mutator) methods to enable testing these previously-private methods.

RationalNumber.java

public class RationalNumber

{

private int numerator, denominator;

// -----------------------------------------------------------------

// Constructor: Sets up the rational number by ensuring a nonzero

// denominator and making only the numerator signed.

// -----------------------------------------------------------------

public RationalNumber(int numer, int denom)

{

if (denom == 0)

denom = 1;

// Make the numerator "store" the sign

if (denom < 0)

{

numer = numer * -1;

denom = denom * -1;

}

numerator = numer;

denominator = denom;

reduce();

}

// -----------------------------------------------------------------

// Returns the numerator of this rational number.

// -----------------------------------------------------------------

public int getNumerator()

{

return numerator;

}

// -----------------------------------------------------------------

// Returns the denominator of this rational number.

// -----------------------------------------------------------------

public int getDenominator()

{

return denominator;

}

// -----------------------------------------------------------------

// Returns the reciprocal of this rational number.

// -----------------------------------------------------------------

public RationalNumber reciprocal()

{

return new RationalNumber(denominator, numerator);

}

// -----------------------------------------------------------------

// Adds this rational number to the one passed as a parameter.

// A common denominator is found by multiplying the individual

// denominators.

// -----------------------------------------------------------------

public RationalNumber add(RationalNumber op2)

{

int commonDenominator = denominator * op2.getDenominator();

int numerator1 = numerator * op2.getDenominator();

int numerator2 = op2.getNumerator() * denominator;

int sum = numerator1 + numerator2;

return new RationalNumber(sum, commonDenominator);

}

// -----------------------------------------------------------------

// Subtracts the rational number passed as a parameter from this

// rational number.

// -----------------------------------------------------------------

public RationalNumber subtract(RationalNumber op2)

{

int commonDenominator = denominator * op2.getDenominator();

int numerator1 = numerator * op2.getDenominator();

int numerator2 = op2.getNumerator() * denominator;

int difference = numerator1 - numerator2;

return new RationalNumber(difference, commonDenominator);

}

// -----------------------------------------------------------------

// Multiplies this rational number by the one passed as a

// parameter.

// -----------------------------------------------------------------

public RationalNumber multiply(RationalNumber op2)

{

int numer = numerator * op2.getNumerator();

int denom = denominator * op2.getDenominator();

return new RationalNumber(numer, denom);

}

// -----------------------------------------------------------------

// Divides this rational number by the one passed as a parameter

// by multiplying by the reciprocal of the second rational.

// -----------------------------------------------------------------

public RationalNumber divide(RationalNumber op2)

{

return multiply(op2.reciprocal());

}

// -----------------------------------------------------------------

// Determines if this rational number is equal to the one passed

// as a parameter. Assumes they are both reduced.

// -----------------------------------------------------------------

public boolean isLike(RationalNumber op2)

{

return (numerator == op2.getNumerator() && denominator == op2.getDenominator());

}

// -----------------------------------------------------------------

// Returns this rational number as a string.

// -----------------------------------------------------------------

public String toString()

{

String result;

if (numerator == 0)

result = "0";

else if (denominator == 1)

result = numerator + "";

else

result = numerator + "/" + denominator;

return result;

}

// -----------------------------------------------------------------

// Reduces this rational number by dividing both the numerator

// and the denominator by their greatest common divisor.

// -----------------------------------------------------------------

private void reduce()

{

if (numerator != 0)

{

int common = gcd(Math.abs(numerator), denominator);

numerator = numerator / common;

denominator = denominator / common;

}

}

// -----------------------------------------------------------------

// Computes and returns the greatest common divisor of the two

// positive parameters. Uses Euclid's algorithm.

// -----------------------------------------------------------------

private int gcd(int num1, int num2)

{

while (num1 != num2)

if (num1 > num2)

num1 = num1 - num2;

else

num2 = num2 - num1;

return num1;

}

}

RationalTester.java

public class RationalTester

{

// -----------------------------------------------------------------

// Creates some rational number objects and performs various

// operations on them.

// -----------------------------------------------------------------

public static void main(String[] args)

{

RationalNumber r1 = new RationalNumber(6, 8);

RationalNumber r2 = new RationalNumber(1, 3);

RationalNumber r3, r4, r5, r6, r7;

System.out.println("First rational number: " + r1);

System.out.println("Second rational number: " + r2);

if (r1.isLike(r2))

System.out.println("r1 and r2 are equal.");

else

System.out.println("r1 and r2 are NOT equal.");

r3 = r1.reciprocal();

System.out.println("The reciprocal of r1 is: " + r3);

r4 = r1.add(r2);

r5 = r1.subtract(r2);

r6 = r1.multiply(r2);

r7 = r1.divide(r2);

System.out.println("r1 + r2: " + r4.toString());

System.out.println("r1 - r2: " + r5);

System.out.println("r1 * r2: " + r6);

System.out.println("r1 / r2: " + r7);

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!