import java.util.ArrayList;

public class LegacyTest {
    public static void main(String[] args) {
        ArrayList<Bruch> brueche = new ArrayList<>();

        // Test 1: Standardkonstruktor
        brueche.add(new Bruch());
        System.out.println("Test 1: " + brueche.get(0).bruchToString()); // Erwartet: 0/1

        // Test 2: Konstruktor mit einem Parameter
        brueche.add(new Bruch(3));
        System.out.println("Test 2: " + brueche.get(1).bruchToString()); // Erwartet: 3/1

        // Test 3: Konstruktor mit zwei Parametern (positive Werte)
        brueche.add(new Bruch(4, 8));
        System.out.println("Test 3: " + brueche.get(2).bruchToString()); // Erwartet: 4/8
        brueche.get(2).gekuerztausgeben(); // Erwartet: 1/2

        // Test 4: Konstruktor mit zwei Parametern (negative Werte)
        brueche.add(new Bruch(-4, 8));
        System.out.println("Test 4: " + brueche.get(3).bruchToString()); // Erwartet: -4/8
        brueche.get(3).gekuerztausgeben(); // Erwartet: -1/2

        // Test 5: Setzen von Zähler und Nenner (normal)
        brueche.get(2).setZaehler(6);
        brueche.get(2).setNenner(9);
        System.out.println("Test 5: " + brueche.get(2).bruchToString()); // Erwartet: 6/9
        brueche.get(2).gekuerztausgeben(); // Erwartet: 2/3

        // Test 6: Setzen von Zähler und Nenner (mit Null)
        brueche.get(2).setZaehler(0);
        brueche.get(2).setNenner(9);
        System.out.println("Test 6: " + brueche.get(2).bruchToString()); // Erwartet: 0/9

        // Test 7: Setzen von Zähler und Nenner (Division durch Null)
        brueche.get(2).setNenner(0);
        System.out.println("Test 7: " + brueche.get(2).bruchToString());

        // Test 8: Multiplikation
        Bruch bruch4 = new Bruch(2, 3);
        Bruch produkt = brueche.get(2).multipliziere(bruch4);
        System.out.println("Test 8: " + produkt.bruchToString()); // Erwartet: 0/1

        // Test 9: Gleichheit
        Bruch bruch5 = new Bruch(2, 3);
        Bruch bruch6 = new Bruch(4, 6);
        System.out.println("Test 9: " + bruch5.equals(bruch6)); // Erwartet: true

        // Test 10: Ungleichheit
        Bruch bruch7 = new Bruch(1, 2);
        System.out.println("Test 10: " + bruch5.equals(bruch7)); // Erwartet: false

        // Test 11: Addition (positive und negative Werte)
        Bruch bruch8 = new Bruch(1, 4);
        Bruch summe = bruch5.addiere(bruch8);
        System.out.println("Test 11: " + summe.bruchToString()); // Erwartet: 11/12

        // Test 12: Subtraktion (negatives Ergebnis)
        Bruch bruch9 = new Bruch(3, 4);
        Bruch differenz = bruch5.subtrahiere(bruch9);
        System.out.println("Test 12: " + differenz.bruchToString()); // Erwartet: -1/12

        // Test 13: Dezimalwert
        double dezimalwert = bruch5.dezimalwert();
        System.out.println("Test 13: " + dezimalwert); // Erwartet: 0.6666666666666666 (2/3)

        // Test 14: Dezimalwert eines anderen Bruchs
        Bruch bruch10 = new Bruch(3, 4);
        double dezimalwert2 = bruch10.dezimalwert();
        System.out.println("Test 14: " + dezimalwert2); // Erwartet: 0.75

        // Test 16: Dezimalwert eines anderen Bruchs (null)
        Bruch bruch11 = new Bruch(3, 0);
        double dezimalwert3 = bruch11.dezimalwert();
        System.out.println("Test 15: " + dezimalwert3); // Erwartet: 0
    }
}
