ConsListOwnTest.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package migl.util;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertFalse;
  4. import static org.junit.Assert.assertNotEquals;
  5. import static org.junit.Assert.assertTrue;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. import org.junit.Before;
  9. import org.junit.Test;
  10. public class ConsListOwnTest {
  11. private ConsList<Integer> list;
  12. @Before
  13. public void init() {
  14. list = ConsListFactory.nil();
  15. }
  16. @Test
  17. public void testConsListImplEquals() {
  18. ConsList<Integer> list2 = ConsListFactory.asList(8, 88);
  19. ConsList<Integer> list3 = ConsListFactory.asList(88, 8);
  20. list = list.prepend(88).prepend(8);
  21. assertTrue(list.equals(list));
  22. assertTrue(list.equals(list2));
  23. assertFalse(list.equals(list3));
  24. assertFalse(list.equals(null));
  25. assertTrue(list.equals(ConsListFactory.asList(8, 88)));
  26. assertTrue(list.equals(ConsListFactory.singleton(88).prepend(8)));
  27. assertFalse(list.equals(ConsListFactory.singleton(88).prepend(888)));
  28. assertEquals(list.hashCode(), list2.hashCode());
  29. assertNotEquals(list.hashCode(), list3.hashCode());
  30. }
  31. @Test
  32. public void testConsListImplHashCode() {
  33. ConsList<Integer> list2 = ConsListFactory.asList(8, 888);
  34. ConsList<Integer> list3 = ConsListFactory.asList(88, 8);
  35. list = list.prepend(88).prepend(8);
  36. Map<ConsList<Integer>, String> map = new HashMap<>();
  37. map.put(list, "L1");
  38. map.put(list2, "L2");
  39. map.put(list3, "L3");
  40. assertEquals("L1", map.get(list));
  41. assertEquals("L2", map.get(list2));
  42. assertEquals("L3", map.get(list3));
  43. }
  44. @Test
  45. public void testAsListEmpty() {
  46. ConsList<Integer> list2 = ConsListFactory.asList();
  47. assertEquals(list, list2);
  48. }
  49. @Test
  50. public void testAsListSingleton() {
  51. ConsList<Integer> list1 = ConsListFactory.singleton(8);
  52. ConsList<Integer> list2 = ConsListFactory.asList(8);
  53. assertEquals(list1, list2);
  54. }
  55. @Test
  56. public void testConsEmptyListMap() {
  57. ConsList<String> list2 = ConsListFactory.nil();
  58. assertEquals(list2, list.map(p -> Integer.valueOf(p)));
  59. }
  60. @Test
  61. public void testIsEmpty() {
  62. assertTrue(list.isEmpty());
  63. assertEquals(list.size(), 0);
  64. list = list.prepend(8);
  65. assertFalse(list.isEmpty());
  66. assertNotEquals(list.size(), 0);
  67. }
  68. @Test(expected = IllegalArgumentException.class)
  69. public void testCreateEmptyConsListImpl() {
  70. list = new ConsListImpl<Integer>(null, null);
  71. }
  72. @Test
  73. public void testListWithNull() {
  74. list = list.prepend(null);
  75. assertEquals(1, list.size());
  76. assertEquals("(null)", list.toString());
  77. }
  78. }