@Test public void testComplexGenericIndexedMapEntryWithCollectionConversion() { Set<String> inputValue = new HashSet<>(); inputValue.add("10"); ComplexMapHolder holder = new ComplexMapHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("genericIndexedMap[1]", inputValue); assertEquals(new Integer(1), holder.getGenericIndexedMap().keySet().iterator().next()); assertEquals(new Long(10), holder.getGenericIndexedMap().values().iterator().next().get(0)); }
@Test public void testGenericMap() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); Map<String, String> input = new HashMap<>(); input.put("4", "5"); input.put("6", "7"); bw.setPropertyValue("shortMap", input); assertEquals(new Integer(5), gb.getShortMap().get(new Short("4"))); assertEquals(new Integer(7), gb.getShortMap().get(new Short("6"))); }
@Test public void testGenericMapOfLists() throws MalformedURLException { GenericBean<String> gb = new GenericBean<>(); Map<Integer, List<Integer>> map = new HashMap<>(); map.put(new Integer(1), new LinkedList<>()); gb.setMapOfLists(map); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("mapOfLists[1][0]", new Integer(5)); assertEquals(new Integer(5), bw.getPropertyValue("mapOfLists[1][0]")); assertEquals(new Integer(5), gb.getMapOfLists().get(new Integer(1)).get(0)); }
@Test public void testGenericMapOfListsWithElementConversion() throws MalformedURLException { GenericBean<String> gb = new GenericBean<>(); Map<Integer, List<Integer>> map = new HashMap<>(); map.put(new Integer(1), new LinkedList<>()); gb.setMapOfLists(map); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("mapOfLists[1][0]", "5"); assertEquals(new Integer(5), bw.getPropertyValue("mapOfLists[1][0]")); assertEquals(new Integer(5), gb.getMapOfLists().get(new Integer(1)).get(0)); }
@Test public void testGenericTypeNestingMapOfInteger() throws Exception { Map<String, String> map = new HashMap<>(); map.put("testKey", "100"); NestedGenericCollectionBean gb = new NestedGenericCollectionBean(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("mapOfInteger", map); Object obj = gb.getMapOfInteger().get("testKey"); assertTrue(obj instanceof Integer); }
@Test public void testGenericListOfLists() throws MalformedURLException { GenericBean<String> gb = new GenericBean<>(); List<List<Integer>> list = new LinkedList<>(); list.add(new LinkedList<>()); gb.setListOfLists(list); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("listOfLists[0][0]", new Integer(5)); assertEquals(new Integer(5), bw.getPropertyValue("listOfLists[0][0]")); assertEquals(new Integer(5), gb.getListOfLists().get(0).get(0)); }
@Test public void testComplexDerivedIndexedMapEntry() { List<String> inputValue = new LinkedList<>(); inputValue.add("10"); ComplexMapHolder holder = new ComplexMapHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("derivedIndexedMap[1]", inputValue); assertEquals(new Integer(1), holder.getDerivedIndexedMap().keySet().iterator().next()); assertEquals(new Long(10), holder.getDerivedIndexedMap().values().iterator().next().get(0)); }
@Test public void testGenericMapElementWithCollectionValue() { GenericBean<?> gb = new GenericBean<>(); gb.setCollectionMap(new HashMap<>()); BeanWrapper bw = new BeanWrapperImpl(gb); bw.registerCustomEditor(Number.class, new CustomNumberEditor(Integer.class, false)); HashSet<Integer> value1 = new HashSet<>(); value1.add(new Integer(1)); bw.setPropertyValue("collectionMap[1]", value1); assertTrue(gb.getCollectionMap().get(new Integer(1)) instanceof HashSet); }
@Test public void testSettingLongPropertyWithGenericInterface() { Promotion bean = new Promotion(); BeanWrapper bw = new BeanWrapperImpl(bean); bw.setPropertyValue("id", "10"); assertEquals(new Long(10), bean.getId()); }
@Test public void testGenericMapElement() { GenericBean<?> gb = new GenericBean<>(); gb.setShortMap(new HashMap<>()); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("shortMap[4]", "5"); assertEquals(new Integer(5), bw.getPropertyValue("shortMap[4]")); assertEquals(new Integer(5), gb.getShortMap().get(new Short("4"))); }
@Test public void testGenericList() throws MalformedURLException { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); List<String> input = new ArrayList<>(); input.add("http://localhost:8080"); input.add("http://localhost:9090"); bw.setPropertyValue("resourceList", input); assertEquals(new UrlResource("http://localhost:8080"), gb.getResourceList().get(0)); assertEquals(new UrlResource("http://localhost:9090"), gb.getResourceList().get(1)); }
@Test public void testCustomEnumSetWithSingleValue() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnumSet", "VALUE_1"); assertEquals(1, gb.getCustomEnumSet().size()); assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_1)); }
@Test public void testGenericListOfArrays() throws MalformedURLException { GenericBean<String> gb = new GenericBean<>(); ArrayList<String[]> list = new ArrayList<>(); list.add(new String[] {"str1", "str2"}); gb.setListOfArrays(list); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("listOfArrays[0][1]", "str3 "); assertEquals("str3 ", bw.getPropertyValue("listOfArrays[0][1]")); assertEquals("str3 ", gb.getListOfArrays().get(0)[1]); }
@Test public void testNonPublicEnum() { NonPublicEnumHolder holder = new NonPublicEnumHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("nonPublicEnum", "VALUE_1"); assertEquals(NonPublicEnum.VALUE_1, holder.getNonPublicEnum()); }
@Test public void testCustomEnumSetWithGetterSetterMismatch() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnumSetMismatch", new String[] {"VALUE_1", "VALUE_2"}); assertEquals(2, gb.getCustomEnumSet().size()); assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_1)); assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_2)); }
@Test public void testGenericListOfArraysWithElementConversion() throws MalformedURLException { GenericBean<String> gb = new GenericBean<>(); ArrayList<String[]> list = new ArrayList<>(); list.add(new String[] {"str1", "str2"}); gb.setListOfArrays(list); BeanWrapper bw = new BeanWrapperImpl(gb); bw.registerCustomEditor(String.class, new StringTrimmerEditor(false)); bw.setPropertyValue("listOfArrays[0][1]", "str3 "); assertEquals("str3", bw.getPropertyValue("listOfArrays[0][1]")); assertEquals("str3", gb.getListOfArrays().get(0)[1]); }
@Test public void testStandardEnumMapWithAutoGrowing() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setAutoGrowNestedPaths(true); assertNull(gb.getStandardEnumMap()); bw.setPropertyValue("standardEnumMap[VALUE_1]", 1); assertEquals(1, gb.getStandardEnumMap().size()); assertEquals(new Integer(1), gb.getStandardEnumMap().get(CustomEnum.VALUE_1)); }
@Test public void incompletelyQuotedKeyLeadsToPropertyException() { TestBean target = new TestBean(); try { BeanWrapper accessor = createAccessor(target); accessor.setPropertyValue("[']", "foobar"); fail("Should throw exception on invalid property"); } catch (NotWritablePropertyException ex) { assertNull(ex.getPossibleMatches()); } }
@Test public void notWritablePropertyExceptionContainsAlternativeMatch() { IntelliBean target = new IntelliBean(); BeanWrapper bw = createAccessor(target); try { bw.setPropertyValue("names", "Alef"); } catch (NotWritablePropertyException ex) { assertNotNull("Possible matches not determined", ex.getPossibleMatches()); assertEquals("Invalid amount of alternatives", 1, ex.getPossibleMatches().length); } }
@Test public void notWritablePropertyExceptionContainsAlternativeMatches() { IntelliBean target = new IntelliBean(); BeanWrapper bw = createAccessor(target); try { bw.setPropertyValue("mystring", "Arjen"); } catch (NotWritablePropertyException ex) { assertNotNull("Possible matches not determined", ex.getPossibleMatches()); assertEquals("Invalid amount of alternatives", 3, ex.getPossibleMatches().length); } }