public void testPrimeFacesWidgetBuilder() throws Exception { PrimeFacesWidgetBuilder widgetBuilder = new PrimeFacesWidgetBuilder(); // Read-only pass throughs Map<String, String> attributes = CollectionUtils.newHashMap(); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.put(READ_ONLY, TRUE); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.put(LOOKUP, TRUE); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(LOOKUP); attributes.put(FACES_LOOKUP, "#{true}"); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(FACES_LOOKUP); attributes.put(HIDDEN, TRUE); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(HIDDEN); attributes.put(TYPE, "foo"); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); // Active pass throughs attributes.remove(READ_ONLY); attributes.put(HIDDEN, TRUE); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(HIDDEN); attributes.put(TYPE, "foo"); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(HIDDEN); // Action attributes.put(NAME, "Press Me"); HtmlMetawidget metawidget = new HtmlMetawidget(); CommandButton button = (CommandButton) widgetBuilder.buildWidget(ACTION, attributes, metawidget); assertEquals("Press Me", button.getValue()); assertTrue(!button.isAjax()); attributes.remove(ACTION); // Faces lookup attributes.put(FACES_LOOKUP, "#{foo.bar}"); assertTrue(widgetBuilder.buildWidget(PROPERTY, attributes, null) instanceof SelectOneMenu); attributes.remove(FACES_LOOKUP); // Lookup attributes.put(TYPE, String.class.getName()); attributes.put(LOOKUP, "Foo, Bar, Baz"); metawidget.setInspector(new PropertyTypeInspector()); assertTrue( widgetBuilder.buildWidget(PROPERTY, attributes, metawidget) instanceof SelectOneMenu); attributes.remove(LOOKUP); // Sliders attributes.put(TYPE, int.class.getName()); attributes.put(MINIMUM_VALUE, "1"); attributes.put(MAXIMUM_VALUE, "1024"); UIStub stub = (UIStub) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertTrue(stub.getChildren().get(0) instanceof HtmlInputText); Slider slider = (Slider) stub.getChildren().get(1); assertEquals(1, slider.getMinValue()); assertEquals(1024, slider.getMaxValue()); attributes.put(TYPE, Long.class.getName()); attributes.put(MINIMUM_VALUE, "2"); attributes.put(MAXIMUM_VALUE, "1023"); stub = (UIStub) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertTrue(stub.getChildren().get(0) instanceof HtmlInputText); slider = (Slider) stub.getChildren().get(1); assertEquals(2, slider.getMinValue()); assertEquals(1023, slider.getMaxValue()); // Spinners attributes.put(TYPE, int.class.getName()); attributes.put(MAXIMUM_VALUE, ""); Spinner spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(2d, spinner.getMin()); attributes.put(MAXIMUM_VALUE, "1024"); attributes.put(MINIMUM_VALUE, ""); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(1024d, spinner.getMax()); // (lower bound) attributes.put(TYPE, byte.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Byte.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, short.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Short.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, int.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Integer.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, long.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Long.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, float.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) -Float.MAX_VALUE, spinner.getMin()); attributes.put(TYPE, double.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(-Double.MAX_VALUE, spinner.getMin()); // (upper bound) attributes.put(MAXIMUM_VALUE, ""); attributes.put(TYPE, byte.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Byte.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, short.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Short.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, int.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Integer.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, long.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Long.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, float.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Float.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, double.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(Double.MAX_VALUE, spinner.getMax()); // Calendars attributes.put(TYPE, Date.class.getName()); attributes.put(DATETIME_PATTERN, "dd-MM-yyyy"); attributes.put(LOCALE, "en-AU"); attributes.put(TIME_ZONE, "Australia/Sydney"); Calendar calendar = (Calendar) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals("dd-MM-yyyy", calendar.getPattern()); assertEquals(new Locale("en-AU"), calendar.getLocale()); assertEquals(TimeZone.getTimeZone("Australia/Sydney"), calendar.getTimeZone()); // Suggest attributes.put(TYPE, String.class.getName()); attributes.put(FACES_SUGGEST, "#{foo.bar}"); AutoComplete autocomplete = (AutoComplete) widgetBuilder.buildWidget(PROPERTY, attributes, metawidget); assertEquals("#{foo.bar}", autocomplete.getCompleteMethod().getExpressionString()); assertEquals( Object.class, autocomplete.getCompleteMethod().getMethodInfo(null).getReturnType()); assertEquals( String.class, autocomplete.getCompleteMethod().getMethodInfo(null).getParamTypes()[0]); assertEquals(1, autocomplete.getCompleteMethod().getMethodInfo(null).getParamTypes().length); attributes.remove(FACES_SUGGEST); // ColorPickers. Note org.primefaces.component.ColorPickerRenderer does *not* support // java.awt.Color (http://forum.primefaces.org/viewtopic.php?t=21593) so it isn't much good // to us here attributes.put(TYPE, Color.class.getName()); assertEquals(null, widgetBuilder.buildWidget(PROPERTY, attributes, null)); }
public void testPrimeFacesWidgetBuilder() throws Exception { PrimeFacesWidgetBuilder widgetBuilder = new PrimeFacesWidgetBuilder(); // Read-only pass throughs Map<String, String> attributes = CollectionUtils.newHashMap(); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.put(READ_ONLY, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.put(LOOKUP, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(LOOKUP); attributes.put(FACES_LOOKUP, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(FACES_LOOKUP); attributes.put(HIDDEN, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(HIDDEN); attributes.put(TYPE, "foo"); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); // Active pass throughs attributes.remove(READ_ONLY); attributes.put(LOOKUP, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(LOOKUP); attributes.put(FACES_LOOKUP, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(FACES_LOOKUP); attributes.put(HIDDEN, TRUE); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); attributes.remove(HIDDEN); attributes.put(TYPE, "foo"); assertTrue(null == widgetBuilder.buildWidget(PROPERTY, attributes, null)); // Sliders attributes.put(TYPE, int.class.getName()); attributes.put(MINIMUM_VALUE, "1"); attributes.put(MAXIMUM_VALUE, "1024"); UIStub stub = (UIStub) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertTrue(stub.getChildren().get(0) instanceof HtmlInputText); Slider slider = (Slider) stub.getChildren().get(1); assertEquals(1, slider.getMinValue()); assertEquals(1024, slider.getMaxValue()); attributes.put(TYPE, Long.class.getName()); attributes.put(MINIMUM_VALUE, "2"); attributes.put(MAXIMUM_VALUE, "1023"); stub = (UIStub) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertTrue(stub.getChildren().get(0) instanceof HtmlInputText); slider = (Slider) stub.getChildren().get(1); assertEquals(2, slider.getMinValue()); assertEquals(1023, slider.getMaxValue()); // Spinners attributes.put(TYPE, int.class.getName()); attributes.put(MAXIMUM_VALUE, ""); Spinner spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(2d, spinner.getMin()); attributes.put(MAXIMUM_VALUE, "1024"); attributes.put(MINIMUM_VALUE, ""); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(1024d, spinner.getMax()); // (lower bound) attributes.put(TYPE, byte.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Byte.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, short.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Short.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, int.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Integer.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, long.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Long.MIN_VALUE, spinner.getMin()); attributes.put(TYPE, float.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) -Float.MAX_VALUE, spinner.getMin()); attributes.put(TYPE, double.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(-Double.MAX_VALUE, spinner.getMin()); // (upper bound) attributes.put(MAXIMUM_VALUE, ""); attributes.put(TYPE, byte.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Byte.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, short.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Short.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, int.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Integer.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, long.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Long.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, float.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals((double) Float.MAX_VALUE, spinner.getMax()); attributes.put(TYPE, double.class.getName()); spinner = (Spinner) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals(Double.MAX_VALUE, spinner.getMax()); // Calendars attributes.put(TYPE, Date.class.getName()); attributes.put(DATETIME_PATTERN, "dd-MM-yyyy"); attributes.put(LOCALE, "en-AU"); attributes.put(TIME_ZONE, "Australia/Sydney"); Calendar calendar = (Calendar) widgetBuilder.buildWidget(PROPERTY, attributes, null); assertEquals("dd-MM-yyyy", calendar.getPattern()); assertEquals(new Locale("en-AU"), calendar.getLocale()); assertEquals(TimeZone.getTimeZone("Australia/Sydney"), calendar.getTimeZone()); // ColorPickers attributes.put(TYPE, Color.class.getName()); assertTrue(widgetBuilder.buildWidget(PROPERTY, attributes, null) instanceof ColorPicker); attributes.put(READ_ONLY, TRUE); HtmlMetawidget metawidget = new HtmlMetawidget(); assertTrue( widgetBuilder.buildWidget(PROPERTY, attributes, metawidget) instanceof HtmlOutputText); }