Add combined ID class
[Sone.git] / src / test / java / net / pterodactylus / sone / data / IdTest.java
1 package net.pterodactylus.sone.data;
2
3 import static org.hamcrest.MatcherAssert.assertThat;
4 import static org.hamcrest.Matchers.equalTo;
5 import static org.hamcrest.Matchers.is;
6 import static org.hamcrest.Matchers.not;
7
8 import org.junit.Test;
9
10 /**
11  * Unit test for {@link Id}.
12  *
13  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
14  */
15 public class IdTest {
16
17         private static final String SONE_ID = "~Yp72VX0c6FLDvgIzip5wIvaGIIrjKcKvnX~pTaMKXs";
18         private static final String ELEMENT_ID = "88CC70AE-E853-4EEE-B245-E4C55F40DDDF";
19         private static final String EXPECTED_ID = "139a629a13f6a2c4191fb19ecead7e57335ea3deb2a971b88d5e004378c4daad";
20         private final Id id = Id.from(SONE_ID, ELEMENT_ID);
21
22         @Test
23         public void idBuilderBuildsCorrectIds() {
24                 assertThat(id.getSoneId(), is(SONE_ID));
25                 assertThat(id.getElementId(), is(ELEMENT_ID));
26                 assertThat(id.getExternal(), is(EXPECTED_ID));
27         }
28
29         @Test
30         public void twoIdsAreNotEqualIfSoneIdIsDifferent() {
31                 Id id2 = Id.from(SONE_ID + "1", ELEMENT_ID);
32                 assertThat(id2, not(equalTo(id)));
33                 assertThat(id, not(equalTo(id2)));
34         }
35
36         @Test
37         public void twoIdsAreNotEqualIfElementIdIsDifferent() {
38                 Id id2 = Id.from(SONE_ID, ELEMENT_ID + "1");
39                 assertThat(id2, not(equalTo(id)));
40                 assertThat(id, not(equalTo(id2)));
41         }
42
43         @Test
44         public void twoIdsAreEqualIfSoneAndElementIdIsEqual() {
45                 Id id2 = Id.from(SONE_ID, ELEMENT_ID);
46                 assertThat(id2, equalTo(id));
47                 assertThat(id, equalTo(id2));
48         }
49
50         @Test
51         public void twoIdsHaveTheSameHashCodeIfTheyAreEqual() {
52                 Id id2 = Id.from(SONE_ID, ELEMENT_ID);
53                 assertThat(id2.hashCode(), equalTo(id.hashCode()));
54         }
55
56         @Test
57         public void nullIsNotEqualToId() {
58                 assertThat(id, not(equalTo(null)));
59         }
60
61         @Test
62         public void objectOfDifferentClassIsNotEqualToId() {
63                 assertThat(id, not(equalTo(new Object())));
64         }
65
66         @Test
67         public void stringRepresentationMatchesTheExternalId() {
68                 assertThat(id.toString(), is(EXPECTED_ID));
69         }
70
71 }