1 package de.dlr.shepard.common.util;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertFalse;
5 import static org.junit.jupiter.api.Assertions.assertTrue;
6
7 import java.util.ArrayList;
8 import java.util.List;
9 import org.junit.jupiter.api.Test;
10
11 public class HasIdTest {
12
13 HasId a = new HasId() {
14 @Override
15 public String getUniqueId() {
16 return "a";
17 }
18 };
19 HasId aEquals = new HasId() {
20 @Override
21 public String getUniqueId() {
22 return "a";
23 }
24 };
25 HasId aDiffers = new HasId() {
26 @Override
27 public String getUniqueId() {
28 return "b";
29 }
30 };
31
32 @Test
33 public void equalsHelperTest_bothNull() {
34 assertTrue(HasId.equalsHelper((HasId) null, (HasId) null));
35 }
36
37 @Test
38 public void equalsHelperTest_oneNull() {
39 assertFalse(HasId.equalsHelper((HasId) null, aDiffers));
40 assertFalse(HasId.equalsHelper(a, null));
41 }
42
43 @Test
44 public void equalsHelperTest_equal() {
45 assertTrue(HasId.equalsHelper(a, a));
46 assertTrue(HasId.equalsHelper(a, aEquals));
47 assertFalse(HasId.equalsHelper(a, aDiffers));
48 }
49
50 @Test
51 public void equalsHelpersTest_bothNull() {
52 assertTrue(HasId.areEqualSetsByUniqueId((List<HasId>) null, (List<HasId>) null));
53 }
54
55 @Test
56 public void equalsHelpersTest_oneNull() {
57 assertFalse(HasId.areEqualSetsByUniqueId(null, List.of(aDiffers)));
58 assertFalse(HasId.areEqualSetsByUniqueId(List.of(a), null));
59 }
60
61 @Test
62 public void equalsHelpersTest_equal() {
63 List<HasId> nullList = new ArrayList<>();
64 nullList.add(null);
65 assertTrue(HasId.areEqualSetsByUniqueId(List.of(a), List.of(aEquals)));
66 assertFalse(HasId.areEqualSetsByUniqueId(List.of(a), List.of(aDiffers)));
67 assertFalse(HasId.areEqualSetsByUniqueId(nullList, List.of(aDiffers)));
68 assertFalse(HasId.areEqualSetsByUniqueId(List.of(a, aDiffers), List.of(aDiffers)));
69 assertTrue(HasId.areEqualSetsByUniqueId(List.of(a, aDiffers), List.of(aDiffers, aEquals)));
70 assertTrue(HasId.areEqualSetsByUniqueId(List.of(a), List.of(a, a)));
71 assertTrue(HasId.areEqualSetsByUniqueId(List.of(aEquals), List.of(a, a, aEquals)));
72 ArrayList<HasId> listWithNull = new ArrayList<HasId>();
73 listWithNull.add(a);
74 listWithNull.add(null);
75 ArrayList<HasId> anotherListWithNull = new ArrayList<HasId>();
76 anotherListWithNull.add(null);
77 anotherListWithNull.add(a);
78 anotherListWithNull.add(null);
79 ArrayList<HasId> thirdListWithNull = new ArrayList<HasId>();
80 thirdListWithNull.add(aDiffers);
81 thirdListWithNull.add(null);
82 assertFalse(HasId.areEqualSetsByUniqueId(List.of(a), listWithNull));
83 assertTrue(HasId.areEqualSetsByUniqueId(listWithNull, anotherListWithNull));
84 assertFalse(HasId.areEqualSetsByUniqueId(anotherListWithNull, thirdListWithNull));
85 }
86
87 @Test
88 public void hashCodeHelperTest() {
89 assertEquals(0, HasId.hashcodeHelper((HasId) null));
90 assertEquals("a".hashCode(), HasId.hashcodeHelper(a));
91 }
92
93 @Test
94 public void hashCodeHelpersTest() {
95 List<HasId> nullList = new ArrayList<>();
96 nullList.add(null);
97 assertEquals(0, HasId.hashcodeHelper((List<HasId>) null));
98 assertEquals(31, HasId.hashcodeHelper(nullList));
99 assertEquals(HasId.hashcodeHelper(List.of(a)), HasId.hashcodeHelper(List.of(aEquals)));
100 }
101 }