package lab;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

// Pruebas del registro de notas tal como funciona hoy. Al refactorizar, no
// las cambien: si alguna falla, el último paso cambió el comportamiento.
class GradeBookTest {

    private static final String DATA = """
            20261001;alice;A;12;14;10
            20261002;bob;B;8;10;11
            20261003;carol;C;6;15;9
            """;

    @Test
    void finalGradeBySystem() {
        GradeBook book = new GradeBook();
        assertEquals(12, book.finalGrade("A", 12, 14, 10));
        assertEquals(10, book.finalGrade("B", 8, 10, 11));
        assertEquals(12, book.finalGrade("C", 6, 15, 9));
    }

    @Test
    void halfRoundsUp() {
        assertEquals(11, new GradeBook().finalGrade("C", 10, 9, 11));
    }

    @Test
    void report() {
        GradeBook book = new GradeBook();
        book.load(DATA);
        String expected = """
                20261001 alice: 12 (aprobado)
                20261002 bob: 10 (desaprobado)
                20261003 carol: 12 (aprobado)
                aprobados: 2, desaprobados: 1
                promedio del curso: 11.3
                """;
        assertEquals(expected, book.report());
    }
}
