diff --git a/ccm-core/src/test/java/org/libreccm/core/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/core/EqualsAndHashCodeTest.java
index ed0cc22de..2184d9f61 100644
--- a/ccm-core/src/test/java/org/libreccm/core/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/core/EqualsAndHashCodeTest.java
@@ -24,11 +24,11 @@ import org.libreccm.tests.categories.UnitTest;
import java.util.Arrays;
import java.util.Collection;
+
import nl.jqno.equalsverifier.EqualsVerifier;
import nl.jqno.equalsverifier.Warning;
import org.junit.Test;
import org.libreccm.categorization.Category;
-import org.libreccm.categorization.Domain;
import org.libreccm.security.Group;
import org.libreccm.security.Role;
import org.libreccm.security.User;
diff --git a/ccm-core/src/test/java/org/libreccm/messaging/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/messaging/EqualsAndHashCodeTest.java
index 6ae2be5d7..687377921 100644
--- a/ccm-core/src/test/java/org/libreccm/messaging/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/messaging/EqualsAndHashCodeTest.java
@@ -20,9 +20,13 @@ package org.libreccm.messaging;
import nl.jqno.equalsverifier.Warning;
import org.junit.Test;
-import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.libreccm.categorization.Category;
+import org.libreccm.core.CcmObject;
+import org.libreccm.security.Group;
+import org.libreccm.security.Role;
+import org.libreccm.security.User;
import org.libreccm.tests.categories.UnitTest;
import java.util.Arrays;
@@ -33,7 +37,7 @@ import java.util.Collection;
* @author Jens Pelzetter
*/
@RunWith(Parameterized.class)
-@Category(UnitTest.class)
+@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest {
private final Class> entityClass;
@@ -55,17 +59,76 @@ public class EqualsAndHashCodeTest {
public void verifyEqualsAndHashCode() {
final Message message1 = new Message();
message1.setSubject("Message One");
-
+
final Message message2 = new Message();
message2.setSubject("Message Two");
-
+
+ final Group group1 = new Group();
+ group1.setName("group1");
+
+ final Group group2 = new Group();
+ group2.setName("group2");
+
+ final MessageThread thread1 = new MessageThread();
+ thread1.setDisplayName("thread1");
+
+ final MessageThread thread2 = new MessageThread();
+ thread2.setDisplayName("thread2");
+
+ final CcmObject ccmObject1 = new CcmObject();
+ ccmObject1.setObjectId(-100);
+ ccmObject1.setDisplayName("Object 1");
+
+ final CcmObject ccmObject2 = new CcmObject();
+ ccmObject1.setObjectId(-200);
+ ccmObject1.setDisplayName("Object 2");
+
+ final User user1 = new TestUser();
+ user1.setName("user1");
+
+ final User user2 = new TestUser();
+ user2.setName("user2");
+
+ final Role role1 = new Role();
+ role1.setName("role1");
+
+ final Role role2 = new Role();
+ role2.setName("role2");
+
+ final Category category1 = new Category();
+ category1.setName("Category One");
+
+ final Category category2 = new Category();
+ category2.setName("Category Two");
+
nl.jqno.equalsverifier.EqualsVerifier
.forClass(entityClass)
.suppress(Warning.STRICT_INHERITANCE)
.suppress(Warning.NONFINAL_FIELDS)
+ .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
.withRedefinedSuperclass()
.withPrefabValues(Message.class, message1, message2)
+ .withPrefabValues(Group.class, group1, group2)
+ .withPrefabValues(MessageThread.class, thread1, thread2)
+ .withPrefabValues(CcmObject.class, ccmObject1, ccmObject2)
+ .withPrefabValues(User.class, user1, user2)
+ .withPrefabValues(Role.class, role1, role2)
+ .withPrefabValues(Category.class, category1, category2)
.verify();
}
+ /**
+ * {@link User} has a protected constructor, so have have do this to create
+ * users for the test...
+ */
+ private class TestUser extends User {
+
+ private static final long serialVersionUID = -9052762220990453621L;
+
+ protected TestUser() {
+ super();
+ }
+
+ }
+
}
diff --git a/ccm-core/src/test/java/org/libreccm/notification/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/notification/EqualsAndHashCodeTest.java
index bd9216d0c..aa9df9dcf 100644
--- a/ccm-core/src/test/java/org/libreccm/notification/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/notification/EqualsAndHashCodeTest.java
@@ -21,10 +21,14 @@ package org.libreccm.notification;
import nl.jqno.equalsverifier.EqualsVerifier;
import nl.jqno.equalsverifier.Warning;
import org.junit.Test;
-import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.libreccm.categorization.Category;
+import org.libreccm.core.CcmObject;
import org.libreccm.messaging.Message;
+import org.libreccm.security.Party;
+import org.libreccm.security.Role;
+import org.libreccm.security.User;
import org.libreccm.tests.categories.UnitTest;
import java.util.Arrays;
@@ -35,7 +39,7 @@ import java.util.Collection;
* @author Jens Pelzetter
*/
@RunWith(Parameterized.class)
-@Category(UnitTest.class)
+@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest {
private final Class> entityClass;
@@ -57,17 +61,90 @@ public class EqualsAndHashCodeTest {
public void verifyEqualsAndHashCode() {
final Message message1 = new Message();
message1.setSubject("Message One");
-
+
final Message message2 = new Message();
message2.setSubject("Message Two");
-
+
+ final Role role1 = new Role();
+ role1.setName("role1");
+
+ final Role role2 = new Role();
+ role2.setName("role2");
+
+ final Digest digest1 = new Digest();
+ digest1.setDisplayName("digest1");
+
+ final Digest digest2 = new Digest();
+ digest2.setDisplayName("digest2");
+
+ final Party party1 = new TestParty();
+ party1.setName("party1");
+
+ final Party party2 = new TestParty();
+ party2.setName("party2");
+
+ final CcmObject ccmObject1 = new CcmObject();
+ ccmObject1.setObjectId(-100);
+ ccmObject1.setDisplayName("Object 1");
+
+ final CcmObject ccmObject2 = new CcmObject();
+ ccmObject1.setObjectId(-200);
+ ccmObject1.setDisplayName("Object 2");
+
+ final User user1 = new TestUser();
+ user1.setName("user1");
+
+ final User user2 = new TestUser();
+ user2.setName("user2");
+
+ final Category category1 = new Category();
+ category1.setName("Category One");
+
+ final Category category2 = new Category();
+ category2.setName("Category Two");
+
EqualsVerifier
.forClass(entityClass)
.suppress(Warning.STRICT_INHERITANCE)
.suppress(Warning.NONFINAL_FIELDS)
+ .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
.withRedefinedSuperclass()
.withPrefabValues(Message.class, message1, message2)
+ .withPrefabValues(Role.class, role1, role2)
+ .withPrefabValues(Digest.class, digest1, digest2)
+ .withPrefabValues(Party.class, party1, party2)
+ .withPrefabValues(CcmObject.class, ccmObject1, ccmObject2)
+ .withPrefabValues(User.class, user1, user2)
+ .withPrefabValues(Category.class, category1, category2)
.verify();
}
+ /**
+ * {@link Party} has a protected constructor, so have have do this to create
+ * users for the test...
+ */
+ private class TestParty extends Party {
+
+ private static final long serialVersionUID = 2021200151554200503L;
+
+ protected TestParty() {
+ super();
+ }
+
+ }
+
+ /**
+ * {@link User} has a protected constructor, so have have do this to create
+ * users for the test...
+ */
+ private class TestUser extends User {
+
+ private static final long serialVersionUID = -9052762220990453621L;
+
+ protected TestUser() {
+ super();
+ }
+
+ }
+
}
diff --git a/ccm-core/src/test/java/org/libreccm/portal/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/portal/EqualsAndHashCodeTest.java
index 4666f849f..677f34ab2 100644
--- a/ccm-core/src/test/java/org/libreccm/portal/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/portal/EqualsAndHashCodeTest.java
@@ -21,10 +21,13 @@ package org.libreccm.portal;
import nl.jqno.equalsverifier.EqualsVerifier;
import nl.jqno.equalsverifier.Warning;
import org.junit.Test;
-import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.libreccm.categorization.Category;
+import org.libreccm.core.CcmObject;
import org.libreccm.core.Resource;
+import org.libreccm.security.Role;
+import org.libreccm.security.User;
import org.libreccm.tests.categories.UnitTest;
import java.util.Arrays;
@@ -35,7 +38,7 @@ import java.util.Collection;
* @author Jens Pelzetter
*/
@RunWith(Parameterized.class)
-@Category(UnitTest.class)
+@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest {
private final Class> entityClass;
@@ -56,24 +59,69 @@ public class EqualsAndHashCodeTest {
public void verifyEqualsAndHashCode() {
final Portal portal1 = new Portal();
portal1.setDisplayName("Portal One");
-
+
final Portal portal2 = new Portal();
portal2.setDisplayName("Portal Two");
-
+
final Resource resource1 = new Resource();
resource1.setDisplayName("Resource One");
-
+
final Resource resource2 = new Resource();
resource2.setDisplayName("Resource Two");
-
+
+ final CcmObject ccmObject1 = new CcmObject();
+ ccmObject1.setObjectId(-100);
+ ccmObject1.setDisplayName("Object 1");
+
+ final CcmObject ccmObject2 = new CcmObject();
+ ccmObject1.setObjectId(-200);
+ ccmObject1.setDisplayName("Object 2");
+
+ final Role role1 = new Role();
+ role1.setName("role1");
+
+ final Role role2 = new Role();
+ role2.setName("role2");
+
+ final User user1 = new TestUser();
+ user1.setName("user1");
+
+ final User user2 = new TestUser();
+ user2.setName("user2");
+
+ final Category category1 = new Category();
+ category1.setName("Category One");
+
+ final Category category2 = new Category();
+ category2.setName("Category Two");
+
EqualsVerifier
.forClass(entityClass)
.suppress(Warning.STRICT_INHERITANCE)
.suppress(Warning.NONFINAL_FIELDS)
+ .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
.withRedefinedSuperclass()
.withPrefabValues(Portal.class, portal1, portal2)
.withPrefabValues(Resource.class, resource1, resource2)
+ .withPrefabValues(CcmObject.class, ccmObject1, ccmObject2)
+ .withPrefabValues(Role.class, role1, role2)
+ .withPrefabValues(User.class, user1, user2)
+ .withPrefabValues(Category.class, category1, category2)
.verify();
}
+ /**
+ * {@link User} has a protected constructor, so have have do this to create
+ * users for the test...
+ */
+ private class TestUser extends User {
+
+ private static final long serialVersionUID = -9052762220990453621L;
+
+ protected TestUser() {
+ super();
+ }
+
+ }
+
}
diff --git a/ccm-core/src/test/java/org/libreccm/runtime/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/runtime/EqualsAndHashCodeTest.java
index 89deb5ca8..4008f27a9 100644
--- a/ccm-core/src/test/java/org/libreccm/runtime/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/runtime/EqualsAndHashCodeTest.java
@@ -62,6 +62,7 @@ public class EqualsAndHashCodeTest {
.forClass(entityClass)
.suppress(Warning.STRICT_INHERITANCE)
.suppress(Warning.NONFINAL_FIELDS)
+ .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
.withRedefinedSuperclass()
.withPrefabValues(Initalizer.class, initalizer1, initalizer2)
.verify();
diff --git a/ccm-core/src/test/java/org/libreccm/search/lucene/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/search/lucene/EqualsAndHashCodeTest.java
index 35b1fbdb5..67edc8b4d 100644
--- a/ccm-core/src/test/java/org/libreccm/search/lucene/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/search/lucene/EqualsAndHashCodeTest.java
@@ -18,11 +18,13 @@
*/
package org.libreccm.search.lucene;
-import org.junit.experimental.categories.Category;
+import nl.jqno.equalsverifier.Warning;
+import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.libreccm.security.Group;
+import org.libreccm.security.User;
import org.libreccm.tests.categories.UnitTest;
-import org.libreccm.testutils.EqualsVerifier;
import java.util.Arrays;
import java.util.Collection;
@@ -32,8 +34,10 @@ import java.util.Collection;
* @author Jens Pelzetter
*/
@RunWith(Parameterized.class)
-@Category(UnitTest.class)
-public class EqualsAndHashCodeTest extends EqualsVerifier {
+@org.junit.experimental.categories.Category(UnitTest.class)
+public class EqualsAndHashCodeTest {
+
+ private final Class> entityClass;
@Parameterized.Parameters(name = "{0}")
public static Collection> data() {
@@ -44,7 +48,52 @@ public class EqualsAndHashCodeTest extends EqualsVerifier {
}
public EqualsAndHashCodeTest(final Class> entityClass) {
- super(entityClass);
+ this.entityClass = entityClass;
+ }
+
+ @Test
+ public void verifyEqualsAndHashCode() {
+ final Document document1 = new Document();
+ document1.setTitle("document1");
+
+ final Document document2 = new Document();
+ document2.setTitle("document2");
+
+ final Group group1 = new Group();
+ group1.setName("group1");
+
+ final Group group2 = new Group();
+ group2.setName("group2");
+
+ final User user1 = new TestUser();
+ user1.setName("user1");
+
+ final User user2 = new TestUser();
+ user2.setName("user2");
+
+ nl.jqno.equalsverifier.EqualsVerifier
+ .forClass(entityClass)
+ .suppress(Warning.STRICT_INHERITANCE)
+ .suppress(Warning.NONFINAL_FIELDS)
+ .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
+ .withPrefabValues(Group.class, group1, group2)
+ .withPrefabValues(Document.class, document1, document2)
+ .withPrefabValues(User.class, user1, user2)
+ .verify();
+ }
+
+ /**
+ * {@link User} has a protected constructor, so have have do this to create
+ * users for the test...
+ */
+ private class TestUser extends User {
+
+ private static final long serialVersionUID = -9052762220990453621L;
+
+ protected TestUser() {
+ super();
+ }
+
}
}
diff --git a/ccm-core/src/test/java/org/libreccm/security/EqualsAndHashCodeTest.java b/ccm-core/src/test/java/org/libreccm/security/EqualsAndHashCodeTest.java
index 5256c8e42..0a5195afa 100644
--- a/ccm-core/src/test/java/org/libreccm/security/EqualsAndHashCodeTest.java
+++ b/ccm-core/src/test/java/org/libreccm/security/EqualsAndHashCodeTest.java
@@ -18,11 +18,12 @@
*/
package org.libreccm.security;
-import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.libreccm.core.CcmObject;
import org.libreccm.tests.categories.UnitTest;
import org.libreccm.testutils.EqualsVerifier;
+import org.libreccm.workflow.UserTask;
import java.util.Arrays;
import java.util.Collection;
@@ -32,12 +33,12 @@ import java.util.Collection;
* @author Jens Pelzetter
*/
@RunWith(Parameterized.class)
-@Category(UnitTest.class)
+@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest extends EqualsVerifier {
-
+
@Parameterized.Parameters(name = "{0}")
public static Collection> data() {
- return Arrays.asList(new Class>[] {
+ return Arrays.asList(new Class>[]{
Group.class,
GroupMembership.class,
Party.class,
@@ -48,8 +49,59 @@ public class EqualsAndHashCodeTest extends EqualsVerifier {
User.class
});
}
-
+
public EqualsAndHashCodeTest(final Class> entityClass) {
super(entityClass);
}
+
+ @Override
+ protected void addPrefabValues(
+ final nl.jqno.equalsverifier.EqualsVerifier> verifier) {
+ final Group group1 = new Group();
+ group1.setName("group1");
+
+ final Group group2 = new Group();
+ group2.setName("group2");
+
+ final User user1 = new User();
+ user1.setName("user1");
+
+ final User user2 = new User();
+ user2.setName("user2");
+
+ final Role role1 = new Role();
+ role1.setName("role1");
+
+ final Role role2 = new Role();
+ role2.setName("role2");
+
+ final Party party1 = new Party();
+ party1.setName("party1");
+
+ final Party party2 = new Party();
+ party2.setName("party2");
+
+ final CcmObject ccmObject1 = new CcmObject();
+ ccmObject1.setObjectId(-100);
+ ccmObject1.setDisplayName("Object 1");
+
+ final CcmObject ccmObject2 = new CcmObject();
+ ccmObject1.setObjectId(-200);
+ ccmObject1.setDisplayName("Object 2");
+
+ final UserTask task1 = new UserTask();
+ task1.setTaskId(-10);
+
+ final UserTask task2 = new UserTask();
+ task2.setTaskId(-20);
+
+ verifier
+ .withPrefabValues(Group.class, group1, group2)
+ .withPrefabValues(User.class, user1, user2)
+ .withPrefabValues(Role.class, role1, role2)
+ .withPrefabValues(Party.class, party1, party2)
+ .withPrefabValues(CcmObject.class, ccmObject1, ccmObject2)
+ .withPrefabValues(UserTask.class, task1, task2);
+ }
+
}
diff --git a/ccm-testutils/src/main/java/org/libreccm/testutils/EqualsVerifier.java b/ccm-testutils/src/main/java/org/libreccm/testutils/EqualsVerifier.java
index 208df4dae..779f080c1 100644
--- a/ccm-testutils/src/main/java/org/libreccm/testutils/EqualsVerifier.java
+++ b/ccm-testutils/src/main/java/org/libreccm/testutils/EqualsVerifier.java
@@ -68,21 +68,64 @@ import org.junit.runners.Parameterized;
* @author Jens Pelzetter
*/
public class EqualsVerifier {
-
+
private final Class> entityClass;
-
+
public EqualsVerifier(final Class> entityClass) {
this.entityClass = entityClass;
}
-
+
+ /**
+ * Overwrite this methods to suppress warnings from the
+ * {@link nl.jqno.equalsverifier.EqualsVerifier}. Per default the following
+ * warnings are suppressed:
+ *
+ *
+ * - {@code Warning.Warning.STRICT_INHERITANCE}
+ * - {@code Warning.NONFINAL_FIELDS}
+ * - {@code Warning.ALL_FIELDS_SHOULD_BE_USED}
+ *
+ *
+ * @param verifier The verifier to which the suppression are added.
+ */
+ protected void addSuppressWarnings(
+ final nl.jqno.equalsverifier.EqualsVerifier> verifier) {
+
+ verifier
+ .suppress(Warning.STRICT_INHERITANCE)
+ .suppress(Warning.NONFINAL_FIELDS)
+ .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED);
+ }
+
+ /**
+ * Use this method to add prefab values to the verifier.
+ *
+ * @param verifier The verifier to which the prefab values are added.
+ */
+ protected void addPrefabValues(
+ final nl.jqno.equalsverifier.EqualsVerifier> verifier) {
+ //Nothing here
+ }
+
@Test
public void verifyEqualsAndHashCode() {
- nl.jqno.equalsverifier.EqualsVerifier
- .forClass(entityClass)
- .suppress(Warning.STRICT_INHERITANCE)
- .suppress(Warning.NONFINAL_FIELDS)
- .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
- .withRedefinedSuperclass()
- .verify();
+ nl.jqno.equalsverifier.EqualsVerifier> verifier
+ = nl.jqno.equalsverifier.EqualsVerifier
+ .forClass(entityClass)
+ .withRedefinedSuperclass();
+
+ addSuppressWarnings(verifier);
+ addPrefabValues(verifier);
+
+ verifier.verify();
+
+// nl.jqno.equalsverifier.EqualsVerifier
+// .forClass(entityClass)
+// .suppress(Warning.STRICT_INHERITANCE)
+// .suppress(Warning.NONFINAL_FIELDS)
+// .suppress(Warning.ALL_FIELDS_SHOULD_BE_USED)
+// .withRedefinedSuperclass()
+// .verify();
}
+
}