|
18 | 18 | */ |
19 | 19 |
|
20 | 20 | /* |
21 | | - * Copyright (c) 2018-2019, Chris Fraire <cfraire@me.com>. |
| 21 | + * Copyright (c) 2018-2020, Chris Fraire <cfraire@me.com>. |
22 | 22 | */ |
23 | 23 |
|
24 | 24 | package org.opengrok.indexer.index; |
|
30 | 30 | import static org.junit.Assert.assertTrue; |
31 | 31 |
|
32 | 32 | import java.io.IOException; |
| 33 | +import java.util.ArrayList; |
33 | 34 | import java.util.HashMap; |
34 | 35 | import java.util.Map; |
35 | 36 | import org.junit.Test; |
@@ -74,23 +75,22 @@ public void shouldHandleLatest() throws IOException, |
74 | 75 | (long)vLatest.getAnalyzerGuruVersion()); |
75 | 76 | assertEquals("should have expected analyzer versions", |
76 | 77 | vLatest.getAnalyzersVersions().size(), actAnalyzersVersionNos.size()); |
77 | | - /* |
78 | | - * Smelly but I know the underlying Map implementations are the same; |
79 | | - * otherwise the following tests might not work. |
80 | | - */ |
| 78 | + |
| 79 | + Object[] expectedVersionKeys = actAnalyzersVersionNos.keySet().stream().sorted().toArray(); |
81 | 80 | assertArrayEquals("analyzer versions keysets should be equal", |
82 | | - actAnalyzersVersionNos.keySet().toArray(), |
83 | | - vLatest.getAnalyzersVersions().keySet().toArray()); |
| 81 | + expectedVersionKeys, |
| 82 | + vLatest.getAnalyzersVersions().keySet().stream().sorted().toArray()); |
84 | 83 | assertArrayEquals("analyzer versions values should be equal", |
85 | | - actAnalyzersVersionNos.values().toArray(), |
86 | | - vLatest.getAnalyzersVersions().values().toArray()); |
| 84 | + getMapValues(actAnalyzersVersionNos, expectedVersionKeys), |
| 85 | + getMapValues(vLatest.getAnalyzersVersions(), expectedVersionKeys)); |
87 | 86 |
|
| 87 | + Object[] expectedSymlinkKeys = TEST_MAPPED_SYMLINKS.keySet().stream().sorted().toArray(); |
88 | 88 | assertArrayEquals("index symlinks keysets should be equal", |
89 | | - TEST_MAPPED_SYMLINKS.keySet().toArray(), |
90 | | - vLatest.getIndexedSymlinks().keySet().toArray()); |
| 89 | + expectedSymlinkKeys, |
| 90 | + vLatest.getIndexedSymlinks().keySet().stream().sorted().toArray()); |
91 | 91 | assertArrayEquals("index symlinks values should be equal", |
92 | | - TEST_MAPPED_SYMLINKS.values().toArray(), |
93 | | - vLatest.getIndexedSymlinks().values().toArray()); |
| 92 | + getMapValues(TEST_MAPPED_SYMLINKS, expectedSymlinkKeys), |
| 93 | + getMapValues(vLatest.getIndexedSymlinks(), expectedSymlinkKeys)); |
94 | 94 | } |
95 | 95 |
|
96 | 96 | @Test |
@@ -148,4 +148,13 @@ public void shouldThrowIfTooOldVersion() throws ClassNotFoundException { |
148 | 148 | } |
149 | 149 | assertTrue("should have thrown on too-old version", passed); |
150 | 150 | } |
| 151 | + |
| 152 | + private static <K, V> Object[] getMapValues(Map<K, V> map, Object[] keys) { |
| 153 | + Object[] values = new Object[keys.length]; |
| 154 | + for (int i = 0; i < keys.length; ++i) { |
| 155 | + //noinspection SuspiciousMethodCalls |
| 156 | + values[i] = map.get(keys[i]); |
| 157 | + } |
| 158 | + return values; |
| 159 | + } |
151 | 160 | } |
0 commit comments