You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by gi...@apache.org on 2017/12/05 11:08:51 UTC
ant-ivy git commit: showcase of parameterised tests with
introspection :-) (requires hamcrest-library where Matchers dwell)
Repository: ant-ivy
Updated Branches:
refs/heads/master 30c217ec4 -> d80acb29c
showcase of parameterised tests with introspection :-)
(requires hamcrest-library where Matchers dwell)
Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/d80acb29
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/d80acb29
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/d80acb29
Branch: refs/heads/master
Commit: d80acb29c04a8e92a3ddbc539b0be8a521098870
Parents: 30c217e
Author: Gintas Grigelionis <gi...@apache.org>
Authored: Tue Dec 5 12:08:28 2017 +0100
Committer: Gintas Grigelionis <gi...@apache.org>
Committed: Tue Dec 5 12:08:28 2017 +0100
----------------------------------------------------------------------
ivy.xml | 1 +
.../ivy/osgi/core/ManifestHeaderTest.java | 211 +++++++++++--------
2 files changed, 123 insertions(+), 89 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/d80acb29/ivy.xml
----------------------------------------------------------------------
diff --git a/ivy.xml b/ivy.xml
index e6ee31f..5726a03 100644
--- a/ivy.xml
+++ b/ivy.xml
@@ -58,6 +58,7 @@
<!-- Test dependencies -->
<dependency org="junit" name="junit" rev="${junit.version}" conf="test"/>
<dependency org="org.hamcrest" name="hamcrest-core" rev="${hamcrest.version}" conf="test"/>
+ <dependency org="org.hamcrest" name="hamcrest-library" rev="${hamcrest.version}" conf="test"/>
<dependency org="org.apache.ant" name="ant-testutil" rev="${apache-ant.version}" conf="test" transitive="false"/>
<dependency org="org.apache.ant" name="ant-launcher" rev="${apache-ant.version}" conf="test" transitive="false"/>
<dependency org="ant-contrib" name="ant-contrib" rev="${ant-contrib.version}" conf="test" transitive="false"/>
http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/d80acb29/test/java/org/apache/ivy/osgi/core/ManifestHeaderTest.java
----------------------------------------------------------------------
diff --git a/test/java/org/apache/ivy/osgi/core/ManifestHeaderTest.java b/test/java/org/apache/ivy/osgi/core/ManifestHeaderTest.java
index 5179db4..3bcc825 100644
--- a/test/java/org/apache/ivy/osgi/core/ManifestHeaderTest.java
+++ b/test/java/org/apache/ivy/osgi/core/ManifestHeaderTest.java
@@ -17,112 +17,145 @@
*/
package org.apache.ivy.osgi.core;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
import java.text.ParseException;
+import java.util.Arrays;
+import java.util.Collection;
+import static org.hamcrest.Matchers.hasProperty;
+import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+@RunWith(Enclosed.class)
public class ManifestHeaderTest {
- @Test
- public void testNormal() throws Exception {
- ManifestHeaderElement simpleValue = new ManifestHeaderElement();
- simpleValue.addValue("value");
- ManifestHeaderValue header = new ManifestHeaderValue();
- header.addElement(simpleValue);
- assertEquals(header, new ManifestHeaderValue("value"));
-
- ManifestHeaderElement simplePackage = new ManifestHeaderElement();
- simplePackage.addValue("simple.package");
- header.addElement(simplePackage);
- assertEquals(header, new ManifestHeaderValue("value,simple.package"));
-
- ManifestHeaderElement doubleValue = new ManifestHeaderElement();
- doubleValue.addValue("value1");
- doubleValue.addValue("value2");
- ManifestHeaderValue headerDouble = new ManifestHeaderValue();
- headerDouble.addElement(doubleValue);
- assertEquals(headerDouble, new ManifestHeaderValue("value1;value2"));
-
- ManifestHeaderElement versionValue = new ManifestHeaderElement();
- versionValue.addValue("value1");
- versionValue.addValue("value2");
- versionValue.addAttribute("version", "1.2.3");
- ManifestHeaderValue headerVersion = new ManifestHeaderValue();
- headerVersion.addElement(versionValue);
- assertEquals(headerVersion, new ManifestHeaderValue("value1;value2;version=1.2.3"));
-
- ManifestHeaderElement optionValue1 = new ManifestHeaderElement();
- optionValue1.addValue("value1");
- optionValue1.addDirective("resolution", "optional");
- ManifestHeaderElement optionValue2 = new ManifestHeaderElement();
- optionValue2.addValue("value2");
- optionValue2.addValue("value3");
- optionValue2.addDirective("resolution", "mandatory");
- optionValue2.addAttribute("version", "1.2.3");
- ManifestHeaderValue headerOption = new ManifestHeaderValue();
- headerOption.addElement(optionValue1);
- headerOption.addElement(optionValue2);
- assertEquals(headerOption, new ManifestHeaderValue(
- "value1;resolution:=optional,value2;value3;resolution:=mandatory;version=1.2.3"));
-
- ManifestHeaderElement quoteValue = new ManifestHeaderElement();
- quoteValue.addValue("value1");
- quoteValue.addAttribute("att", "value2;value3");
- ManifestHeaderValue headerQuote = new ManifestHeaderValue();
- headerQuote.addElement(quoteValue);
- assertEquals(headerQuote, new ManifestHeaderValue("value1;att='value2;value3'"));
- }
+ public static class SingleTests {
+
+ @Test
+ public void testNormal() throws Exception {
+ ManifestHeaderElement simpleValue = new ManifestHeaderElement();
+ simpleValue.addValue("value");
+ ManifestHeaderValue header = new ManifestHeaderValue();
+ header.addElement(simpleValue);
+ assertEquals(header, new ManifestHeaderValue("value"));
+
+ ManifestHeaderElement simplePackage = new ManifestHeaderElement();
+ simplePackage.addValue("simple.package");
+ header.addElement(simplePackage);
+ assertEquals(header, new ManifestHeaderValue("value,simple.package"));
+
+ ManifestHeaderElement doubleValue = new ManifestHeaderElement();
+ doubleValue.addValue("value1");
+ doubleValue.addValue("value2");
+ ManifestHeaderValue headerDouble = new ManifestHeaderValue();
+ headerDouble.addElement(doubleValue);
+ assertEquals(headerDouble, new ManifestHeaderValue("value1;value2"));
+
+ ManifestHeaderElement versionValue = new ManifestHeaderElement();
+ versionValue.addValue("value1");
+ versionValue.addValue("value2");
+ versionValue.addAttribute("version", "1.2.3");
+ ManifestHeaderValue headerVersion = new ManifestHeaderValue();
+ headerVersion.addElement(versionValue);
+ assertEquals(headerVersion, new ManifestHeaderValue("value1;value2;version=1.2.3"));
+
+ ManifestHeaderElement optionValue1 = new ManifestHeaderElement();
+ optionValue1.addValue("value1");
+ optionValue1.addDirective("resolution", "optional");
+ ManifestHeaderElement optionValue2 = new ManifestHeaderElement();
+ optionValue2.addValue("value2");
+ optionValue2.addValue("value3");
+ optionValue2.addDirective("resolution", "mandatory");
+ optionValue2.addAttribute("version", "1.2.3");
+ ManifestHeaderValue headerOption = new ManifestHeaderValue();
+ headerOption.addElement(optionValue1);
+ headerOption.addElement(optionValue2);
+ assertEquals(headerOption, new ManifestHeaderValue(
+ "value1;resolution:=optional,value2;value3;resolution:=mandatory;version=1.2.3"));
+
+ ManifestHeaderElement quoteValue = new ManifestHeaderElement();
+ quoteValue.addValue("value1");
+ quoteValue.addAttribute("att", "value2;value3");
+ ManifestHeaderValue headerQuote = new ManifestHeaderValue();
+ headerQuote.addElement(quoteValue);
+ assertEquals(headerQuote, new ManifestHeaderValue("value1;att='value2;value3'"));
+ }
- private void genericTestEquals(String v1, String v2) throws Exception {
- assertEquals(new ManifestHeaderValue(v1), new ManifestHeaderValue(v2));
- }
+ @Test
+ public void testSpaceInValue() throws Exception {
+ ManifestHeaderValue value = new ManifestHeaderValue("glassfish javax.servlet.3.1.0.b33");
+ assertEquals("glassfish javax.servlet.3.1.0.b33", value.getSingleValue());
+ }
- @Test
- public void testSpaceAndQuote() throws Exception {
- genericTestEquals("value1;att=value2;att2=other", "value1;att='value2';att2=other");
- genericTestEquals("value1;att=value2;att2=other", "value1;att= 'value2' ;att2=other");
- genericTestEquals("value1;att=value2;att2=other", "value1;att= value2 \t ;att2=other");
- genericTestEquals("value1;att:=value2;att2=other", "value1;att:= 'value2' ;att2=other");
- genericTestEquals("value1;att=value2;att2=other", "value1;att=\"value2\";att2=other");
}
- @Test
- public void testReflexivity() throws Exception {
- genericTestEquals("value1;value2", "value2;value1");
- genericTestEquals("value1,value2", "value2,value1");
- genericTestEquals("value1;resolution:=mandatory;color:=red",
- "value1;color:=red;resolution:=mandatory");
- genericTestEquals("value1;version=1.2.3;color=red", "value1;color=red;version=1.2.3");
- genericTestEquals("value1;version=1.2.3;color:=red", "value1;color:=red;version=1.2.3");
- }
+ @RunWith(Parameterized.class)
+ public static class IllegalOptionTests {
- @Test
- public void testSyntaxError() throws Exception {
- genericTestSyntaxError("value1=");
- genericTestSyntaxError("value1;version=1;value2");
- genericTestSyntaxError("value1;version=");
- genericTestSyntaxError("value1;version:");
- genericTestSyntaxError("value1;version:=");
- genericTestSyntaxError("value1;=1");
- genericTestSyntaxError("value1;att=''value");
- }
+ @Rule
+ public ExpectedException expExc = ExpectedException.none();
+
+ @Parameterized.Parameters(name = "illegal token at {1} in {0}")
+ public static Collection<Object[]> data() {
+ return Arrays.asList(new Object[][] {{"value1=", 6},
+ {"value1;version=1;value2", 22}, {"value1;version=", 14},
+ {"value1;version:", 14}, {"value1;version:=", 15},
+ {"value1;=1", 7}, {"value1;att=''value", 13}});
+ }
+
+ @Parameterized.Parameter
+ public String value;
- private void genericTestSyntaxError(String value) {
- try {
+ @Parameterized.Parameter(1)
+ public int offset;
+
+ /**
+ * Expected failure when the parameter is illegal
+ */
+ @Test
+ public void testSyntaxError() throws ParseException {
+ expExc.expect(ParseException.class);
+ expExc.expect(hasProperty("errorOffset", is(offset)));
new ManifestHeaderValue(value);
- fail("Syntax error not detected");
- } catch (ParseException e) {
- // error detected: OK
- ManifestHeaderValue.writeParseException(System.out, value, e);
}
+
}
- @Test
- public void testSpaceInValue() throws Exception {
- ManifestHeaderValue value = new ManifestHeaderValue("glassfish javax.servlet.3.1.0.b33");
- assertEquals("glassfish javax.servlet.3.1.0.b33", value.getSingleValue());
+ @RunWith(Parameterized.class)
+ public static class OptionNormalisationTests {
+
+ @Parameterized.Parameters(name = "Value {1} is normalised to {0}")
+ public static Collection<Object[]> data() {
+ return Arrays.asList(new Object[][] {
+ {"value1;att=value2;att2=other", "value1;att='value2';att2=other"},
+ {"value1;att=value2;att2=other", "value1;att= 'value2' ;att2=other"},
+ {"value1;att=value2;att2=other", "value1;att= value2 \t ;att2=other"},
+ {"value1;att:=value2;att2=other", "value1;att:= 'value2' ;att2=other"},
+ {"value1;att=value2;att2=other", "value1;att=\"value2\";att2=other"},
+ {"value1;value2", "value2;value1"}, {"value1,value2", "value2,value1"},
+ {"value1;resolution:=mandatory;color:=red",
+ "value1;color:=red;resolution:=mandatory"},
+ {"value1;version=1.2.3;color=red", "value1;color=red;version=1.2.3"},
+ {"value1;version=1.2.3;color:=red", "value1;color:=red;version=1.2.3"}});
+ }
+
+ @Parameterized.Parameter
+ public String value;
+
+ @Parameterized.Parameter(1)
+ public String normalised;
+
+ @Test
+ public void testNormalisation() throws Exception {
+ assertEquals(new ManifestHeaderValue(normalised), new ManifestHeaderValue(value));
+ }
+
}
+
}