diff options
author | gjoranv <gv@oath.com> | 2017-08-16 16:05:32 +0200 |
---|---|---|
committer | gjoranv <gv@oath.com> | 2017-08-16 16:05:32 +0200 |
commit | a7ac2ea7f1e500529ead48edcaae3978f8c5f9f0 (patch) | |
tree | 8439abed6614253940d5c4a09934ec45ff24e0bf /configgen/src | |
parent | 759d8b3f5d743f18a84ddd4c2549eb6ec557a576 (diff) |
Refactor tests to remove duplicate code.
Diffstat (limited to 'configgen/src')
-rw-r--r-- | configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java | 52 | ||||
-rw-r--r-- | configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java | 216 |
2 files changed, 65 insertions, 203 deletions
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java index a0dff8dcf91..0fef22c0d22 100644 --- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java +++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserNamespaceTest.java @@ -4,13 +4,12 @@ import org.junit.Test; import java.io.IOException; -import static com.yahoo.config.codegen.DefParserTest.assertExceptionAndMessage; +import static com.yahoo.config.codegen.DefParserTest.assertLineFails; import static com.yahoo.config.codegen.DefParserTest.createDefTemplate; import static com.yahoo.config.codegen.DefParserTest.createParser; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; /** * @author gjoranv @@ -46,32 +45,12 @@ public class DefParserNamespaceTest { @Test public void empty_namespace_is_not_allowed() { - // invalid - DefParser parser = createParser("version=1\nnamespace \na string\n"); - try { - parser.getTree(); - fail(); - } catch (Exception e) { - //e.printStackTrace(); - assertExceptionAndMessage(e, CodegenRuntimeException.class, - "Error parsing or reading config definition.Error when parsing line 2: namespace \n" + - "namespace"); - } + assertLineFails("namespace"); } @Test public void consecutive_dots_are_not_allowed() { - // invalid - DefParser parser = createParser("version=1\nnamespace=a..b\na string\n"); - try { - parser.getTree(); - fail(); - } catch (Exception e) { - //e.printStackTrace(); - assertExceptionAndMessage(e, CodegenRuntimeException.class, - "Error parsing or reading config definition.Error when parsing line 2: namespace=a..b\n" + - "namespace=a..b"); - } + assertLineFails("namespace=a..b"); } @Test @@ -96,33 +75,12 @@ public class DefParserNamespaceTest { @Test public void number_is_not_allowed_as_namespace_start_char() throws IOException, DefParser.DefParserException { - StringBuilder sb = createDefTemplate(); - String line = "namespace=2.a.b"; - sb.append(line).append("\n"); - Class<?> exceptionClass = DefParser.DefParserException.class; - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + line + "\n" + line); - } + assertLineFails("namespace=2.a.b"); } @Test public void number_is_not_allowed_as_leading_char_in_namespace_token() throws IOException, DefParser.DefParserException { - StringBuilder sb = createDefTemplate(); - String line = "namespace=a.b.2c"; - sb.append(line).append("\n"); - Class<?> exceptionClass = DefParser.DefParserException.class; - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + line + "\n" + line); - } - + assertLineFails("namespace=a.b.2c"); } @Test diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java index b92245554e2..e36641bb626 100644 --- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java +++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java @@ -82,16 +82,8 @@ public class DefParserTest { @Test public void testInvalidType() { - Class<?> exceptionClass = DefParser.DefParserException.class; - try { - createParser("version=1\n" + - "# comment\n" + - "a sting").getTree(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage((Exception) e.getCause(), exceptionClass, - "Error when parsing line 3: a sting", false); - } + String line = "a sting"; + assertLineFails(line, "Could not create sting a"); } @Test @@ -115,7 +107,7 @@ public class DefParserTest { } @Test - public void testMissingVersion() { + public void version_is_not_mandatory() { try { createParser("a string\n").parse(); } catch (Exception e) { @@ -147,31 +139,8 @@ public class DefParserTest { @Test public void verify_fail_on_default_for_file() { - Class<?> exceptionClass = DefParser.DefParserException.class; - DefParser parser = createParser("version=1\nf file default=\"file1.txt\"\n"); - try { - parser.getTree(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage((Exception) e.getCause(), exceptionClass, - "Error when parsing line 2: f file default=\"file1.txt\"\n" + - "Invalid default value", false); - } - } - - // Helper method for checking correct exception class and message - static void assertExceptionAndMessage(Exception e, Class<?> exceptionClass, String message) { - assertExceptionAndMessage(e, exceptionClass, message, true); - } - - // Helper method for checking correct exception class and message - static void assertExceptionAndMessage(Exception e, Class<?> exceptionClass, String message, boolean exact) { - if (exact) { - assertEquals(message, e.getMessage()); - } else { - assertTrue(e.getMessage().startsWith(message)); - } - assertEquals(exceptionClass.getName(), e.getClass().getName()); + assertLineFails("f file default=\"file1.txt\"", + "Invalid default value"); } @Test(expected = CodegenRuntimeException.class) @@ -229,180 +198,115 @@ public class DefParserTest { } @Test - public void testInvalidLine() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "a inta\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "Could not create inta a"); - } - } - - @Test - public void testDuplicateDefinition() { + public void duplicate_parameter_is_illegal() { Class<?> exceptionClass = DefParser.DefParserException.class; StringBuilder sb = createDefTemplate(); - String invalidLine = "b int\n"; - sb.append(invalidLine); - // Add a duplicate line, which should be illegal - sb.append(invalidLine); + String duplicateLine = "b int\n"; + sb.append(duplicateLine); + sb.append(duplicateLine); try { createParser(sb.toString()).parse(); fail("Didn't find expected exception of type " + exceptionClass); } catch (Exception e) { assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 4: " + invalidLine + "b is already defined"); + "Error when parsing line 4: " + duplicateLine + "b is already defined"); } } @Test public void testIllegalCharacterInName() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "a-b int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "a-b contains unexpected character"); - } + assertLineFails("a-b int", + "a-b contains unexpected character"); } @Test public void parameter_name_starting_with_digit_is_illegal() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "1a int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "1a must start with a non-digit character"); - } + assertLineFails("1a int", + "1a must start with a non-digit character"); } @Test public void parameter_name_starting_with_uppercase_is_illegal() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "SomeInt int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "'SomeInt' cannot start with an uppercase letter"); - } + assertLineFails("SomeInt int", + "'SomeInt' cannot start with an uppercase letter"); } @Test public void parameter_name_starting_with_the_internal_prefix_is_illegal() { String internalPrefix = ReservedWords.INTERNAL_PREFIX; - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = internalPrefix + "i int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + - "'" + internalPrefix + "i' cannot start with '" + internalPrefix + "'"); - } + assertLineFails(internalPrefix + "i int", + "'" + internalPrefix + "i' cannot start with '" + internalPrefix + "'"); } @Test public void testIllegalArray() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "intArr[ int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "intArr[ Expected ] to terminate array definition"); - } + assertLineFails("intArr[ int", + "intArr[ Expected ] to terminate array definition"); } @Test public void testIllegalDefault() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "a int deflt 10\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + " deflt 10"); - } + assertLineFails("a int deflt 10", + " deflt 10"); } @Test public void testReservedWordInC() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "auto int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "auto is a reserved word in C"); - } + assertLineFails("auto int", + "auto is a reserved word in C"); } @Test public void testReservedWordInJava() { - Class<?> exceptionClass = DefParser.DefParserException.class; - StringBuilder sb = createDefTemplate(); - String invalidLine = "abstract int\n"; - sb.append(invalidLine); - try { - createParser(sb.toString()).parse(); - fail("Didn't find expected exception of type " + exceptionClass); - } catch (Exception e) { - assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "abstract is a reserved word in Java"); - } + assertLineFails("abstract int", + "abstract is a reserved word in Java"); } @Test public void testReservedWordInCAndJava() { - Class<?> exceptionClass = DefParser.DefParserException.class; + assertLineFails("continue int", + "continue is a reserved word in C and Java"); + } + + static StringBuilder createDefTemplate() { + StringBuilder sb = new StringBuilder(); + sb.append("version=8\n"); + // Add a comment line to check that we get correct line number with comments + sb.append("# comment\n"); + + return sb; + } + + static void assertLineFails(String line) { + assertLineFails(line, line); + } + + static void assertLineFails(String line, String message) { StringBuilder sb = createDefTemplate(); - String invalidLine = "continue int\n"; - sb.append(invalidLine); + sb.append(line).append("\n"); + Class<?> exceptionClass = DefParser.DefParserException.class; try { createParser(sb.toString()).parse(); fail("Didn't find expected exception of type " + exceptionClass); } catch (Exception e) { assertExceptionAndMessage(e, exceptionClass, - "Error when parsing line 3: " + invalidLine + "continue is a reserved word in C and Java"); + "Error when parsing line 3: " + line + "\n" + message); } } - static StringBuilder createDefTemplate() { - StringBuilder sb = new StringBuilder(); - sb.append("version=8\n"); - // Add a comment line to check that we get correct line number with comments - sb.append("# comment\n"); + // Helper method for checking correct exception class and message + private static void assertExceptionAndMessage(Exception e, Class<?> exceptionClass, String message) { + assertExceptionAndMessage(e, exceptionClass, message, true); + } - return sb; + // Helper method for checking correct exception class and message + private static void assertExceptionAndMessage(Exception e, Class<?> exceptionClass, String message, boolean exact) { + if (exact) { + assertEquals(message, e.getMessage()); + } else { + assertTrue(e.getMessage().startsWith(message)); + } + assertEquals(exceptionClass.getName(), e.getClass().getName()); } + } |