/** * Copyright (C) 2019 Adrien Hopkins * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package org.unitConverter.math; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.NoSuchElementException; import org.junit.jupiter.api.Test; import org.unitConverter.math.ConditionalExistenceCollections.ConditionalExistenceIterator; /** * Tests the {@link #ConditionalExistenceCollections}. * * @author Adrien Hopkins * @since 2019-10-16 */ class ConditionalExistenceCollectionsTest { /** * The returned iterator ignores elements that don't start with "a". * * @return test iterator * @since 2019-10-17 */ ConditionalExistenceIterator getTestIterator() { final List items = Arrays.asList("aa", "ab", "ba"); final Iterator it = items.iterator(); final ConditionalExistenceIterator cit = (ConditionalExistenceIterator) ConditionalExistenceCollections .conditionalExistenceIterator(it, s -> s.startsWith("a")); return cit; } /** * The returned map ignores mappings where the value is zero. * * @return map to be used for test data * @since 2019-10-16 */ Map getTestMap() { final Map map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("zero", 0); map.put("ten", 10); final Map conditionalMap = ConditionalExistenceCollections.conditionalExistenceMap(map, e -> !Integer.valueOf(0).equals(e.getValue())); return conditionalMap; } /** * Test method for {@link org.unitConverter.math.ZeroIsNullMap#containsKey(java.lang.Object)}. */ @Test void testContainsKeyObject() { final Map map = this.getTestMap(); assertTrue(map.containsKey("one")); assertTrue(map.containsKey("ten")); assertFalse(map.containsKey("five")); assertFalse(map.containsKey("zero")); } /** * Test method for {@link org.unitConverter.math.ZeroIsNullMap#containsValue(java.lang.Object)}. */ @Test void testContainsValueObject() { final Map map = this.getTestMap(); assertTrue(map.containsValue(1)); assertTrue(map.containsValue(10)); assertFalse(map.containsValue(5)); assertFalse(map.containsValue(0)); } /** * Test method for {@link org.unitConverter.math.ZeroIsNullMap#entrySet()}. */ @Test void testEntrySet() { final Map map = this.getTestMap(); for (final Entry e : map.entrySet()) { assertTrue(e.getValue() != 0); } } /** * Test method for {@link org.unitConverter.math.ZeroIsNullMap#get(java.lang.Object)}. */ @Test void testGetObject() { final Map map = this.getTestMap(); assertEquals(1, map.get("one")); assertEquals(10, map.get("ten")); assertEquals(null, map.get("five")); assertEquals(null, map.get("zero")); } @Test void testIterator() { final ConditionalExistenceIterator testIterator = this.getTestIterator(); assertTrue(testIterator.hasNext); assertTrue(testIterator.hasNext()); assertEquals("aa", testIterator.nextElement); assertEquals("aa", testIterator.next()); assertTrue(testIterator.hasNext); assertTrue(testIterator.hasNext()); assertEquals("ab", testIterator.nextElement); assertEquals("ab", testIterator.next()); assertFalse(testIterator.hasNext); assertFalse(testIterator.hasNext()); assertEquals(null, testIterator.nextElement); assertThrows(NoSuchElementException.class, testIterator::next); } /** * Test method for {@link org.unitConverter.math.ZeroIsNullMap#keySet()}. */ @Test void testKeySet() { final Map map = this.getTestMap(); assertFalse(map.keySet().contains("zero")); } /** * Test method for {@link org.unitConverter.math.ZeroIsNullMap#values()}. */ @Test void testValues() { final Map map = this.getTestMap(); assertFalse(map.values().contains(0)); } }