1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.compress.harmony.unpack200;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21
22 import java.util.List;
23
24 import org.junit.jupiter.api.Test;
25
26 public class SegmentConstantPoolArrayCacheTest {
27
28 @Test
29 public void testMultipleArrayMultipleHit() {
30 final SegmentConstantPoolArrayCache arrayCache = new SegmentConstantPoolArrayCache();
31 final String[] arrayOne = { "Zero", "Shared", "Two", "Shared", "Shared" };
32 final String[] arrayTwo = { "Shared", "One", "Shared", "Shared", "Shared" };
33
34 List<Integer> listOne = arrayCache.indexesForArrayKey(arrayOne, "Shared");
35 List<Integer> listTwo = arrayCache.indexesForArrayKey(arrayTwo, "Shared");
36
37
38 listOne = arrayCache.indexesForArrayKey(arrayOne, "Two");
39 listTwo = arrayCache.indexesForArrayKey(arrayTwo, "Shared");
40
41 assertEquals(1, listOne.size());
42 assertEquals(2, listOne.get(0).intValue());
43
44
45 listOne = arrayCache.indexesForArrayKey(arrayOne, "Shared");
46 assertEquals(3, listOne.size());
47 assertEquals(1, listOne.get(0).intValue());
48 assertEquals(3, listOne.get(1).intValue());
49 assertEquals(4, listOne.get(2).intValue());
50
51 assertEquals(4, listTwo.size());
52 assertEquals(0, listTwo.get(0).intValue());
53 assertEquals(2, listTwo.get(1).intValue());
54 assertEquals(3, listTwo.get(2).intValue());
55 assertEquals(4, listTwo.get(3).intValue());
56
57 final List<Integer> listThree = arrayCache.indexesForArrayKey(arrayOne, "Not found");
58 assertEquals(0, listThree.size());
59 }
60
61 @Test
62 public void testSingleMultipleHitArray() {
63 final SegmentConstantPoolArrayCache arrayCache = new SegmentConstantPoolArrayCache();
64 final String[] array = { "Zero", "OneThreeFour", "Two", "OneThreeFour", "OneThreeFour" };
65 final List<Integer> list = arrayCache.indexesForArrayKey(array, "OneThreeFour");
66 assertEquals(3, list.size());
67 assertEquals(1, list.get(0).intValue());
68 assertEquals(3, list.get(1).intValue());
69 assertEquals(4, list.get(2).intValue());
70 }
71
72 @Test
73 public void testSingleSimpleArray() {
74 final SegmentConstantPoolArrayCache arrayCache = new SegmentConstantPoolArrayCache();
75 final String[] array = { "Zero", "One", "Two", "Three", "Four" };
76 final List<Integer> list = arrayCache.indexesForArrayKey(array, "Three");
77 assertEquals(1, list.size());
78 assertEquals(3, list.get(0).intValue());
79 }
80
81 }