package org.ovirt.engine.core.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Collections; import java.util.List; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.VMStatus; public class ObjectIdentityCheckerTest { @Test public void testIsUpdateable() { ObjectIdentityChecker oic = new ObjectIdentityChecker(Jedi.class); assertFalse("Should be false by default", oic.isFieldUpdatable("name")); oic.addPermittedFields("name"); assertTrue("Should be true now", oic.isFieldUpdatable("name")); } @Test public void testNoChanges() { Jedi jedi1 = new Jedi(); Jedi jedi2 = new Jedi(); List<String> changes = ObjectIdentityChecker.getChangedFields(jedi1, jedi2); assertEquals("Should be no changes", 0, changes.size()); } @Test public void testChanges() { Jedi jedi1 = new Jedi(); Jedi jedi2 = new Jedi(); jedi2.saberColor = "red"; // Gone to the dark side List<String> changes = ObjectIdentityChecker.getChangedFields(jedi1, jedi2); assertEquals("Should be 1 changes", 1, changes.size()); } @Test public void testIsFieldsUpdated() { Jedi jedi1 = new Jedi(); Jedi jedi2 = new Jedi(); jedi2.saberColor = "red"; // Gone to the dark side ObjectIdentityChecker oic = new ObjectIdentityChecker(Jedi.class); boolean changed = oic.isFieldsUpdated(jedi1, jedi2, Collections.singletonList("name")); assertFalse("No Change", changed); changed = oic.isFieldsUpdated(jedi1, jedi2, Collections.singletonList("saberColor")); assertTrue("1 Change", changed); } @Test public void testHotsetUpdateableWhenHotsetRequested() { ObjectIdentityChecker oic = new ObjectIdentityChecker(Jedi.class); oic.addHotsetFields("name"); assertTrue("hot set requested for hot set fields should be true", oic.isFieldUpdatable(null, "name", null, true)); } @Test public void testHotsetNotUpdateableWhenHotsetNotRequested() { ObjectIdentityChecker oic = new ObjectIdentityChecker(Jedi.class); assertFalse("Should be false by default", oic.isFieldUpdatable("name")); oic.addHotsetFields("name"); assertFalse("hot set not requested should return false even if field is hot set", oic.isFieldUpdatable(null, "name", null, false)); } @Test public void testHotsetUpdateableWhenHotsetRequestedWithStatus() { ObjectIdentityChecker oic = new ObjectIdentityChecker(Jedi.class); oic.addField(VMStatus.Down, "name"); oic.addHotsetFields("name"); assertTrue("hot set requested for hot set fields should be true", oic.isFieldUpdatable(VMStatus.Down, "name", null, true)); } @Test public void testHotsetUpdateableWhenHotsetNotRequestedWithStatus() { ObjectIdentityChecker oic = new ObjectIdentityChecker(Jedi.class); oic.addField(VMStatus.Down, "name"); oic.addHotsetFields("name"); assertTrue("hot set not requested field should be updateable according to status", oic.isFieldUpdatable(VMStatus.Down, "name", null, false)); } }