/*******************************************************************************
* Copyright (C) 2011, Dariusz Luksza <dariusz@luksza.org>
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.egit.core.synchronize;
import static org.eclipse.egit.core.synchronize.GitCommitsModelCache.ZERO_ID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.eclipse.egit.core.synchronize.GitCommitsModelCache.Change;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
import org.junit.Test;
public class ChangeTest {
private static final AbbreviatedObjectId MISC_ID = AbbreviatedObjectId
.fromString("63448b851ae8831a1ad007f588508d3246ec7ace");
@Test
public void shouldNotBeEqualWithNullRefference() {
// given
Change change = new Change();
// when
boolean result = change.equals(null);
// then
assertFalse(result);
}
@Test
public void shouldNotBeEqualWithDifferentType() {
// given
Change change = new Change();
// when
boolean result = change.equals(new Object());
// then
assertFalse(result);
}
@Test
public void shouldBeEqualWhenBothIdsAreNull() {
// given
Change change = new Change();
// when
boolean result = change.equals(new Change());
// then
assertTrue(result);
}
@Test
public void shouldNotBeEqualWhenOneObjectIdIsNull() {
// given
Change change = new Change();
change.objectId = ZERO_ID;
// when
boolean result = change.equals(new Change());
// then
assertFalse(result);
}
@Test
public void shouldBeEqualWhenBothObjectIdsAreTheSame() {
// given
Change c1 = new Change();
Change c2 = new Change();
c1.objectId = c2.objectId = MISC_ID;
// when
boolean result = c1.equals(c2);
// then
assertTrue(result);
assertEquals(c1.hashCode(), c2.hashCode());
}
@Test
public void shouldNotBeEqualWhenObjectIdsAreDifferent() {
// given
Change c1 = new Change();
Change c2 = new Change();
c1.objectId = ZERO_ID;
c2.objectId = MISC_ID;
// when
boolean result = c1.equals(c2);
// then
assertFalse(result);
assertFalse(c1.hashCode() == c2.hashCode());
}
@Test
public void shouldNotBeEqualWhenOneRemoteObjectIsNull() {
// given
Change c1 = new Change();
Change c2 = new Change();
c1.objectId = c2.commitId = ZERO_ID;
c1.remoteObjectId = MISC_ID;
// when
boolean result = c1.equals(c2);
// then
assertFalse(result);
assertFalse(c1.hashCode() == c2.hashCode());
}
@Test
public void shouldBeEqualWhenBothObjectIdsAndRemoteIdsAreSame() {
// given
Change c1 = new Change();
Change c2 = new Change();
c1.objectId = c2.objectId = ZERO_ID;
c1.remoteObjectId = c2.remoteObjectId = MISC_ID;
// when
boolean result = c1.equals(c2);
// then
assertTrue(result);
assertEquals(c1.hashCode(), c2.hashCode());
}
}