From c539f3dad6dcc80a55bc9fe38dedb617da8e5e2c Mon Sep 17 00:00:00 2001 From: Markus Spann Date: Fri, 22 Sep 2023 18:31:45 +0200 Subject: [PATCH] net-sf-ucanaccess-fork: Improvements to unit tests --- .../test/integration/MetaDataTest.java | 23 ++++++++--------- .../integration/NoRomanCharacterTest.java | 22 ++++++++-------- .../test/integration/RomanCharacterTest.java | 9 +++---- .../integration/UnproperExecuteQueryTest.java | 24 ++++++++++-------- src/test/resources/testdbs/noroman.mdb | Bin 237568 -> 241664 bytes 5 files changed, 38 insertions(+), 40 deletions(-) diff --git a/src/test/java/net/ucanaccess/test/integration/MetaDataTest.java b/src/test/java/net/ucanaccess/test/integration/MetaDataTest.java index 2fd4b3e5..be595e96 100644 --- a/src/test/java/net/ucanaccess/test/integration/MetaDataTest.java +++ b/src/test/java/net/ucanaccess/test/integration/MetaDataTest.java @@ -20,36 +20,35 @@ protected String getAccessPath() { @Override protected void init(AccessVersion _accessVersion) throws SQLException { super.init(_accessVersion); - executeStatements("CREATE TABLE AAAn ( baaaa TEXT(3) PRIMARY KEY,A INTEGER , C TEXT(4)) "); + executeStatements("CREATE TABLE t_metadata ( baaaa TEXT(3) PRIMARY KEY, A INTEGER, C TEXT(4))"); } @AfterEach void afterEachTest() throws SQLException { - dropTable("AAAn"); + dropTable("t_metadata"); } void createSimple(String a, Object[][] ver) throws SQLException, IOException { try (Statement st = ucanaccess.createStatement()) { - st.execute("INSERT INTO AAAn VALUES ('33A',11,'" + a + "' )"); - st.execute("INSERT INTO AAAn VALUES ('33B',111,'" + a + "' )"); - checkQuery("SELECT * FROM AAAn", ver); + st.execute("INSERT INTO t_metadata VALUES ('33A', 11, '" + a + "' )"); + st.execute("INSERT INTO t_metadata VALUES ('33B', 111, '" + a + "' )"); } + checkQuery("SELECT * FROM t_metadata", ver); } @ParameterizedTest(name = "[{index}] {0}") @MethodSource("net.ucanaccess.test.util.AccessVersion#getDefaultAccessVersion()") void testDrop(AccessVersion _accessVersion) throws SQLException, IOException { init(_accessVersion); - Statement st = null; ucanaccess.setAutoCommit(false); createSimple("a", new Object[][] {{"33A", 11, "a"}, {"33B", 111, "a"}}); - st = ucanaccess.createStatement(); - st.executeUpdate("DROP TABLE AAAn"); + try (Statement st = ucanaccess.createStatement()) { + st.executeUpdate("DROP TABLE t_metadata"); - st.execute("CREATE TABLE AAAn ( baaaa TEXT(3) PRIMARY KEY,A INTEGER , C TEXT(4)) "); - createSimple("b", new Object[][] {{"33A", 11, "b"}, {"33B", 111, "b"}}); + st.execute("CREATE TABLE t_metadata (baaaa TEXT(3) PRIMARY KEY, A INTEGER, C TEXT(4))"); + createSimple("b", new Object[][] {{"33A", 11, "b"}, {"33B", 111, "b"}}); - ucanaccess.commit(); - st.close(); + ucanaccess.commit(); + } } } diff --git a/src/test/java/net/ucanaccess/test/integration/NoRomanCharacterTest.java b/src/test/java/net/ucanaccess/test/integration/NoRomanCharacterTest.java index cf44809b..f724e8e1 100644 --- a/src/test/java/net/ucanaccess/test/integration/NoRomanCharacterTest.java +++ b/src/test/java/net/ucanaccess/test/integration/NoRomanCharacterTest.java @@ -19,18 +19,16 @@ protected String getAccessPath() { @EnumSource(value = AccessVersion.class) void testNoRomanCharactersInColumnName(AccessVersion _accessVersion) throws Exception { init(_accessVersion); - dumpQueryResult("SELECT * FROM NOROMAN"); - - Statement st = ucanaccess.createStatement(); - - st.execute("INSERT INTO NOROMAN ([end],[q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]) VALUES( 'the end','yeeep')"); - st.execute("UPDATE NOROMAN SET [q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]='NOOOp' WHERE [end]='the end' "); - ResultSet rs = st.executeQuery("SELECT * FROM NOROMAN"); - while (rs.next()) { - getLogger().info(rs.getString("q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß")); + dumpQueryResult("SELECT * FROM t_noroman"); + + try (Statement st = ucanaccess.createStatement()) { + st.execute("INSERT INTO t_noroman ([end],[q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]) VALUES( 'the end','yeeep')"); + st.execute("UPDATE t_noroman SET [q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]='NOOOp' WHERE [end]='the end' "); + ResultSet rs = st.executeQuery("SELECT * FROM t_noroman"); + while (rs.next()) { + getLogger().debug(rs.getString("q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß")); + } } - - checkQuery("SELECT * FROM NOROMAN"); - st.close(); + checkQuery("SELECT * FROM t_noroman"); } } diff --git a/src/test/java/net/ucanaccess/test/integration/RomanCharacterTest.java b/src/test/java/net/ucanaccess/test/integration/RomanCharacterTest.java index 62755d09..b02a35bb 100644 --- a/src/test/java/net/ucanaccess/test/integration/RomanCharacterTest.java +++ b/src/test/java/net/ucanaccess/test/integration/RomanCharacterTest.java @@ -18,13 +18,12 @@ protected String getAccessPath() { @MethodSource("net.ucanaccess.test.util.AccessVersion#getDefaultAccessVersion()") void testNoRomanCharactersInColumnName(AccessVersion _accessVersion) throws Exception { init(_accessVersion); - dumpQueryResult("SELECT * FROM NOROMAN"); - getLogger().info("q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß"); + dumpQueryResult("SELECT * FROM t_noroman"); try (Statement st = ucanaccess.createStatement()) { - st.execute("INSERT INTO NOROMAN ([end],[q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]) VALUES('the end', 'yeeep')"); - st.execute("UPDATE NOROMAN SET [q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]='NOOOp' WHERE [end]='the end' "); + st.execute("INSERT INTO t_noroman ([end],[q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]) VALUES('the end', 'yeeep')"); + st.execute("UPDATE t_noroman SET [q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]='NOOOp' WHERE [end]='the end' "); } - checkQuery("SELECT * FROM NOROMAN"); + checkQuery("SELECT * FROM t_noroman"); } } diff --git a/src/test/java/net/ucanaccess/test/integration/UnproperExecuteQueryTest.java b/src/test/java/net/ucanaccess/test/integration/UnproperExecuteQueryTest.java index 18d6ced0..16c8f4c4 100644 --- a/src/test/java/net/ucanaccess/test/integration/UnproperExecuteQueryTest.java +++ b/src/test/java/net/ucanaccess/test/integration/UnproperExecuteQueryTest.java @@ -1,5 +1,8 @@ package net.ucanaccess.test.integration; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import net.ucanaccess.jdbc.UcanaccessSQLException; import net.ucanaccess.test.util.AccessVersion; import net.ucanaccess.test.util.UcanaccessBaseTest; import org.junit.jupiter.params.ParameterizedTest; @@ -19,19 +22,18 @@ protected String getAccessPath() { @EnumSource(value = AccessVersion.class) void testExecute(AccessVersion _accessVersion) throws Exception { init(_accessVersion); - execute("INSERT INTO NOROMAN ([end],[q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]) VALUES( 'the end','yeeep')"); - execute("UPDATE NOROMAN SET [ENd]='BLeah'"); - execute("DELETE FROM NOROMAN"); + execute("INSERT INTO t_noroman ([end],[q3¹²³¼½¾ß€Ð×ÝÞðýþäüöß]) VALUES('the end', 'yeeep')"); + execute("UPDATE t_noroman SET [ENd]='BLeah'"); + execute("DELETE FROM t_noroman"); } - private void execute(String s) throws SQLException { - Statement st = ucanaccess.createStatement(); - try { - st.executeQuery(s); - fail("Should not get here"); - } catch (Exception _ex) { - getLogger().info(_ex.getMessage()); + private void execute(String _sql) throws SQLException { + try (Statement st = ucanaccess.createStatement()) { + assertThatThrownBy(() -> st.executeQuery(_sql)) + .isInstanceOf(UcanaccessSQLException.class) + .hasMessageMatching("UCAExc:::[0-9\\.]+ General error"); + + assertDoesNotThrow(() -> st.execute(_sql)); } - st.execute(s); } } diff --git a/src/test/resources/testdbs/noroman.mdb b/src/test/resources/testdbs/noroman.mdb index 29e1ef0f97688c703a8619e1d55d62da2bf189c6..e6bee014547204c05b6f2dcf78c7420dacda1b23 100644 GIT binary patch delta 10538 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 literal 237568 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