/* * Copyright (C) 2015 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package interactivespaces.util.data.dynamic; import static org.junit.Assert.assertEquals; import org.junit.Test; import java.util.HashMap; import java.util.Map; /** * Tests for complex {@code Map} properties. * * @author Oleksandr Kelepko */ public class InnerObjectMapDynamicPropertyTest extends BaseDynamicPropertyTest<Map<String, JavaBeanProperties>> { static JavaBeanProperties w1 = InterfaceMap.createInstance(JavaBeanProperties.class); static JavaBeanProperties w2 = InterfaceMap.createInstance(JavaBeanProperties.class); static JavaBeanProperties w3 = InterfaceMap.createInstance(JavaBeanProperties.class); static { InterfaceMapTest.setSomeValues(w1); InterfaceMapTest.setSomeOtherValues(w2); InterfaceMapTest.setSomeValues(w3); InterfaceMapTest.setSomeOtherValues(w3); } public InnerObjectMapDynamicPropertyTest() { super(createFirst(), createSecond(), "mapOfInner", "anotherMapOfInner"); } private static Map<String, JavaBeanProperties> createFirst() { Map<String, JavaBeanProperties> result = new HashMap<String, JavaBeanProperties>(); result.put("one", w1); result.put("oneMore", w1); result.put("two", w2); return result; } private static Map<String, JavaBeanProperties> createSecond() { Map<String, JavaBeanProperties> result = new HashMap<String, JavaBeanProperties>(); result.put("first", w1); result.put("second", w2); result.put("third", w3); return result; } @Override Map<String, JavaBeanProperties> getFirst() { return q.getMapOfInner(); } @Override Map<String, JavaBeanProperties> getSecond() { return q.getAnotherMapOfInner(); } @Override void setFirst(Map<String, JavaBeanProperties> o) { q.setMapOfInner(o); } @Override public void whatYouSetBothWaysIsReflectedByGetter() { Map<String, Map> secondMap = getSecondMap(); setFirst(first); map.put(secondKey, secondMap); assertEquals(first, getFirst()); assertEquals(second, getSecond()); } @Override public void whatYouPutIntoMapIsReflectedByGetter_notNull() { map.put(firstKey, getFirstMap()); map.put(secondKey, getSecondMap()); assertEquals(first, getFirst()); assertEquals(second, getSecond()); } @Test public void dummy() { } private static Map<String, Map> getFirstMap() { Map<String, Map> secondMap = new HashMap<String, Map>(); secondMap.put("one", InterfaceMap.getBackingMap(w1)); secondMap.put("oneMore", InterfaceMap.getBackingMap(w1)); secondMap.put("two", InterfaceMap.getBackingMap(w2)); return secondMap; } private static Map<String, Map> getSecondMap() { Map<String, Map> secondMap = new HashMap<String, Map>(); secondMap.put("first", InterfaceMap.getBackingMap(w1)); secondMap.put("second", InterfaceMap.getBackingMap(w2)); secondMap.put("third", InterfaceMap.getBackingMap(w3)); return secondMap; } }