|  | 
|  | 1 | +package g3401_3500.s3421_find_students_who_improved; | 
|  | 2 | + | 
|  | 3 | +import static org.hamcrest.CoreMatchers.equalTo; | 
|  | 4 | +import static org.hamcrest.MatcherAssert.assertThat; | 
|  | 5 | + | 
|  | 6 | +import java.io.BufferedReader; | 
|  | 7 | +import java.io.FileNotFoundException; | 
|  | 8 | +import java.io.FileReader; | 
|  | 9 | +import java.sql.Connection; | 
|  | 10 | +import java.sql.ResultSet; | 
|  | 11 | +import java.sql.SQLException; | 
|  | 12 | +import java.sql.Statement; | 
|  | 13 | +import java.util.stream.Collectors; | 
|  | 14 | +import javax.sql.DataSource; | 
|  | 15 | +import org.junit.jupiter.api.Test; | 
|  | 16 | +import org.zapodot.junit.db.annotations.EmbeddedDatabase; | 
|  | 17 | +import org.zapodot.junit.db.annotations.EmbeddedDatabaseTest; | 
|  | 18 | +import org.zapodot.junit.db.common.CompatibilityMode; | 
|  | 19 | + | 
|  | 20 | +@EmbeddedDatabaseTest( | 
|  | 21 | +        compatibilityMode = CompatibilityMode.MySQL, | 
|  | 22 | +        initialSqls = | 
|  | 23 | +                """ | 
|  | 24 | +    CREATE TABLE Scores ( | 
|  | 25 | +    student_id INT, | 
|  | 26 | +    subject VARCHAR(50), | 
|  | 27 | +    score INT, | 
|  | 28 | +    exam_date VARCHAR(10) | 
|  | 29 | +); | 
|  | 30 | +insert into Scores (student_id, subject, score, exam_date) values ('101', 'Math', '70', '15-01-2023'); | 
|  | 31 | +insert into Scores (student_id, subject, score, exam_date) values ('101', 'Math', '85', '15-02-2023'); | 
|  | 32 | +insert into Scores (student_id, subject, score, exam_date) values ('101', 'Physics', '65', '15-01-2023'); | 
|  | 33 | +insert into Scores (student_id, subject, score, exam_date) values ('101', 'Physics', '60', '15-02-2023'); | 
|  | 34 | +insert into Scores (student_id, subject, score, exam_date) values ('102', 'Math', '80', '15-01-2023'); | 
|  | 35 | +insert into Scores (student_id, subject, score, exam_date) values ('102', 'Math', '85', '15-02-2023'); | 
|  | 36 | +insert into Scores (student_id, subject, score, exam_date) values ('103', 'Math', '90', '15-01-2023'); | 
|  | 37 | +insert into Scores (student_id, subject, score, exam_date) values ('104', 'Physics', '75', '15-01-2023'); | 
|  | 38 | +insert into Scores (student_id, subject, score, exam_date) values ('104', 'Physics', '85', '15-02-2023');""") | 
|  | 39 | +class MysqlTest { | 
|  | 40 | +    @Test | 
|  | 41 | +    void testScript(@EmbeddedDatabase DataSource dataSource) | 
|  | 42 | +            throws SQLException, FileNotFoundException { | 
|  | 43 | +        try (final Connection connection = dataSource.getConnection()) { | 
|  | 44 | +            try (final Statement statement = connection.createStatement(); | 
|  | 45 | +                    final ResultSet resultSet = | 
|  | 46 | +                            statement.executeQuery( | 
|  | 47 | +                                    new BufferedReader( | 
|  | 48 | +                                                    new FileReader( | 
|  | 49 | +                                                            "src/main/java/g3401_3500/" | 
|  | 50 | +                                                                    + "s3421_find_students_who_improved/script.sql")) | 
|  | 51 | +                                            .lines() | 
|  | 52 | +                                            .collect(Collectors.joining("\n")) | 
|  | 53 | +                                            .replaceAll("#.*?\\r?\\n", ""))) { | 
|  | 54 | +                assertThat(resultSet.next(), equalTo(true)); | 
|  | 55 | +                assertThat(resultSet.getNString(1), equalTo("101")); | 
|  | 56 | +                assertThat(resultSet.getNString(2), equalTo("Math")); | 
|  | 57 | +                assertThat(resultSet.getNString(3), equalTo("70")); | 
|  | 58 | +                assertThat(resultSet.getNString(4), equalTo("85")); | 
|  | 59 | +                assertThat(resultSet.next(), equalTo(true)); | 
|  | 60 | +                assertThat(resultSet.getNString(1), equalTo("102")); | 
|  | 61 | +                assertThat(resultSet.getNString(2), equalTo("Math")); | 
|  | 62 | +                assertThat(resultSet.getNString(3), equalTo("80")); | 
|  | 63 | +                assertThat(resultSet.getNString(4), equalTo("85")); | 
|  | 64 | +                assertThat(resultSet.next(), equalTo(true)); | 
|  | 65 | +                assertThat(resultSet.getNString(1), equalTo("104")); | 
|  | 66 | +                assertThat(resultSet.getNString(2), equalTo("Physics")); | 
|  | 67 | +                assertThat(resultSet.getNString(3), equalTo("75")); | 
|  | 68 | +                assertThat(resultSet.getNString(4), equalTo("85")); | 
|  | 69 | +                assertThat(resultSet.next(), equalTo(false)); | 
|  | 70 | +            } | 
|  | 71 | +        } | 
|  | 72 | +    } | 
|  | 73 | +} | 
0 commit comments