Skip to content

Commit 2ad7cea

Browse files
committed
reorder tests
1 parent c7e917d commit 2ad7cea

31 files changed

Lines changed: 474 additions & 651 deletions

src/test/java/io/github/jhspetersson/packrat/AtLeastOrderBugTest.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/test/java/io/github/jhspetersson/packrat/AtLeastTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,20 @@ public void atLeastSingleValueTest() {
4343
var result = numbers.gather(Packrat.atLeast(3)).toList();
4444
assertEquals(List.of(1, 1, 1), result);
4545
}
46+
47+
@Test
48+
void atLeastShouldPreserveOriginalOrder() {
49+
var result = Stream.of("a", "b", "a", "b")
50+
.gather(Packrat.atLeast(2))
51+
.toList();
52+
assertEquals(List.of("a", "b", "a", "b"), result);
53+
}
54+
55+
@Test
56+
void atLeastShouldPreserveOrderWithThreeGroups() {
57+
var result = Stream.of("x", "y", "z", "x", "y", "z")
58+
.gather(Packrat.atLeast(2))
59+
.toList();
60+
assertEquals(List.of("x", "y", "z", "x", "y", "z"), result);
61+
}
4662
}

src/test/java/io/github/jhspetersson/packrat/AtMostOrderBugTest.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/test/java/io/github/jhspetersson/packrat/AtMostTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,20 @@ public void atMostByTest() {
6262
var expected = Set.of("date", "elderberry", "fig");
6363
assertEquals(result, expected);
6464
}
65+
66+
@Test
67+
void atMostShouldPreserveOriginalOrder() {
68+
var result = Stream.of("a", "b", "a", "b")
69+
.gather(Packrat.atMost(2))
70+
.toList();
71+
assertEquals(List.of("a", "b", "a", "b"), result);
72+
}
73+
74+
@Test
75+
void atMostShouldPreserveOrderWithUniqueElements() {
76+
var result = Stream.of("cherry", "apple", "banana", "date")
77+
.gather(Packrat.atMost(1))
78+
.toList();
79+
assertEquals(List.of("cherry", "apple", "banana", "date"), result);
80+
}
6581
}

src/test/java/io/github/jhspetersson/packrat/BreakingGathererReuseBugTest.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/test/java/io/github/jhspetersson/packrat/BreakingTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.junit.jupiter.api.Test;
44

5+
import java.util.List;
56
import java.util.Locale;
67
import java.util.stream.Stream;
78

@@ -76,4 +77,33 @@ public void sentencesWithLocaleTest() {
7677
var sentencesFR = Stream.of(FRENCH_TEXT).gather(Packrat.sentences(Locale.FRANCE)).toList();
7778
assertEquals(2, sentencesFR.size());
7879
}
80+
81+
@Test
82+
void wordsSameInstanceInPipelineShouldNotCorrupt() {
83+
var g = Packrat.words();
84+
var result = Stream.of("hello world")
85+
.gather(g)
86+
.gather(g)
87+
.toList();
88+
assertEquals(List.of("hello", "world"), result);
89+
}
90+
91+
@Test
92+
void wordsSameInstanceUsedSequentiallyShouldProduceSameResults() {
93+
var g = Packrat.words();
94+
var result1 = Stream.of("hello world").gather(g).toList();
95+
var result2 = Stream.of("foo bar baz").gather(g).toList();
96+
assertEquals(List.of("hello", "world"), result1);
97+
assertEquals(List.of("foo", "bar", "baz"), result2);
98+
}
99+
100+
@Test
101+
void sentencesSameInstanceInPipelineShouldNotCorrupt() {
102+
var g = Packrat.sentences();
103+
var result = Stream.of("Hello world. Goodbye world.")
104+
.gather(g)
105+
.gather(g)
106+
.toList();
107+
assertEquals(List.of("Hello world. ", "Goodbye world."), result);
108+
}
79109
}

src/test/java/io/github/jhspetersson/packrat/DropLastNBugTest.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/test/java/io/github/jhspetersson/packrat/DropLastNTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,37 @@ public void dropLastZeroTest() {
7171

7272
assertEquals(List.of(0, 1, 2, 3, 4), after);
7373
}
74+
75+
@Test
76+
void dropLastWithStreamLargerThanInternalBuffer() {
77+
var result = IntStream.range(0, 20).boxed()
78+
.gather(Packrat.dropLast(3))
79+
.toList();
80+
81+
assertEquals(17, result.size());
82+
assertEquals(0, result.getFirst());
83+
assertEquals(16, result.getLast());
84+
}
85+
86+
@Test
87+
void dropLastWithStreamMuchLargerThanBuffer() {
88+
var result = IntStream.range(0, 100).boxed()
89+
.gather(Packrat.dropLast(5))
90+
.toList();
91+
92+
assertEquals(95, result.size());
93+
assertEquals(0, result.getFirst());
94+
assertEquals(94, result.getLast());
95+
}
96+
97+
@Test
98+
void dropLastLargeNWithLargerStream() {
99+
var result = IntStream.range(0, 50).boxed()
100+
.gather(Packrat.dropLast(20))
101+
.toList();
102+
103+
assertEquals(30, result.size());
104+
assertEquals(0, result.getFirst());
105+
assertEquals(29, result.getLast());
106+
}
74107
}

src/test/java/io/github/jhspetersson/packrat/EqualChunksGathererTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import org.junit.jupiter.api.Test;
44

5+
import java.util.Arrays;
56
import java.util.List;
7+
import java.util.function.Function;
68
import java.util.stream.Stream;
79

810
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -102,4 +104,39 @@ record Person(String name, String id) {}
102104
List.of(new Person("David", "C345"), new Person("Eve", "c678"))
103105
), result);
104106
}
107+
108+
@Test
109+
void equalChunksWithNullElements() {
110+
var result = Stream.<Integer>of(null, null, 1, 1)
111+
.gather(Packrat.equalChunksBy(Function.identity()))
112+
.toList();
113+
assertEquals(List.of(Arrays.asList(null, null), List.of(1, 1)), result);
114+
}
115+
116+
@Test
117+
void equalChunksWithNullInLastChunk() {
118+
var result = Stream.<Integer>of(1, 1, null, null)
119+
.gather(Packrat.equalChunksBy(Function.identity()))
120+
.toList();
121+
assertEquals(List.of(List.of(1, 1), Arrays.asList(null, null)), result);
122+
}
123+
124+
@Test
125+
void equalChunksSingleNullChunk() {
126+
var result = Stream.<Integer>of((Integer) null)
127+
.gather(Packrat.equalChunksBy(Function.identity()))
128+
.toList();
129+
assertEquals(List.of(Arrays.asList((Integer) null)), result);
130+
}
131+
132+
@Test
133+
void equalChunksGathererShouldBeReusable() {
134+
var gatherer = Packrat.<Integer>equalChunks();
135+
136+
var result1 = Stream.of(1, 1, 2, 2).gather(gatherer).toList();
137+
assertEquals(List.of(List.of(1, 1), List.of(2, 2)), result1);
138+
139+
var result2 = Stream.of(1, 1, 2, 2).gather(gatherer).toList();
140+
assertEquals(List.of(List.of(1, 1), List.of(2, 2)), result2);
141+
}
105142
}

src/test/java/io/github/jhspetersson/packrat/EqualChunksNullBugTest.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)