/projects/collections-3.2.1/src/test/org/apache/commons/collections/bidimap/AbstractTestSortedBidiMap.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus · Java · 628 lines · 501 code · 74 blank · 53 comment · 20 complexity · 71101891b6f9afe57fea1b63ef208aab MD5 · raw file

  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.commons.collections.bidimap;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.Collections;
  21. import java.util.Iterator;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.Set;
  25. import java.util.SortedMap;
  26. import java.util.SortedSet;
  27. import java.util.TreeMap;
  28. import java.util.TreeSet;
  29. import org.apache.commons.collections.BulkTest;
  30. import org.apache.commons.collections.SortedBidiMap;
  31. import org.apache.commons.collections.map.AbstractTestSortedMap;
  32. /**
  33. * Abstract test class for {@link SortedBidiMap} methods and contracts.
  34. *
  35. * @version $Revision: 646780 $ $Date: 2008-04-10 13:48:07 +0100 (Thu, 10 Apr 2008) $
  36. *
  37. * @author Matthew Hawthorne
  38. * @author Stephen Colebourne
  39. */
  40. public abstract class AbstractTestSortedBidiMap extends AbstractTestOrderedBidiMap {
  41. protected List sortedKeys = new ArrayList();
  42. protected List sortedValues = new ArrayList();
  43. protected SortedSet sortedNewValues = new TreeSet();
  44. public AbstractTestSortedBidiMap(String testName) {
  45. super(testName);
  46. sortedKeys.addAll(Arrays.asList(getSampleKeys()));
  47. Collections.sort(sortedKeys);
  48. sortedKeys = Collections.unmodifiableList(sortedKeys);
  49. Map map = new TreeMap();
  50. for (int i = 0; i < getSampleKeys().length; i++) {
  51. map.put(getSampleKeys()[i], getSampleValues()[i]);
  52. }
  53. sortedValues.addAll(map.values());
  54. sortedValues = Collections.unmodifiableList(sortedValues);
  55. sortedNewValues.addAll(Arrays.asList(getNewSampleValues()));
  56. }
  57. public AbstractTestSortedBidiMap() {
  58. super();
  59. sortedKeys.addAll(Arrays.asList(getSampleValues()));
  60. Collections.sort(sortedKeys);
  61. sortedKeys = Collections.unmodifiableList(sortedKeys);
  62. Map map = new TreeMap();
  63. for (int i = 0; i < getSampleKeys().length; i++) {
  64. map.put(getSampleValues()[i], getSampleKeys()[i]);
  65. }
  66. sortedValues.addAll(map.values());
  67. sortedValues = Collections.unmodifiableList(sortedValues);
  68. sortedNewValues.addAll(Arrays.asList(getNewSampleValues()));
  69. }
  70. //-----------------------------------------------------------------------
  71. public boolean isAllowNullKey() {
  72. return false;
  73. }
  74. public boolean isAllowNullValue() {
  75. return false;
  76. }
  77. public Map makeConfirmedMap() {
  78. return new TreeMap();
  79. }
  80. //-----------------------------------------------------------------------
  81. //-----------------------------------------------------------------------
  82. public void testBidiHeadMapContains() {
  83. // extra test as other tests get complex
  84. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  85. Iterator it = sm.keySet().iterator();
  86. Object first = it.next();
  87. Object toKey = it.next();
  88. Object second = it.next();
  89. Object firstValue = sm.get(first);
  90. Object secondValue = sm.get(second);
  91. SortedMap head = sm.headMap(toKey);
  92. assertEquals(1, head.size());
  93. assertEquals(true, sm.containsKey(first));
  94. assertEquals(true, head.containsKey(first));
  95. assertEquals(true, sm.containsValue(firstValue));
  96. assertEquals(true, head.containsValue(firstValue));
  97. assertEquals(true, sm.containsKey(second));
  98. assertEquals(false, head.containsKey(second));
  99. assertEquals(true, sm.containsValue(secondValue));
  100. assertEquals(false, head.containsValue(secondValue));
  101. }
  102. //-----------------------------------------------------------------------
  103. public void testBidiClearByHeadMap() {
  104. if (isRemoveSupported() == false) return;
  105. // extra test as other tests get complex
  106. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  107. Iterator it = sm.keySet().iterator();
  108. Object first = it.next();
  109. Object second = it.next();
  110. Object toKey = it.next();
  111. Object firstValue = sm.get(first);
  112. Object secondValue = sm.get(second);
  113. Object toKeyValue = sm.get(toKey);
  114. SortedMap sub = sm.headMap(toKey);
  115. int size = sm.size();
  116. assertEquals(2, sub.size());
  117. sub.clear();
  118. assertEquals(0, sub.size());
  119. assertEquals(size - 2, sm.size());
  120. assertEquals(size - 2, sm.inverseBidiMap().size());
  121. assertEquals(false, sm.containsKey(first));
  122. assertEquals(false, sm.containsValue(firstValue));
  123. assertEquals(false, sm.inverseBidiMap().containsKey(firstValue));
  124. assertEquals(false, sm.inverseBidiMap().containsValue(first));
  125. assertEquals(false, sub.containsKey(first));
  126. assertEquals(false, sub.containsValue(firstValue));
  127. assertEquals(false, sm.containsKey(second));
  128. assertEquals(false, sm.containsValue(secondValue));
  129. assertEquals(false, sm.inverseBidiMap().containsKey(secondValue));
  130. assertEquals(false, sm.inverseBidiMap().containsValue(second));
  131. assertEquals(false, sub.containsKey(second));
  132. assertEquals(false, sub.containsValue(secondValue));
  133. assertEquals(true, sm.containsKey(toKey));
  134. assertEquals(true, sm.containsValue(toKeyValue));
  135. assertEquals(true, sm.inverseBidiMap().containsKey(toKeyValue));
  136. assertEquals(true, sm.inverseBidiMap().containsValue(toKey));
  137. assertEquals(false, sub.containsKey(toKey));
  138. assertEquals(false, sub.containsValue(toKeyValue));
  139. }
  140. //-----------------------------------------------------------------------
  141. public void testBidiRemoveByHeadMap() {
  142. if (isRemoveSupported() == false) return;
  143. // extra test as other tests get complex
  144. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  145. Iterator it = sm.keySet().iterator();
  146. Object first = it.next();
  147. Object second = it.next();
  148. Object toKey = it.next();
  149. int size = sm.size();
  150. SortedMap sub = sm.headMap(toKey);
  151. assertEquals(2, sub.size());
  152. assertEquals(true, sm.containsKey(first));
  153. assertEquals(true, sub.containsKey(first));
  154. assertEquals(true, sm.containsKey(second));
  155. assertEquals(true, sub.containsKey(second));
  156. Object firstValue = sub.remove(first);
  157. assertEquals(1, sub.size());
  158. assertEquals(size - 1, sm.size());
  159. assertEquals(size - 1, sm.inverseBidiMap().size());
  160. assertEquals(false, sm.containsKey(first));
  161. assertEquals(false, sm.containsValue(firstValue));
  162. assertEquals(false, sm.inverseBidiMap().containsKey(firstValue));
  163. assertEquals(false, sm.inverseBidiMap().containsValue(first));
  164. assertEquals(false, sub.containsKey(first));
  165. assertEquals(false, sub.containsValue(firstValue));
  166. Object secondValue = sub.remove(second);
  167. assertEquals(0, sub.size());
  168. assertEquals(size - 2, sm.size());
  169. assertEquals(size - 2, sm.inverseBidiMap().size());
  170. assertEquals(false, sm.containsKey(second));
  171. assertEquals(false, sm.containsValue(secondValue));
  172. assertEquals(false, sm.inverseBidiMap().containsKey(secondValue));
  173. assertEquals(false, sm.inverseBidiMap().containsValue(second));
  174. assertEquals(false, sub.containsKey(second));
  175. assertEquals(false, sub.containsValue(secondValue));
  176. }
  177. //-----------------------------------------------------------------------
  178. public void testBidiRemoveByHeadMapEntrySet() {
  179. if (isRemoveSupported() == false) return;
  180. // extra test as other tests get complex
  181. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  182. Iterator it = sm.keySet().iterator();
  183. Object first = it.next();
  184. Object second = it.next();
  185. Object toKey = it.next();
  186. int size = sm.size();
  187. SortedMap sub = sm.headMap(toKey);
  188. Set set = sub.entrySet();
  189. assertEquals(2, sub.size());
  190. assertEquals(2, set.size());
  191. Iterator it2 = set.iterator();
  192. Map.Entry firstEntry = cloneMapEntry((Map.Entry) it2.next());
  193. Map.Entry secondEntry = cloneMapEntry((Map.Entry) it2.next());
  194. assertEquals(true, sm.containsKey(first));
  195. assertEquals(true, sub.containsKey(first));
  196. assertEquals(true, set.contains(firstEntry));
  197. assertEquals(true, sm.containsKey(second));
  198. assertEquals(true, sub.containsKey(second));
  199. assertEquals(true, set.contains(secondEntry));
  200. set.remove(firstEntry);
  201. assertEquals(1, sub.size());
  202. assertEquals(size - 1, sm.size());
  203. assertEquals(size - 1, sm.inverseBidiMap().size());
  204. assertEquals(false, sm.containsKey(firstEntry.getKey()));
  205. assertEquals(false, sm.containsValue(firstEntry.getValue()));
  206. assertEquals(false, sm.inverseBidiMap().containsKey(firstEntry.getValue()));
  207. assertEquals(false, sm.inverseBidiMap().containsValue(firstEntry.getKey()));
  208. assertEquals(false, sub.containsKey(firstEntry.getKey()));
  209. assertEquals(false, sub.containsValue(firstEntry.getValue()));
  210. assertEquals(false, set.contains(firstEntry));
  211. set.remove(secondEntry);
  212. assertEquals(0, sub.size());
  213. assertEquals(size - 2, sm.size());
  214. assertEquals(size - 2, sm.inverseBidiMap().size());
  215. assertEquals(false, sm.containsKey(secondEntry.getKey()));
  216. assertEquals(false, sm.containsValue(secondEntry.getValue()));
  217. assertEquals(false, sm.inverseBidiMap().containsKey(secondEntry.getValue()));
  218. assertEquals(false, sm.inverseBidiMap().containsValue(secondEntry.getKey()));
  219. assertEquals(false, sub.containsKey(secondEntry.getKey()));
  220. assertEquals(false, sub.containsValue(secondEntry.getValue()));
  221. assertEquals(false, set.contains(secondEntry));
  222. }
  223. //-----------------------------------------------------------------------
  224. //-----------------------------------------------------------------------
  225. public void testBidiTailMapContains() {
  226. // extra test as other tests get complex
  227. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  228. Iterator it = sm.keySet().iterator();
  229. Object first = it.next();
  230. Object fromKey = it.next();
  231. Object second = it.next();
  232. Object firstValue = sm.get(first);
  233. Object fromKeyValue = sm.get(fromKey);
  234. Object secondValue = sm.get(second);
  235. SortedMap sub = sm.tailMap(fromKey);
  236. assertEquals(sm.size() - 1, sub.size());
  237. assertEquals(true, sm.containsKey(first));
  238. assertEquals(false, sub.containsKey(first));
  239. assertEquals(true, sm.containsValue(firstValue));
  240. assertEquals(false, sub.containsValue(firstValue));
  241. assertEquals(true, sm.containsKey(fromKey));
  242. assertEquals(true, sub.containsKey(fromKey));
  243. assertEquals(true, sm.containsValue(fromKeyValue));
  244. assertEquals(true, sub.containsValue(fromKeyValue));
  245. assertEquals(true, sm.containsKey(second));
  246. assertEquals(true, sub.containsKey(second));
  247. assertEquals(true, sm.containsValue(secondValue));
  248. assertEquals(true, sub.containsValue(secondValue));
  249. }
  250. //-----------------------------------------------------------------------
  251. public void testBidiClearByTailMap() {
  252. if (isRemoveSupported() == false) return;
  253. // extra test as other tests get complex
  254. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  255. Iterator it = sm.keySet().iterator();
  256. it.next();
  257. it.next();
  258. Object first = it.next();
  259. Object fromKey = it.next();
  260. Object second = it.next();
  261. Object firstValue = sm.get(first);
  262. Object fromKeyValue = sm.get(fromKey);
  263. Object secondValue = sm.get(second);
  264. SortedMap sub = sm.tailMap(fromKey);
  265. int size = sm.size();
  266. assertEquals(size - 3, sub.size());
  267. sub.clear();
  268. assertEquals(0, sub.size());
  269. assertEquals(3, sm.size());
  270. assertEquals(3, sm.inverseBidiMap().size());
  271. assertEquals(true, sm.containsKey(first));
  272. assertEquals(true, sm.containsValue(firstValue));
  273. assertEquals(true, sm.inverseBidiMap().containsKey(firstValue));
  274. assertEquals(true, sm.inverseBidiMap().containsValue(first));
  275. assertEquals(false, sub.containsKey(first));
  276. assertEquals(false, sub.containsValue(firstValue));
  277. assertEquals(false, sm.containsKey(fromKey));
  278. assertEquals(false, sm.containsValue(fromKeyValue));
  279. assertEquals(false, sm.inverseBidiMap().containsKey(fromKeyValue));
  280. assertEquals(false, sm.inverseBidiMap().containsValue(fromKey));
  281. assertEquals(false, sub.containsKey(fromKey));
  282. assertEquals(false, sub.containsValue(fromKeyValue));
  283. assertEquals(false, sm.containsKey(second));
  284. assertEquals(false, sm.containsValue(secondValue));
  285. assertEquals(false, sm.inverseBidiMap().containsKey(secondValue));
  286. assertEquals(false, sm.inverseBidiMap().containsValue(second));
  287. assertEquals(false, sub.containsKey(second));
  288. assertEquals(false, sub.containsValue(secondValue));
  289. }
  290. //-----------------------------------------------------------------------
  291. public void testBidiRemoveByTailMap() {
  292. if (isRemoveSupported() == false) return;
  293. // extra test as other tests get complex
  294. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  295. Iterator it = sm.keySet().iterator();
  296. it.next();
  297. it.next();
  298. Object fromKey = it.next();
  299. Object first = it.next();
  300. Object second = it.next();
  301. int size = sm.size();
  302. SortedMap sub = sm.tailMap(fromKey);
  303. assertEquals(true, sm.containsKey(first));
  304. assertEquals(true, sub.containsKey(first));
  305. assertEquals(true, sm.containsKey(second));
  306. assertEquals(true, sub.containsKey(second));
  307. Object firstValue = sub.remove(first);
  308. assertEquals(size - 3, sub.size());
  309. assertEquals(size - 1, sm.size());
  310. assertEquals(size - 1, sm.inverseBidiMap().size());
  311. assertEquals(false, sm.containsKey(first));
  312. assertEquals(false, sm.containsValue(firstValue));
  313. assertEquals(false, sm.inverseBidiMap().containsKey(firstValue));
  314. assertEquals(false, sm.inverseBidiMap().containsValue(first));
  315. assertEquals(false, sub.containsKey(first));
  316. assertEquals(false, sub.containsValue(firstValue));
  317. Object secondValue = sub.remove(second);
  318. assertEquals(size - 4, sub.size());
  319. assertEquals(size - 2, sm.size());
  320. assertEquals(size - 2, sm.inverseBidiMap().size());
  321. assertEquals(false, sm.containsKey(second));
  322. assertEquals(false, sm.containsValue(secondValue));
  323. assertEquals(false, sm.inverseBidiMap().containsKey(secondValue));
  324. assertEquals(false, sm.inverseBidiMap().containsValue(second));
  325. assertEquals(false, sub.containsKey(second));
  326. assertEquals(false, sub.containsValue(secondValue));
  327. }
  328. //-----------------------------------------------------------------------
  329. public void testBidiRemoveByTailMapEntrySet() {
  330. if (isRemoveSupported() == false) return;
  331. // extra test as other tests get complex
  332. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  333. Iterator it = sm.keySet().iterator();
  334. it.next();
  335. it.next();
  336. Object fromKey = it.next();
  337. Object first = it.next();
  338. Object second = it.next();
  339. int size = sm.size();
  340. SortedMap sub = sm.tailMap(fromKey);
  341. Set set = sub.entrySet();
  342. Iterator it2 = set.iterator();
  343. Object fromEntry = it2.next();
  344. Map.Entry firstEntry = cloneMapEntry((Map.Entry) it2.next());
  345. Map.Entry secondEntry = cloneMapEntry((Map.Entry) it2.next());
  346. assertEquals(true, sm.containsKey(first));
  347. assertEquals(true, sub.containsKey(first));
  348. assertEquals(true, set.contains(firstEntry));
  349. assertEquals(true, sm.containsKey(second));
  350. assertEquals(true, sub.containsKey(second));
  351. assertEquals(true, set.contains(secondEntry));
  352. set.remove(firstEntry);
  353. assertEquals(size - 3, sub.size());
  354. assertEquals(size - 1, sm.size());
  355. assertEquals(size - 1, sm.inverseBidiMap().size());
  356. assertEquals(false, sm.containsKey(firstEntry.getKey()));
  357. assertEquals(false, sm.containsValue(firstEntry.getValue()));
  358. assertEquals(false, sm.inverseBidiMap().containsKey(firstEntry.getValue()));
  359. assertEquals(false, sm.inverseBidiMap().containsValue(firstEntry.getKey()));
  360. assertEquals(false, sub.containsKey(firstEntry.getKey()));
  361. assertEquals(false, sub.containsValue(firstEntry.getValue()));
  362. assertEquals(false, set.contains(firstEntry));
  363. set.remove(secondEntry);
  364. assertEquals(size - 4, sub.size());
  365. assertEquals(size - 2, sm.size());
  366. assertEquals(size - 2, sm.inverseBidiMap().size());
  367. assertEquals(false, sm.containsKey(secondEntry.getKey()));
  368. assertEquals(false, sm.containsValue(secondEntry.getValue()));
  369. assertEquals(false, sm.inverseBidiMap().containsKey(secondEntry.getValue()));
  370. assertEquals(false, sm.inverseBidiMap().containsValue(secondEntry.getKey()));
  371. assertEquals(false, sub.containsKey(secondEntry.getKey()));
  372. assertEquals(false, sub.containsValue(secondEntry.getValue()));
  373. assertEquals(false, set.contains(secondEntry));
  374. }
  375. //-----------------------------------------------------------------------
  376. //-----------------------------------------------------------------------
  377. public void testBidiSubMapContains() {
  378. // extra test as other tests get complex
  379. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  380. Iterator it = sm.keySet().iterator();
  381. Object first = it.next();
  382. Object fromKey = it.next();
  383. Object second = it.next();
  384. Object toKey = it.next();
  385. Object third = it.next();
  386. Object firstValue = sm.get(first);
  387. Object fromKeyValue = sm.get(fromKey);
  388. Object secondValue = sm.get(second);
  389. Object thirdValue = sm.get(third);
  390. SortedMap sub = sm.subMap(fromKey, toKey);
  391. assertEquals(2, sub.size());
  392. assertEquals(true, sm.containsKey(first));
  393. assertEquals(false, sub.containsKey(first));
  394. assertEquals(true, sm.containsValue(firstValue));
  395. assertEquals(false, sub.containsValue(firstValue));
  396. assertEquals(true, sm.containsKey(fromKey));
  397. assertEquals(true, sub.containsKey(fromKey));
  398. assertEquals(true, sm.containsValue(fromKeyValue));
  399. assertEquals(true, sub.containsValue(fromKeyValue));
  400. assertEquals(true, sm.containsKey(second));
  401. assertEquals(true, sub.containsKey(second));
  402. assertEquals(true, sm.containsValue(secondValue));
  403. assertEquals(true, sub.containsValue(secondValue));
  404. assertEquals(true, sm.containsKey(third));
  405. assertEquals(false, sub.containsKey(third));
  406. assertEquals(true, sm.containsValue(thirdValue));
  407. assertEquals(false, sub.containsValue(thirdValue));
  408. }
  409. //-----------------------------------------------------------------------
  410. public void testBidiClearBySubMap() {
  411. if (isRemoveSupported() == false) return;
  412. // extra test as other tests get complex
  413. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  414. Iterator it = sm.keySet().iterator();
  415. it.next();
  416. Object fromKey = it.next();
  417. Object first = it.next();
  418. Object second = it.next();
  419. Object toKey = it.next();
  420. Object fromKeyValue = sm.get(fromKey);
  421. Object firstValue = sm.get(first);
  422. Object secondValue = sm.get(second);
  423. Object toKeyValue = sm.get(toKey);
  424. SortedMap sub = sm.subMap(fromKey, toKey);
  425. int size = sm.size();
  426. assertEquals(3, sub.size());
  427. sub.clear();
  428. assertEquals(0, sub.size());
  429. assertEquals(size - 3, sm.size());
  430. assertEquals(size - 3, sm.inverseBidiMap().size());
  431. assertEquals(false, sm.containsKey(fromKey));
  432. assertEquals(false, sm.containsValue(fromKeyValue));
  433. assertEquals(false, sm.inverseBidiMap().containsKey(fromKeyValue));
  434. assertEquals(false, sm.inverseBidiMap().containsValue(fromKey));
  435. assertEquals(false, sub.containsKey(fromKey));
  436. assertEquals(false, sub.containsValue(fromKeyValue));
  437. assertEquals(false, sm.containsKey(first));
  438. assertEquals(false, sm.containsValue(firstValue));
  439. assertEquals(false, sm.inverseBidiMap().containsKey(firstValue));
  440. assertEquals(false, sm.inverseBidiMap().containsValue(first));
  441. assertEquals(false, sub.containsKey(first));
  442. assertEquals(false, sub.containsValue(firstValue));
  443. assertEquals(false, sm.containsKey(second));
  444. assertEquals(false, sm.containsValue(secondValue));
  445. assertEquals(false, sm.inverseBidiMap().containsKey(secondValue));
  446. assertEquals(false, sm.inverseBidiMap().containsValue(second));
  447. assertEquals(false, sub.containsKey(second));
  448. assertEquals(false, sub.containsValue(secondValue));
  449. assertEquals(true, sm.containsKey(toKey));
  450. assertEquals(true, sm.containsValue(toKeyValue));
  451. assertEquals(true, sm.inverseBidiMap().containsKey(toKeyValue));
  452. assertEquals(true, sm.inverseBidiMap().containsValue(toKey));
  453. assertEquals(false, sub.containsKey(toKey));
  454. assertEquals(false, sub.containsValue(toKeyValue));
  455. }
  456. //-----------------------------------------------------------------------
  457. public void testBidiRemoveBySubMap() {
  458. if (isRemoveSupported() == false) return;
  459. // extra test as other tests get complex
  460. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  461. Iterator it = sm.keySet().iterator();
  462. it.next();
  463. it.next();
  464. Object fromKey = it.next();
  465. Object first = it.next();
  466. Object second = it.next();
  467. Object toKey = it.next();
  468. int size = sm.size();
  469. SortedMap sub = sm.subMap(fromKey, toKey);
  470. assertEquals(true, sm.containsKey(first));
  471. assertEquals(true, sub.containsKey(first));
  472. assertEquals(true, sm.containsKey(second));
  473. assertEquals(true, sub.containsKey(second));
  474. Object firstValue = sub.remove(first);
  475. assertEquals(2, sub.size());
  476. assertEquals(size - 1, sm.size());
  477. assertEquals(size - 1, sm.inverseBidiMap().size());
  478. assertEquals(false, sm.containsKey(first));
  479. assertEquals(false, sm.containsValue(firstValue));
  480. assertEquals(false, sm.inverseBidiMap().containsKey(firstValue));
  481. assertEquals(false, sm.inverseBidiMap().containsValue(first));
  482. assertEquals(false, sub.containsKey(first));
  483. assertEquals(false, sub.containsValue(firstValue));
  484. Object secondValue = sub.remove(second);
  485. assertEquals(1, sub.size());
  486. assertEquals(size - 2, sm.size());
  487. assertEquals(size - 2, sm.inverseBidiMap().size());
  488. assertEquals(false, sm.containsKey(second));
  489. assertEquals(false, sm.containsValue(secondValue));
  490. assertEquals(false, sm.inverseBidiMap().containsKey(secondValue));
  491. assertEquals(false, sm.inverseBidiMap().containsValue(second));
  492. assertEquals(false, sub.containsKey(second));
  493. assertEquals(false, sub.containsValue(secondValue));
  494. }
  495. //-----------------------------------------------------------------------
  496. public void testBidiRemoveBySubMapEntrySet() {
  497. if (isRemoveSupported() == false) return;
  498. // extra test as other tests get complex
  499. SortedBidiMap sm = (SortedBidiMap) makeFullMap();
  500. Iterator it = sm.keySet().iterator();
  501. it.next();
  502. it.next();
  503. Object fromKey = it.next();
  504. Object first = it.next();
  505. Object second = it.next();
  506. Object toKey = it.next();
  507. int size = sm.size();
  508. SortedMap sub = sm.subMap(fromKey, toKey);
  509. Set set = sub.entrySet();
  510. assertEquals(3, set.size());
  511. Iterator it2 = set.iterator();
  512. Object fromEntry = it2.next();
  513. Map.Entry firstEntry = cloneMapEntry((Map.Entry) it2.next());
  514. Map.Entry secondEntry = cloneMapEntry((Map.Entry) it2.next());
  515. assertEquals(true, sm.containsKey(first));
  516. assertEquals(true, sub.containsKey(first));
  517. assertEquals(true, set.contains(firstEntry));
  518. assertEquals(true, sm.containsKey(second));
  519. assertEquals(true, sub.containsKey(second));
  520. assertEquals(true, set.contains(secondEntry));
  521. set.remove(firstEntry);
  522. assertEquals(2, sub.size());
  523. assertEquals(size - 1, sm.size());
  524. assertEquals(size - 1, sm.inverseBidiMap().size());
  525. assertEquals(false, sm.containsKey(firstEntry.getKey()));
  526. assertEquals(false, sm.containsValue(firstEntry.getValue()));
  527. assertEquals(false, sm.inverseBidiMap().containsKey(firstEntry.getValue()));
  528. assertEquals(false, sm.inverseBidiMap().containsValue(firstEntry.getKey()));
  529. assertEquals(false, sub.containsKey(firstEntry.getKey()));
  530. assertEquals(false, sub.containsValue(firstEntry.getValue()));
  531. assertEquals(false, set.contains(firstEntry));
  532. set.remove(secondEntry);
  533. assertEquals(1, sub.size());
  534. assertEquals(size - 2, sm.size());
  535. assertEquals(size - 2, sm.inverseBidiMap().size());
  536. assertEquals(false, sm.containsKey(secondEntry.getKey()));
  537. assertEquals(false, sm.containsValue(secondEntry.getValue()));
  538. assertEquals(false, sm.inverseBidiMap().containsKey(secondEntry.getValue()));
  539. assertEquals(false, sm.inverseBidiMap().containsValue(secondEntry.getKey()));
  540. assertEquals(false, sub.containsKey(secondEntry.getKey()));
  541. assertEquals(false, sub.containsValue(secondEntry.getValue()));
  542. assertEquals(false, set.contains(secondEntry));
  543. }
  544. //-----------------------------------------------------------------------
  545. public BulkTest bulkTestHeadMap() {
  546. return new AbstractTestSortedMap.TestHeadMap(this);
  547. }
  548. public BulkTest bulkTestTailMap() {
  549. return new AbstractTestSortedMap.TestTailMap(this);
  550. }
  551. public BulkTest bulkTestSubMap() {
  552. return new AbstractTestSortedMap.TestSubMap(this);
  553. }
  554. }