This is an automated email from the ASF dual-hosted git repository.
veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push:
new c259c5812 Refactor SetNamespace tests to use records for test
parameters
c259c5812 is described below
commit c259c5812fe33a84cb7d22b2fa78374d63ddfff1
Author: Andreas Veithen-Knowles <[email protected]>
AuthorDate: Sat Mar 21 11:01:35 2026 +0000
Refactor SetNamespace tests to use records for test parameters
Add a Params interface to SetNamespaceTestCase declaring accessors for
the 6 common test parameters. Each TestSetNamespace subclass (attribute
and element) defines a nested Params record implementing this interface,
with additional subclass-specific fields (declare/owner for attribute,
declare for element).
This replaces long positional constructor parameter lists with
self-documenting record types.
---
.../org/apache/axiom/ts/om/OMTestSuiteBuilder.java | 175 ++++++++++-----------
.../apache/axiom/ts/om/SetNamespaceTestCase.java | 128 ++++++++-------
.../axiom/ts/om/attribute/TestSetNamespace.java | 51 ++----
.../axiom/ts/om/element/TestSetNamespace.java | 35 ++---
4 files changed, 190 insertions(+), 199 deletions(-)
diff --git
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
index 2a7d0b46f..f2dc41865 100644
---
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
+++
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
@@ -88,87 +88,82 @@ public class OMTestSuiteBuilder extends
MatrixTestSuiteBuilder {
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
metaFactory,
- "urn:test",
- "p",
- declare,
- owner,
- null,
- false,
- "p",
- declare && owner));
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test",
+ "p",
+ declare,
+ owner,
+ null,
+ false,
+ "p",
+ declare && owner)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
metaFactory,
- "urn:test",
- null,
- declare,
- owner,
- null,
- false,
- null,
- declare && owner));
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test",
+ null,
+ declare,
+ owner,
+ null,
+ false,
+ null,
+ declare && owner)));
if (owner) {
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
metaFactory,
- "urn:test",
- "p",
- declare,
- true,
- "p",
- false,
- "p",
- false));
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test", "p", declare, true, "p",
false, "p", false)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
metaFactory,
- "urn:test",
- "p",
- declare,
- true,
- "q",
- false,
- "p",
- declare));
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test", "p", declare, true, "q",
false, "p", declare)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
metaFactory,
- "urn:test",
- null,
- declare,
- true,
- "p",
- false,
- "p",
- false));
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test", null, declare, true, "p",
false, "p", false)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
metaFactory,
- "urn:test",
- null,
- declare,
- true,
- "",
- false,
- null,
- declare));
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test",
+ null,
+ declare,
+ true,
+ "",
+ false,
+ null,
+ declare)));
}
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
- metaFactory, "", "", declare, owner, null, false,
"", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "", "", declare, owner, null, false, "",
false)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
- metaFactory, "", null, declare, owner, null,
false, "", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "", null, declare, owner, null, false, "",
false)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
- metaFactory, null, null, declare, owner, null,
false, "", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ null, null, declare, owner, null, false,
"", false)));
// Invalid
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
- metaFactory, "urn:test", "", declare, owner, null,
true, null, false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "urn:test", "", declare, owner, null,
true, null, false)));
addTest(
new org.apache.axiom.ts.om.attribute.TestSetNamespace(
- metaFactory, "", "p", declare, owner, null, true,
null, false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.attribute.TestSetNamespace.Params(
+ "", "p", declare, owner, null, true, null,
false)));
}
for (StreamType streamType : Multiton.getInstances(StreamType.class)) {
addTest(
@@ -773,68 +768,70 @@ public class OMTestSuiteBuilder extends
MatrixTestSuiteBuilder {
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
metaFactory,
- "urn:test",
- "p",
- declare,
- null,
- false,
- "p",
- implicitDeclare));
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", "p", declare, null, false,
"p", implicitDeclare)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
metaFactory,
- "urn:test",
- null,
- declare,
- null,
- false,
- null,
- implicitDeclare));
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test",
+ null,
+ declare,
+ null,
+ false,
+ null,
+ implicitDeclare)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "urn:test", "p", declare, "p", false,
"p", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", "p", declare, "p", false, "p",
false)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
metaFactory,
- "urn:test",
- "p",
- declare,
- "q",
- false,
- "p",
- implicitDeclare));
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", "p", declare, "q", false, "p",
implicitDeclare)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "urn:test", null, declare, "p",
false, "p", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", null, declare, "p", false,
"p", false)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "urn:test", null, declare, "", false,
"", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", null, declare, "", false, "",
false)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
metaFactory,
- "urn:test",
- "",
- declare,
- null,
- false,
- "",
- implicitDeclare));
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", "", declare, null, false, "",
implicitDeclare)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "urn:test", "", declare, "", false,
"", false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "urn:test", "", declare, "", false, "",
false)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "", "", declare, null, false, "",
false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "", "", declare, null, false, "", false)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "", null, declare, null, false, "",
false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "", null, declare, null, false, "",
false)));
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, null, null, declare, null, false, "",
false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ null, null, declare, null, false, "",
false)));
// Invalid
addTest(
new org.apache.axiom.ts.om.element.TestSetNamespace(
- metaFactory, "", "p", declare, null, true, null,
false));
+ metaFactory,
+ new
org.apache.axiom.ts.om.element.TestSetNamespace.Params(
+ "", "p", declare, null, true, null,
false)));
}
addTest(new org.apache.axiom.ts.om.element.TestSetText(metaFactory));
addTest(new
org.apache.axiom.ts.om.element.TestSetTextEmptyString(metaFactory));
diff --git
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/SetNamespaceTestCase.java
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/SetNamespaceTestCase.java
index 585ce9457..6e5ce6248 100644
---
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/SetNamespaceTestCase.java
+++
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/SetNamespaceTestCase.java
@@ -30,56 +30,66 @@ import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.ts.AxiomTestCase;
public abstract class SetNamespaceTestCase extends AxiomTestCase {
- private final String namespaceURI;
- private final String prefix;
- private final String prefixInScope;
- private final boolean invalid;
- private final String expectedPrefix;
- private final boolean expectNSDecl;
+ /**
+ * Common test parameters for {@link SetNamespaceTestCase} subclasses.
+ *
+ * @see OMNamedInformationItem#setNamespace(OMNamespace, boolean)
+ */
+ public interface Params {
+ /** The namespace URI to set or {@code null} to set a {@code null}
{@link OMNamespace}. */
+ String namespaceURI();
+
+ /** The prefix to set or {@code null} to generate a prefix. */
+ String prefix();
+
+ /**
+ * The prefix of an existing namespace declaration in scope for the
given namespace URI, or
+ * {@code null} if no matching namespace declaration is in scope.
+ */
+ String prefixInScope();
+
+ /**
+ * Flag indicating whether the namespace is invalid and {@link
+ * OMNamedInformationItem#setNamespace(OMNamespace, boolean)} is
expected to throw an {@link
+ * IllegalArgumentException}.
+ */
+ boolean invalid();
+
+ /**
+ * The expected prefix of the attribute after the invocation of {@link
+ * OMNamedInformationItem#setNamespace(OMNamespace, boolean)}, or null
if the method is
+ * expected to generate a prefix.
+ */
+ String expectedPrefix();
+
+ /**
+ * Indicates whether {@link
OMNamedInformationItem#setNamespace(OMNamespace, boolean)} is
+ * expected to generate a namespace declaration on the owner element.
+ */
+ boolean expectNSDecl();
+ }
+
+ private final Params params;
/**
* Constructor.
*
* @param metaFactory the meta factory
- * @param namespaceURI the namespace URI to set or <code>null</code> to
set a <code>null</code>
- * {@link OMNamespace}
- * @param prefix the prefix to set or <code>null</code> to generate a
prefix
- * @param prefixInScope the prefix of an existing namespace declaration in
scope for the given
- * namespace URI, or <code>null</code> if no matching namespace
declaration is in scope
- * @param invalid flag indicating whether the namespace is invalid and
{@link
- * OMNamedInformationItem#setNamespace(OMNamespace, boolean)} is
expected to throw an {@link
- * IllegalArgumentException}
- * @param expectedPrefix the expected prefix of the attribute after the
invocation of {@link
- * OMNamedInformationItem#setNamespace(OMNamespace, boolean)}, or null
if the method is
- * expected to generate a prefix
- * @param expectNSDecl indicates whether {@link
OMNamedInformationItem#setNamespace(OMNamespace,
- * boolean)} is expected to generate a namespace declaration on the
owner element
+ * @param params the test parameters
*/
- public SetNamespaceTestCase(
- OMMetaFactory metaFactory,
- String namespaceURI,
- String prefix,
- String prefixInScope,
- boolean invalid,
- String expectedPrefix,
- boolean expectNSDecl) {
+ public SetNamespaceTestCase(OMMetaFactory metaFactory, Params params) {
super(metaFactory);
- this.namespaceURI = namespaceURI;
- this.prefix = prefix;
- this.prefixInScope = prefixInScope;
- this.invalid = invalid;
- this.expectedPrefix = expectedPrefix;
- this.expectNSDecl = expectNSDecl;
- if (namespaceURI != null) {
- addTestParameter("uri", namespaceURI);
+ this.params = params;
+ if (params.namespaceURI() != null) {
+ addTestParameter("uri", params.namespaceURI());
}
- if (prefix != null) {
- addTestParameter("prefix", prefix);
+ if (params.prefix() != null) {
+ addTestParameter("prefix", params.prefix());
}
- if (prefixInScope != null) {
- addTestParameter("prefixInScope", prefixInScope);
+ if (params.prefixInScope() != null) {
+ addTestParameter("prefixInScope", params.prefixInScope());
}
- addTestParameter("invalid", invalid);
+ addTestParameter("invalid", params.invalid());
}
protected abstract boolean context();
@@ -98,11 +108,11 @@ public abstract class SetNamespaceTestCase extends
AxiomTestCase {
OMNamespace dummyNS = factory.createOMNamespace("__dummy__",
"__dummy__");
OMElement parent = factory.createOMElement("parent", dummyNS);
element = factory.createOMElement("test", dummyNS, parent);
- if (prefixInScope != null) {
- if (prefixInScope.length() == 0) {
- parent.declareDefaultNamespace(namespaceURI);
+ if (params.prefixInScope() != null) {
+ if (params.prefixInScope().length() == 0) {
+ parent.declareDefaultNamespace(params.namespaceURI());
} else {
- parent.declareNamespace(namespaceURI, prefixInScope);
+ parent.declareNamespace(params.namespaceURI(),
params.prefixInScope());
}
}
} else {
@@ -110,54 +120,60 @@ public abstract class SetNamespaceTestCase extends
AxiomTestCase {
}
node = node(factory, element);
OMNamespace ns =
- namespaceURI == null ? null :
factory.createOMNamespace(namespaceURI, prefix);
+ params.namespaceURI() == null
+ ? null
+ : factory.createOMNamespace(params.namespaceURI(),
params.prefix());
try {
setNamespace(node, ns);
- if (invalid) {
+ if (params.invalid()) {
fail("Expected IllegalArgumentException");
}
} catch (IllegalArgumentException ex) {
- if (invalid) {
+ if (params.invalid()) {
return;
} else {
throw ex;
}
}
String expectedPrefix;
- if (this.expectedPrefix == null) {
+ if (params.expectedPrefix() == null) {
expectedPrefix = node.getPrefix();
assertNotNull(expectedPrefix);
assertFalse(expectedPrefix.length() == 0);
} else {
- expectedPrefix = this.expectedPrefix;
+ expectedPrefix = params.expectedPrefix();
if (expectedPrefix.length() == 0) {
assertNull(node.getPrefix());
} else {
assertEquals(expectedPrefix, node.getPrefix());
}
}
- if (namespaceURI == null || namespaceURI.length() == 0) {
+ if (params.namespaceURI() == null || params.namespaceURI().length() ==
0) {
assertNull(node.getNamespace());
} else {
OMNamespace actualNS = node.getNamespace();
assertEquals(expectedPrefix, actualNS.getPrefix());
- assertEquals(namespaceURI, actualNS.getNamespaceURI());
+ assertEquals(params.namespaceURI(), actualNS.getNamespaceURI());
}
- if (namespaceURI == null || namespaceURI.length() == 0) {
+ if (params.namespaceURI() == null || params.namespaceURI().length() ==
0) {
assertNull(node.getNamespaceURI());
} else {
- assertEquals(namespaceURI, node.getNamespaceURI());
+ assertEquals(params.namespaceURI(), node.getNamespaceURI());
}
QName qname = node.getQName();
assertEquals(expectedPrefix, qname.getPrefix());
- assertEquals(namespaceURI == null ? "" : namespaceURI,
qname.getNamespaceURI());
+ assertEquals(
+ params.namespaceURI() == null ? "" : params.namespaceURI(),
+ qname.getNamespaceURI());
if (element != null) {
Iterator<OMNamespace> it = element.getAllDeclaredNamespaces();
- if (expectNSDecl) {
+ if (params.expectNSDecl()) {
assertTrue(it.hasNext());
OMNamespace decl = it.next();
assertEquals(expectedPrefix, decl.getPrefix());
- assertEquals(namespaceURI == null ? "" : namespaceURI,
decl.getNamespaceURI());
+ assertEquals(
+ params.namespaceURI() == null ? "" :
params.namespaceURI(),
+ decl.getNamespaceURI());
}
assertFalse(it.hasNext());
}
diff --git
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/attribute/TestSetNamespace.java
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/attribute/TestSetNamespace.java
index 6217c452b..d1fef9b39 100644
---
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/attribute/TestSetNamespace.java
+++
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/attribute/TestSetNamespace.java
@@ -31,31 +31,13 @@ import org.apache.axiom.ts.om.SetNamespaceTestCase;
* {@link OMAttribute}.
*/
public class TestSetNamespace extends SetNamespaceTestCase {
- private final boolean declare;
- private final boolean owner;
-
/**
- * Constructor.
+ * Test parameters for {@link TestSetNamespace}.
*
- * @param metaFactory the meta factory
- * @param namespaceURI the namespace URI to set or <code>null</code> to
set a <code>null</code>
- * {@link OMNamespace}
- * @param prefix the prefix to set or <code>null</code> to generate a
prefix
- * @param declare the value of the <code>declare</code> argument
+ * @param declare the value of the {@code declare} argument
* @param owner flag indicating whether the attribute should have an owner
element
- * @param prefixInScope the prefix of an existing namespace declaration in
scope for the given
- * namespace URI, or <code>null</code> if no matching namespace
declaration is in scope
- * @param invalid flag indicating whether the namespace is invalid and
{@link
- * OMNamedInformationItem#setNamespace(OMNamespace, boolean)} is
expected to throw an {@link
- * IllegalArgumentException}
- * @param expectedPrefix the expected prefix of the attribute after the
invocation of {@link
- * OMNamedInformationItem#setNamespace(OMNamespace, boolean)}, or null
if the method is
- * expected to generate a prefix
- * @param expectNSDecl indicates whether {@link
OMNamedInformationItem#setNamespace(OMNamespace,
- * boolean)} is expected to generate a namespace declaration on the
owner element
*/
- public TestSetNamespace(
- OMMetaFactory metaFactory,
+ public record Params(
String namespaceURI,
String prefix,
boolean declare,
@@ -63,24 +45,21 @@ public class TestSetNamespace extends SetNamespaceTestCase {
String prefixInScope,
boolean invalid,
String expectedPrefix,
- boolean expectNSDecl) {
- super(
- metaFactory,
- namespaceURI,
- prefix,
- prefixInScope,
- invalid,
- expectedPrefix,
- expectNSDecl);
- this.declare = declare;
- this.owner = owner;
- addTestParameter("declare", declare);
- addTestParameter("owner", owner);
+ boolean expectNSDecl)
+ implements SetNamespaceTestCase.Params {}
+
+ private final Params params;
+
+ public TestSetNamespace(OMMetaFactory metaFactory, Params params) {
+ super(metaFactory, params);
+ this.params = params;
+ addTestParameter("declare", params.declare());
+ addTestParameter("owner", params.owner());
}
@Override
protected boolean context() {
- return owner;
+ return params.owner();
}
@Override
@@ -94,6 +73,6 @@ public class TestSetNamespace extends SetNamespaceTestCase {
@Override
protected void setNamespace(OMNamedInformationItem node, OMNamespace ns) {
- node.setNamespace(ns, declare);
+ node.setNamespace(ns, params.declare());
}
}
diff --git
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetNamespace.java
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetNamespace.java
index 95238ec62..e704c5513 100644
---
a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetNamespace.java
+++
b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetNamespace.java
@@ -30,28 +30,27 @@ import org.apache.axiom.ts.om.SetNamespaceTestCase;
* OMNamedInformationItem#setNamespace(OMNamespace, boolean)}.
*/
public class TestSetNamespace extends SetNamespaceTestCase {
- private final Boolean declare;
-
- public TestSetNamespace(
- OMMetaFactory metaFactory,
+ /**
+ * @param declare the value of the {@code declare} argument, or {@code
null} to use the 1-arg
+ * overload
+ */
+ public record Params(
String namespaceURI,
String prefix,
Boolean declare,
String prefixInScope,
boolean invalid,
String expectedPrefix,
- boolean expectNSDecl) {
- super(
- metaFactory,
- namespaceURI,
- prefix,
- prefixInScope,
- invalid,
- expectedPrefix,
- expectNSDecl);
- this.declare = declare;
- if (declare != null) {
- addTestParameter("declare", declare.booleanValue());
+ boolean expectNSDecl)
+ implements SetNamespaceTestCase.Params {}
+
+ private final Params params;
+
+ public TestSetNamespace(OMMetaFactory metaFactory, Params params) {
+ super(metaFactory, params);
+ this.params = params;
+ if (params.declare() != null) {
+ addTestParameter("declare", params.declare().booleanValue());
}
}
@@ -67,10 +66,10 @@ public class TestSetNamespace extends SetNamespaceTestCase {
@Override
protected void setNamespace(OMNamedInformationItem node, OMNamespace ns) {
- if (declare == null) {
+ if (params.declare() == null) {
((OMElement) node).setNamespace(ns);
} else {
- node.setNamespace(ns, declare.booleanValue());
+ node.setNamespace(ns, params.declare().booleanValue());
}
}
}