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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package strain;
  2. import java.util.Arrays;
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. import org.junit.Assert;
  6. import org.junit.Test;
  7. public class StrainTest {
  8. @Test
  9. public void emptyKeep() {
  10. List<Integer> expected = new LinkedList<>();
  11. List<Integer> test = new LinkedList<>();
  12. Assert.assertEquals(expected, Strain.keep(test, x -> x < 10));
  13. }
  14. @Test
  15. public void keepEverything() {
  16. List<Integer> expected = Arrays.asList(1, 2, 3);
  17. List<Integer> test = Arrays.asList(1, 2, 3);
  18. Assert.assertEquals(expected, Strain.keep(test, x -> x < 10));
  19. }
  20. @Test
  21. public void keepFirstAndLast() {
  22. List<Integer> expected = Arrays.asList(1, 3);
  23. List<Integer> test = Arrays.asList(1, 2, 3);
  24. Assert.assertEquals(expected, Strain.keep(test, x -> x % 2 != 0));
  25. }
  26. @Test
  27. public void keepNeitherFirstNorLast() {
  28. List<Integer> expected = Arrays.asList(2, 4);
  29. List<Integer> test = Arrays.asList(1, 2, 3, 4, 5);
  30. Assert.assertEquals(expected, Strain.keep(test, x -> x % 2 == 0));
  31. }
  32. @Test
  33. public void KeepStrings() {
  34. List<String> words = Arrays
  35. .asList("apple zebra banana zombies cherimoya zelot".split(" "));
  36. List<String> expected = Arrays.asList("zebra", "zombies", "zelot");
  37. Assert.assertEquals(expected,
  38. Strain.keep(words, x -> x.startsWith("z")));
  39. }
  40. @Test
  41. public void KeepArrays() {
  42. List<List<Integer>> actual = Arrays.asList(
  43. Arrays.asList(1, 2, 3),
  44. Arrays.asList(5, 5, 5),
  45. Arrays.asList(5, 1, 2),
  46. Arrays.asList(2, 1, 2),
  47. Arrays.asList(1, 5, 2),
  48. Arrays.asList(2, 2, 1),
  49. Arrays.asList(1, 2, 5));
  50. List<List<Integer>> expected = Arrays.asList(
  51. Arrays.asList(5, 5, 5),
  52. Arrays.asList(5, 1, 2),
  53. Arrays.asList(1, 5, 2),
  54. Arrays.asList(1, 2, 5));
  55. Assert.assertEquals(expected,
  56. Strain.keep(actual, col -> col.contains(5)));
  57. }
  58. @Test
  59. public void emptyDiscard() {
  60. List<Integer> expected = new LinkedList<>();
  61. List<Integer> test = new LinkedList<>();
  62. Assert.assertEquals(expected, Strain.discard(test, x -> x < 10));
  63. }
  64. @Test
  65. public void discardNothing() {
  66. List<Integer> expected = Arrays.asList(1, 2, 3);
  67. List<Integer> test = Arrays.asList(1, 2, 3);
  68. Assert.assertEquals(expected, Strain.discard(test, x -> x > 10));
  69. }
  70. @Test
  71. public void discardFirstAndLast() {
  72. List<Integer> expected = Arrays.asList(2);
  73. List<Integer> test = Arrays.asList(1, 2, 3);
  74. Assert.assertEquals(expected, Strain.discard(test, x -> x % 2 != 0));
  75. }
  76. @Test
  77. public void discardNeitherFirstNorLast() {
  78. List<Integer> expected = Arrays.asList(1, 3, 5);
  79. List<Integer> test = Arrays.asList(1, 2, 3, 4, 5);
  80. Assert.assertEquals(expected, Strain.discard(test, x -> x % 2 == 0));
  81. }
  82. @Test
  83. public void discardStrings() {
  84. List<String> words = Arrays
  85. .asList("apple zebra banana zombies cherimoya zelot".split(" "));
  86. List<String> expected = Arrays.asList("apple", "banana", "cherimoya");
  87. Assert.assertEquals(expected,
  88. Strain.discard(words, x -> x.startsWith("z")));
  89. }
  90. @Test
  91. public void discardArrays() {
  92. List<List<Integer>> actual = Arrays.asList(
  93. Arrays.asList(1, 2, 3),
  94. Arrays.asList(5, 5, 5),
  95. Arrays.asList(5, 1, 2),
  96. Arrays.asList(2, 1, 2),
  97. Arrays.asList(1, 5, 2),
  98. Arrays.asList(2, 2, 1),
  99. Arrays.asList(1, 2, 5));
  100. List<List<Integer>> expected = Arrays.asList(
  101. Arrays.asList(1, 2, 3),
  102. Arrays.asList(2, 1, 2),
  103. Arrays.asList(2, 2, 1));
  104. Assert.assertEquals(expected,
  105. Strain.discard(actual, col -> col.contains(5)));
  106. }
  107. }