- 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
pull/2/head
jensp 2016-05-12 18:30:19 +00:00
parent 1d5364bf7f
commit f5be4f3051
8 changed files with 368 additions and 35 deletions

View File

@ -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;

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RunWith(Parameterized.class)
@Category(UnitTest.class)
@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest {
private final Class<?> entityClass;
@ -59,13 +63,72 @@ public class EqualsAndHashCodeTest {
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();
}
}
}

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RunWith(Parameterized.class)
@Category(UnitTest.class)
@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest {
private final Class<?> entityClass;
@ -61,13 +65,86 @@ public class EqualsAndHashCodeTest {
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();
}
}
}

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RunWith(Parameterized.class)
@Category(UnitTest.class)
@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest {
private final Class<?> entityClass;
@ -66,14 +69,59 @@ public class EqualsAndHashCodeTest {
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();
}
}
}

View File

@ -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();

View File

@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@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<Class<?>> 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();
}
}
}

View File

@ -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,7 +33,7 @@ import java.util.Collection;
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RunWith(Parameterized.class)
@Category(UnitTest.class)
@org.junit.experimental.categories.Category(UnitTest.class)
public class EqualsAndHashCodeTest extends EqualsVerifier {
@Parameterized.Parameters(name = "{0}")
@ -52,4 +53,55 @@ public class EqualsAndHashCodeTest extends EqualsVerifier {
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);
}
}

View File

@ -75,14 +75,57 @@ public class EqualsVerifier {
this.entityClass = entityClass;
}
@Test
public void verifyEqualsAndHashCode() {
nl.jqno.equalsverifier.EqualsVerifier
.forClass(entityClass)
/**
* Overwrite this methods to suppress warnings from the
* {@link nl.jqno.equalsverifier.EqualsVerifier}. Per default the following
* warnings are suppressed:
*
* <ul>
* <li>{@code Warning.Warning.STRICT_INHERITANCE}</li>
* <li>{@code Warning.NONFINAL_FIELDS}</li>
* <li>{@code Warning.ALL_FIELDS_SHOULD_BE_USED}</li>
* </ul>
*
* @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)
.withRedefinedSuperclass()
.verify();
.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<?> 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();
}
}