Edit
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
package Rational;
|
||||
|
||||
public class RationalTest {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("=== Testing Rational Operations ===\n");
|
||||
|
||||
// Create some rational numbers
|
||||
Rational r1 = new Rational(1, 2); // 1/2
|
||||
Rational r2 = new Rational(1, 3); // 1/3
|
||||
Rational r3 = new Rational(3, 4); // 3/4
|
||||
Rational r4 = new Rational(2, 5); // 2/5
|
||||
Rational r5 = new Rational(5, 1); // 5 (integer)
|
||||
|
||||
System.out.println("Created rational numbers:");
|
||||
System.out.println("r1 = " + r1);
|
||||
System.out.println("r2 = " + r2);
|
||||
System.out.println("r3 = " + r3);
|
||||
System.out.println("r4 = " + r4);
|
||||
System.out.println("r5 = " + r5);
|
||||
System.out.println();
|
||||
|
||||
// Test ADDITION
|
||||
System.out.println("=== ADDITION ===");
|
||||
System.out.println("Instance method - r1 + r2 = " + r1.add(r2));
|
||||
System.out.println("Static method - Rational.add(r1, r2) = " + Rational.add(r1, r2));
|
||||
System.out.println("Expected: 1/2 + 1/3 = 5/6");
|
||||
System.out.println("Decimal: " + r1.add(r2).toDouble());
|
||||
System.out.println();
|
||||
|
||||
// Test SUBTRACTION
|
||||
System.out.println("=== SUBTRACTION ===");
|
||||
System.out.println("Instance method - r1 - r2 = " + r1.subtract(r2));
|
||||
System.out.println("Static method - Rational.subtract(r1, r2) = " + Rational.subtract(r1, r2));
|
||||
System.out.println("Expected: 1/2 - 1/3 = 1/6");
|
||||
System.out.println("Decimal: " + r1.subtract(r2).toDouble());
|
||||
System.out.println();
|
||||
|
||||
// Test MULTIPLICATION
|
||||
System.out.println("=== MULTIPLICATION ===");
|
||||
System.out.println("Instance method - r1 * r3 = " + r1.multiply(r3));
|
||||
System.out.println("Static method - Rational.multiply(r1, r3) = " + Rational.multiply(r1, r3));
|
||||
System.out.println("Expected: 1/2 * 3/4 = 3/8");
|
||||
System.out.println("Decimal: " + r1.multiply(r3).toDouble());
|
||||
System.out.println();
|
||||
|
||||
// Test DIVISION
|
||||
System.out.println("=== DIVISION ===");
|
||||
System.out.println("Instance method - r1 ÷ r2 = " + r1.divide(r2));
|
||||
System.out.println("Static method - Rational.divide(r1, r2) = " + Rational.divide(r1, r2));
|
||||
System.out.println("Expected: 1/2 ÷ 1/3 = 3/2");
|
||||
System.out.println("Decimal: " + r1.divide(r2).toDouble());
|
||||
System.out.println();
|
||||
|
||||
// Test with negative numbers
|
||||
System.out.println("=== NEGATIVE NUMBERS ===");
|
||||
Rational neg1 = new Rational(-2, 3);
|
||||
Rational neg2 = new Rational(4, -5);
|
||||
System.out.println("neg1 = " + neg1); // Should show -2/3
|
||||
System.out.println("neg2 = " + neg2); // Should show -4/5
|
||||
System.out.println("neg1 + neg2 = " + neg1.add(neg2));
|
||||
System.out.println("-2/3 + -4/5 = (-10/15 + -12/15) = -22/15");
|
||||
System.out.println("neg1 * neg2 = " + neg1.multiply(neg2));
|
||||
System.out.println("(-2/3) * (-4/5) = 8/15");
|
||||
System.out.println();
|
||||
|
||||
// Test simplification
|
||||
System.out.println("=== SIMPLIFICATION ===");
|
||||
Rational r6 = new Rational(6, 8);
|
||||
Rational r7 = new Rational(10, 25);
|
||||
Rational r8 = new Rational(18, -24);
|
||||
System.out.println("6/8 simplified = " + r6);
|
||||
System.out.println("10/25 simplified = " + r7);
|
||||
System.out.println("18/-24 simplified = " + r8);
|
||||
System.out.println();
|
||||
|
||||
// Test chaining operations
|
||||
System.out.println("=== CHAINING OPERATIONS ===");
|
||||
Rational result = r1.add(r2).multiply(r3).divide(r4);
|
||||
System.out.println("((r1 + r2) * r3) ÷ r4 = " + result);
|
||||
System.out.println("((1/2 + 1/3) * 3/4) ÷ 2/5 = (5/6 * 3/4) ÷ 2/5 = (15/24) ÷ 2/5 = 15/24 * 5/2 = 75/48 = 25/16");
|
||||
System.out.println("Decimal: " + result.toDouble());
|
||||
System.out.println();
|
||||
|
||||
// Test integer handling
|
||||
System.out.println("=== INTEGER HANDLING ===");
|
||||
System.out.println("r5 = " + r5); // Should show 5, not 5/1
|
||||
System.out.println("r5 + r1 = " + r5.add(r1));
|
||||
System.out.println("5 + 1/2 = 11/2");
|
||||
System.out.println("r1 * r5 = " + r1.multiply(r5));
|
||||
System.out.println("1/2 * 5 = 5/2");
|
||||
System.out.println();
|
||||
|
||||
// Test exception handling
|
||||
System.out.println("=== EXCEPTION TEST ===");
|
||||
try {
|
||||
Rational invalid = new Rational(1, 0);
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Caught exception: " + e.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
Rational zero = new Rational(0, 1);
|
||||
Rational divisionByZero = r1.divide(zero);
|
||||
} catch (ArithmeticException e) {
|
||||
System.out.println("Caught division by zero: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user