1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.streamingvisitors;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.LinkedList;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author Ulf Carlin
*/
public class ListMergerTestCase {
private void initializeLists(List<String> list1, List<String> list2, int entryCount, int padding) {
for (int i = 0; i < entryCount; i++) {
if ((i % 2) == 0) {
list1.add("String " + String.format("%0" + padding + "d", (i+1)));
} else {
list2.add("String " + String.format("%0" + padding + "d", (i+1)));
}
}
}
private void verifyList(List<String> list, int entryCount, int padding) {
assertEquals(entryCount, list.size());
for (int i = 0; i < entryCount; i++) {
assertEquals("String " + String.format("%0" + padding + "d", (i+1)), list.get(i));
}
}
@Test
void testMergeLists() {
int entryCount = 6;
int padding = (int) Math.log10(entryCount) + 1;
List<String> list1 = new LinkedList<>();
List<String> list2 = new LinkedList<>();
initializeLists(list1, list2, entryCount, padding);
List<String> newList = ListMerger.mergeIntoArrayList(list1, list2);
verifyList(newList, entryCount, padding);
newList = ListMerger.mergeIntoArrayList(list1, list2, entryCount / 2);
verifyList(newList, entryCount / 2, padding);
ListMerger.mergeLinkedLists(list1, list2, entryCount / 2);
verifyList(list1, entryCount / 2, padding);
}
@Test
void testMergeListsReversed() {
int entryCount = 6;
int padding = (int) Math.log10(entryCount) + 1;
List<String> list1 = new LinkedList<>();
List<String> list2 = new LinkedList<>();
initializeLists(list2, list1, entryCount, padding);
List<String> newList = ListMerger.mergeIntoArrayList(list1, list2);
verifyList(newList, entryCount, padding);
newList = ListMerger.mergeIntoArrayList(list1, list2, entryCount / 2);
verifyList(newList, entryCount / 2, padding);
ListMerger.mergeLinkedLists(list1, list2, entryCount / 2);
verifyList(list1, entryCount / 2, padding);
}
}
|