diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/Entity.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/Entity.java index eab0f76..603f577 100644 --- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/Entity.java +++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/Entity.java @@ -8,13 +8,16 @@ public class Entity { private String name; - public EntityType type; + private EntityType type; public int getId() { return id; } public void setId(int id) { + if (id < 0) { + throw new IllegalArgumentException("Id can't be null"); + } this.id = id; } @@ -33,5 +36,27 @@ public class Entity { public void setType(EntityType type) { this.type = type; } + + @Override + public int hashCode() { + return getName() == null ? super.hashCode() : getName().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(super.equals(obj)) { + return true; + } + if (obj instanceof Entity) { + Entity entity = (Entity) obj; + if (getType() != entity.getType()) { + return false; + } + + boolean namesAreTheSame = entity.getName() != null && getName() != null && getName().equals(entity.getName()); + return namesAreTheSame; + } + return false; + } } diff --git a/src/test/java/cm/soungui/guacamole/ext/wallix/sync/db/test/TestEntity.java b/src/test/java/cm/soungui/guacamole/ext/wallix/sync/db/test/TestEntity.java new file mode 100644 index 0000000..004a4df --- /dev/null +++ b/src/test/java/cm/soungui/guacamole/ext/wallix/sync/db/test/TestEntity.java @@ -0,0 +1,84 @@ +package cm.soungui.guacamole.ext.wallix.sync.db.test; + +import java.util.HashSet; +import java.util.Set; + +import cm.soungui.guacamole.ext.wallix.sync.db.Entity; +import cm.soungui.guacamole.ext.wallix.sync.db.User; +import cm.soungui.guacamole.ext.wallix.sync.db.UserGroup; +import junit.framework.TestCase; + +public class TestEntity extends TestCase { + + public final void testEqualsSameObject() { + User user1 = new User(); + + assertEquals(user1, user1); + } + + public final void testEqualsDifferentObject() { + User user1 = new User(); + User user2 = new User(); + + assertNotSame(user1, user2); + } + + public final void testEqualsSameName() { + User user1 = new User(); + user1.setName("name"); + User user2 = new User(); + user2.setName("name"); + + assertEquals(user1, user2); + } + + public final void testEqualsDifferentName() { + User user1 = new User(); + user1.setName("name"); + User user2 = new User(); + user2.setName("anotherName"); + + assertNotSame(user1, user2); + } + + public final void testEqualsDifferentType() { + User user1 = new User(); + user1.setName("name"); + UserGroup group = new UserGroup(); + group.setName("name"); + + assertNotSame(user1, group); + } + + public final void testAddDifferentNames() { + Set entities = new HashSet<>(); + + User user1 = new User(); + user1.setName("name"); + User user2 = new User(); + user2.setName("anotherName"); + + entities.add(user1); + entities.add(user2); + + assert(entities.size()==2); + } + + public final void testAddSameName() { + Set entities = new HashSet<>(); + + User user1 = new User(); + user1.setName("name"); + User user2 = new User(); + user2.setName("name"); + + entities.add(user1); + + assert(entities.contains(user2)); + + entities.add(user2); +// + assert(entities.size()==1); + } + +}