lots of exercises in java... from https://github.com/exercism/java

SeriesTest.java 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. import java.util.Arrays;
  2. import java.util.List;
  3. import junit.framework.Assert;
  4. import org.junit.Test;
  5. import static org.junit.Assert.assertEquals;
  6. import static org.junit.Assert.assertFalse;
  7. import static org.junit.Assert.assertNotNull;
  8. public class SeriesTest {
  9. @Test
  10. public void hasDigitsShort() {
  11. Series sut = new Series("01234");
  12. List<Integer> expected = Arrays.asList(0, 1, 2, 3, 4);
  13. List<Integer> actual = sut.getDigits();
  14. assertNotNull(actual);
  15. assertFalse(actual.isEmpty());
  16. assertEquals(expected, actual);
  17. }
  18. @Test
  19. public void hasDigitsLong() {
  20. Series sut = new Series("0123456789");
  21. List<Integer> expected = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  22. List<Integer> actual = sut.getDigits();
  23. assertNotNull(actual);
  24. assertFalse(actual.isEmpty());
  25. assertEquals(expected, actual);
  26. }
  27. @Test
  28. public void keepsTheDigitOrderIfReversed() {
  29. Series sut = new Series("9876543210");
  30. List<Integer> expected = Arrays.asList(9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
  31. List<Integer> actual = sut.getDigits();
  32. assertNotNull(actual);
  33. assertFalse(actual.isEmpty());
  34. assertEquals(expected, actual);
  35. }
  36. @Test
  37. public void keepsArbitraryDigitOrder() {
  38. Series sut = new Series("936923468");
  39. List<Integer> expected = Arrays.asList(9, 3, 6, 9, 2, 3, 4, 6, 8);
  40. List<Integer> actual = sut.getDigits();
  41. assertNotNull(actual);
  42. assertFalse(actual.isEmpty());
  43. assertEquals(expected, actual);
  44. }
  45. @Test
  46. public void canSliceByOne() {
  47. Series sut = new Series("01234");
  48. List<List<Integer>> expected = Arrays.asList(
  49. Arrays.asList(0),
  50. Arrays.asList(1),
  51. Arrays.asList(2),
  52. Arrays.asList(3),
  53. Arrays.asList(4)
  54. );
  55. List<List<Integer>> actual = sut.slices(1);
  56. assertNotNull(actual);
  57. assertFalse(actual.isEmpty());
  58. assertEquals(expected, actual);
  59. }
  60. @Test
  61. public void canSliceByTwo() {
  62. Series sut = new Series("98273463");
  63. List<List<Integer>> expected = Arrays.asList(
  64. Arrays.asList(9, 8),
  65. Arrays.asList(8, 2),
  66. Arrays.asList(2, 7),
  67. Arrays.asList(7, 3),
  68. Arrays.asList(3, 4),
  69. Arrays.asList(4, 6),
  70. Arrays.asList(6, 3)
  71. );
  72. List<List<Integer>> actual = sut.slices(2);
  73. assertNotNull(actual);
  74. assertFalse(actual.isEmpty());
  75. assertEquals(expected, actual);
  76. }
  77. @Test
  78. public void canSliceByThree() {
  79. Series sut = new Series("01234");
  80. List<List<Integer>> expected = Arrays.asList(
  81. Arrays.asList(0, 1, 2),
  82. Arrays.asList(1, 2, 3),
  83. Arrays.asList(2, 3, 4)
  84. );
  85. List<List<Integer>> actual = sut.slices(3);
  86. assertNotNull(actual);
  87. assertFalse(actual.isEmpty());
  88. assertEquals(expected, actual);
  89. }
  90. @Test
  91. public void canSliceByThreeWithDuplicateDigits() {
  92. Series sut = new Series("31001");
  93. List<List<Integer>> expected = Arrays.asList(
  94. Arrays.asList(3, 1, 0),
  95. Arrays.asList(1, 0, 0),
  96. Arrays.asList(0, 0, 1)
  97. );
  98. List<List<Integer>> actual = sut.slices(3);
  99. assertNotNull(actual);
  100. assertFalse(actual.isEmpty());
  101. assertEquals(expected, actual);
  102. }
  103. @Test
  104. public void canSliceByFour() {
  105. Series sut = new Series("91274");
  106. List<List<Integer>> expected = Arrays.asList(
  107. Arrays.asList(9, 1, 2, 7),
  108. Arrays.asList(1, 2, 7, 4)
  109. );
  110. List<List<Integer>> actual = sut.slices(4);
  111. assertNotNull(actual);
  112. assertFalse(actual.isEmpty());
  113. assertEquals(expected, actual);
  114. }
  115. @Test
  116. public void canSliceByFive() {
  117. Series sut = new Series("81228");
  118. List<List<Integer>> expected = Arrays.asList(
  119. Arrays.asList(8, 1, 2, 2, 8)
  120. );
  121. List<List<Integer>> actual = sut.slices(5);
  122. assertNotNull(actual);
  123. assertFalse(actual.isEmpty());
  124. assertEquals(expected, actual);
  125. }
  126. @Test(expected = IllegalArgumentException.class)
  127. public void throwsAnErrorIfNotEnoughDigitsToSlice() {
  128. new Series("01032987583").slices(12);
  129. }
  130. }