From f5be4f3051983224df454bf2e1c2568152ec0f28 Mon Sep 17 00:00:00 2001 From: jensp Date: Thu, 12 May 2016 18:30:19 +0000 Subject: [PATCH] CCM NG: - Migrated more EqualsAndHashCode tests - Also added methods to add suppress warning statements and prefab values to the EqualsVertifier from the ccm-testutils module git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4068 8810af33-2d31-482b-a856-94f89814c4df --- .../libreccm/core/EqualsAndHashCodeTest.java | 2 +- .../messaging/EqualsAndHashCodeTest.java | 71 +++++++++++++++- .../notification/EqualsAndHashCodeTest.java | 85 ++++++++++++++++++- .../portal/EqualsAndHashCodeTest.java | 60 +++++++++++-- .../runtime/EqualsAndHashCodeTest.java | 1 + .../search/lucene/EqualsAndHashCodeTest.java | 59 +++++++++++-- .../security/EqualsAndHashCodeTest.java | 62 ++++++++++++-- .../libreccm/testutils/EqualsVerifier.java | 63 +++++++++++--- 8 files changed, 368 insertions(+), 35 deletions(-) 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(); } + }