Skip to content

Commit 33f64ed

Browse files
committed
add more tests
1 parent e6d5242 commit 33f64ed

File tree

10 files changed

+406
-50
lines changed

10 files changed

+406
-50
lines changed

rlib-collections/src/main/java/javasabr/rlib/collections/array/IntArray.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package javasabr.rlib.collections.array;
22

33
import java.io.Serializable;
4+
import java.util.Arrays;
45
import java.util.RandomAccess;
56
import java.util.stream.IntStream;
67
import javasabr.rlib.collections.array.impl.ImmutableIntArray;
@@ -40,12 +41,20 @@ static IntArray copyOf(IntArray intArray) {
4041
return new ImmutableIntArray(intArray.toArray());
4142
}
4243

44+
static IntArray repeated(int value, int count) {
45+
int[] values = new int[count];
46+
Arrays.fill(values, value);
47+
return new ImmutableIntArray(values);
48+
}
49+
4350
int size();
4451

4552
boolean contains(int value);
4653

4754
boolean containsAll(IntArray array);
4855

56+
boolean containsAll(int[] array);
57+
4958
/**
5059
* @return the first element or {@link java.util.NoSuchElementException}
5160
*/

rlib-collections/src/main/java/javasabr/rlib/collections/array/LongArray.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package javasabr.rlib.collections.array;
22

33
import java.io.Serializable;
4+
import java.util.Arrays;
45
import java.util.RandomAccess;
56
import java.util.stream.LongStream;
67
import javasabr.rlib.collections.array.impl.ImmutableLongArray;
@@ -40,12 +41,20 @@ static LongArray copyOf(LongArray intArray) {
4041
return new ImmutableLongArray(intArray.toArray());
4142
}
4243

44+
static LongArray repeated(long value, int count) {
45+
long[] values = new long[count];
46+
Arrays.fill(values, value);
47+
return new ImmutableLongArray(values);
48+
}
49+
4350
int size();
4451

4552
boolean contains(long value);
4653

4754
boolean containsAll(LongArray array);
4855

56+
boolean containsAll(long[] array);
57+
4958
/**
5059
* @return the first element or {@link java.util.NoSuchElementException}
5160
*/

rlib-collections/src/main/java/javasabr/rlib/collections/array/impl/AbstractIntArray.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,7 @@ public boolean containsAll(IntArray array) {
6464
return false;
6565
}
6666

67-
int[] wrapped = array
68-
.asUnsafe()
69-
.wrapped();
70-
67+
int[] wrapped = array.asUnsafe().wrapped();
7168
for (int i = 0, length = array.size(); i < length; i++) {
7269
if (!contains(wrapped[i])) {
7370
return false;
@@ -77,6 +74,19 @@ public boolean containsAll(IntArray array) {
7774
return true;
7875
}
7976

77+
@Override
78+
public boolean containsAll(int[] array) {
79+
if (array.length < 1) {
80+
return false;
81+
}
82+
for (int value : array) {
83+
if (!contains(value)) {
84+
return false;
85+
}
86+
}
87+
return true;
88+
}
89+
8090
@Override
8191
public int indexOf(int value) {
8292
int[] wrapped = wrapped();

rlib-collections/src/main/java/javasabr/rlib/collections/array/impl/AbstractLongArray.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,25 @@ public boolean containsAll(LongArray array) {
6363
if (array.isEmpty()) {
6464
return false;
6565
}
66-
67-
long[] wrapped = array
68-
.asUnsafe()
69-
.wrapped();
70-
66+
long[] wrapped = array.asUnsafe().wrapped();
7167
for (int i = 0, length = array.size(); i < length; i++) {
7268
if (!contains(wrapped[i])) {
7369
return false;
7470
}
7571
}
72+
return true;
73+
}
7674

75+
@Override
76+
public boolean containsAll(long[] array) {
77+
if (array.length < 1) {
78+
return false;
79+
}
80+
for (long value : array) {
81+
if (!contains(value)) {
82+
return false;
83+
}
84+
}
7785
return true;
7886
}
7987

rlib-collections/src/test/java/javasabr/rlib/collections/array/ArrayTest.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,6 @@ public class ArrayTest {
1717

1818
@Test
1919
void arrayOfTest() {
20-
21-
// when:
22-
Array<String> array = Array.of("First", "Second", "Third", " ");
23-
24-
// then:
25-
Assertions.assertEquals(4, array.size());
26-
Assertions.assertEquals("First", array.get(0));
27-
Assertions.assertEquals("Second", array.get(1));
28-
Assertions.assertEquals("Third", array.get(2));
29-
Assertions.assertEquals(" ", array.get(3));
30-
Assertions.assertEquals("First", array.first());
31-
Assertions.assertEquals(" ", array.last());
32-
33-
// then:
34-
Assertions.assertArrayEquals(
35-
new String[]{
36-
"First",
37-
"Second",
38-
"Third",
39-
" "
40-
}, array.stream().toArray());
41-
42-
// then:
43-
Assertions.assertTrue(array.contains("Second"));
44-
Assertions.assertFalse(array.contains("test"));
45-
4620
// when:
4721
Array<String> array1 = Array.of("First");
4822
Array<String> array2 = Array.of("First", "Second");
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
package javasabr.rlib.collections.array;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.util.List;
6+
import java.util.stream.Stream;
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.junit.jupiter.params.provider.Arguments;
11+
import org.junit.jupiter.params.provider.MethodSource;
12+
13+
/**
14+
* @author JavaSaBr
15+
*/
16+
public class IntArrayTest {
17+
18+
@Test
19+
void arrayOfTest() {
20+
// when:
21+
IntArray array1 = IntArray.of(5);
22+
IntArray array2 = IntArray.of(5, 8);
23+
IntArray array3 = IntArray.of(5, 8, 13);
24+
IntArray array4 = IntArray.of(5, 8, 13, 25);
25+
IntArray array5 = IntArray.of(5, 8, 13, 25, 33);
26+
27+
// then:
28+
assertThat(array1.toArray())
29+
.isEqualTo(new int[]{5});
30+
assertThat(array2.toArray())
31+
.isEqualTo(new int[]{5, 8});
32+
assertThat(array3.toArray())
33+
.isEqualTo(new int[]{5, 8, 13});
34+
assertThat(array4.toArray())
35+
.isEqualTo(new int[]{5, 8, 13, 25});
36+
assertThat(array5.toArray())
37+
.isEqualTo(new int[]{5, 8, 13, 25, 33});
38+
}
39+
40+
@Test
41+
void arrayRepeatedTest() {
42+
// when:
43+
IntArray repeated = IntArray.repeated(20, 5);
44+
45+
// then:
46+
assertThat(repeated.toArray())
47+
.isEqualTo(new int[]{20, 20, 20, 20, 20});
48+
}
49+
50+
@ParameterizedTest
51+
@MethodSource("generateArrays")
52+
void shouldCorrectlyTakeValues(IntArray array) {
53+
54+
// then:
55+
Assertions.assertEquals(4, array.size());
56+
Assertions.assertEquals(5, array.get(0));
57+
Assertions.assertEquals(8, array.get(1));
58+
Assertions.assertEquals(13, array.get(2));
59+
Assertions.assertEquals(25, array.get(3));
60+
Assertions.assertEquals(5, array.first());
61+
Assertions.assertEquals(25, array.last());
62+
63+
// then:
64+
Assertions.assertArrayEquals(new int[]{5, 8, 13, 25}, array.stream().toArray());
65+
66+
// then:
67+
Assertions.assertTrue(array.contains(8));
68+
Assertions.assertFalse(array.contains(99));
69+
}
70+
71+
@ParameterizedTest
72+
@MethodSource("generateArraysWithDuplicates")
73+
void shouldFindElementIndex(IntArray array) {
74+
// when/then:
75+
Assertions.assertEquals(0, array.indexOf(5));
76+
Assertions.assertEquals(3, array.indexOf(25));
77+
Assertions.assertEquals(-1, array.indexOf(99));
78+
}
79+
80+
@ParameterizedTest
81+
@MethodSource("generateArraysWithDuplicates")
82+
void shouldFindLastElementIndex(IntArray array) {
83+
// when/then:
84+
Assertions.assertEquals(4, array.lastIndexOf(5));
85+
Assertions.assertEquals(6, array.lastIndexOf(13));
86+
Assertions.assertEquals(-1, array.lastIndexOf(99));
87+
}
88+
89+
@ParameterizedTest
90+
@MethodSource("generateArrays")
91+
void shouldCorrectlyTransformToNativeArray(IntArray array) {
92+
// when/then:
93+
Assertions.assertArrayEquals(new int[]{5, 8, 13, 25}, array.stream().toArray());
94+
}
95+
96+
@ParameterizedTest
97+
@MethodSource("generateArrays")
98+
void shouldCorrectlyCheckOnContains(IntArray array) {
99+
// when/then:
100+
assertThat(array.contains(5)).isTrue();
101+
assertThat(array.contains(25)).isTrue();
102+
assertThat(array.contains(99)).isFalse();
103+
}
104+
105+
@ParameterizedTest
106+
@MethodSource("generateArrays")
107+
void shouldCorrectlyCheckOnContainsAllByArray(IntArray array) {
108+
// given:
109+
IntArray check1 = IntArray.of(5);
110+
IntArray check2 = IntArray.of(8, 13);
111+
IntArray check3 = IntArray.of(8, 13, 99);
112+
// when/then:
113+
assertThat(array.containsAll(check1)).isTrue();
114+
assertThat(array.containsAll(check2)).isTrue();
115+
assertThat(array.containsAll(check3)).isFalse();
116+
}
117+
118+
@ParameterizedTest
119+
@MethodSource("generateArrays")
120+
void shouldCorrectlyCheckOnContainsAllByNativeArray(IntArray array) {
121+
// given:
122+
int[] check1 = new int[]{5};
123+
int[] check2 = new int[]{8, 13};
124+
int[] check3 = new int[]{8, 13, 99};
125+
// when/then:
126+
assertThat(array.containsAll(check1)).isTrue();
127+
assertThat(array.containsAll(check2)).isTrue();
128+
assertThat(array.containsAll(check3)).isFalse();
129+
}
130+
131+
private static Stream<Arguments> generateArrays() {
132+
IntArray array = IntArray.of(5, 8, 13, 25);
133+
MutableIntArray mutableArray = ArrayFactory.mutableIntArray();
134+
mutableArray.addAll(array);
135+
return Stream.of(
136+
Arguments.of(array),
137+
Arguments.of(mutableArray));
138+
}
139+
140+
private static Stream<Arguments> generateArraysWithDuplicates() {
141+
IntArray array = IntArray.of(5, 8, 13, 25, 5, 8, 13);
142+
MutableIntArray mutableArray = ArrayFactory.mutableIntArray();
143+
mutableArray.addAll(array);
144+
return Stream.of(
145+
Arguments.of(array),
146+
Arguments.of(mutableArray));
147+
}
148+
}

0 commit comments

Comments
 (0)