@Test public void testConstructors() { // Constructor 1 WMultiTextField field = new WMultiTextField(); Assert.assertNull("Text should be null", field.getTextInputs()); // Constructor 2 field = new WMultiTextField(ENTERED_1_2); Assert.assertTrue("Wrong text values returned", Arrays.equals(ENTERED_1_2, field. getTextInputs())); }
@Test public void testRendererCorrectlyConfigured() { WMultiTextField wmtf = new WMultiTextField(); Assert.assertTrue("Incorrect renderer supplied", getWebXmlRenderer(wmtf) instanceof WMultiTextFieldRenderer); }
@Test(expected = PatternSyntaxException.class) public void testSetPatternInvalid() { WMultiTextField field = new WMultiTextField(); field.setPattern("[foo"); }
@Test public void testTextInputsAccessors() { assertAccessorsCorrect(new WMultiTextField(), "textInputs", null, ENTERED_1, ENTERED_1_2); }
@Test public void testplaceholderAccessors() { assertAccessorsCorrect(new WMultiTextField(), "placeholder", null, "test1", "test2"); }
@Test public void testMinLengthAccessors() { assertAccessorsCorrect(new WMultiTextField(), "minLength", 0, 1, 2); }
@Test public void testMaxInputsAccessors() { assertAccessorsCorrect(new WMultiTextField(), "maxInputs", 0, 1, 2); }
@Test public void testColumnsAccessors() { assertAccessorsCorrect(new WMultiTextField(), "columns", 0, 1, 2); }
@Test public void testMaxLengthAccessors() { assertAccessorsCorrect(new WMultiTextField(), "maxLength", 0, 1, 2); }
@Test public void testPatternAccessors() { assertAccessorsCorrect(new WMultiTextField(), "pattern", null, "test1", "test2"); }
@Test public void testWhatForGroup3() throws IOException, SAXException, XpathException { WMultiTextField comp = new WMultiTextField(); WLabel label = new WLabel("label", comp); assertSchemaMatch(label); assertXpathEvaluatesTo("group", "//ui:label/@what", label); }
@Test public void testReadOnly() throws IOException, SAXException, XpathException { WMultiTextField field = new WMultiTextField(); field.setReadOnly(true); assertSchemaMatch(field); assertXpathEvaluatesTo("true", "//ui:multitextfield/@readOnly", field); }
@Test public void testGetValue() { WMultiTextField field = new WMultiTextField(); field.setBeanProperty("."); field.setLocked(true);
@Test public void testGetValueAsString() { WMultiTextField field = new WMultiTextField(); field.setLocked(true); setActiveContext(createUIContext()); // Null Assert.assertNull("Value as String should be null", field.getValueAsString()); // Entered text1 field.setData(ENTERED_1); Assert.assertEquals("Value as String should be text1", TEXT1, field.getValueAsString()); // Entered text1 and text2 field.setData(ENTERED_1_2); Assert .assertEquals("Value as String should be text1 and text2", TEXT1 + ", " + TEXT2, field.getValueAsString()); }
@Test public void testSetData() { WMultiTextField field = new WMultiTextField(); field.setLocked(true); setActiveContext(createUIContext()); field.setData(ENTERED_1_2); Assert.assertTrue("Wrong value returned for data", Arrays.equals(ENTERED_1_2, (Object[]) field.getData())); // Empty array field.setData(ENTERED_EMPTY); Assert.assertNull("Null should be returned for empty array", field.getData()); // Empty options field.setData(new String[]{"", TEXT1, "", TEXT2, ""}); Assert.assertTrue("Empty options should have been removed", Arrays.equals(ENTERED_1_2, (Object[]) field.getData())); // Max options exceeded field.setMaxInputs(1); field.setData(ENTERED_1_2); Assert.assertTrue("Should only return the first option", Arrays.equals(ENTERED_1, (Object[]) field.getData())); }
@Test public void testValidatePattern() { WMultiTextField field = new WMultiTextField(); field.setLocked(true);
@Test public void testDoHandleRequest() { WMultiTextField field = new WMultiTextField(); field.setMaxInputs(4);
@Test public void testGetRequestValue() { WMultiTextField field = new WMultiTextField(); setActiveContext(createUIContext()); field.setTextInputs(ENTERED_1); // Empty Request - return current value MockRequest request = new MockRequest(); Assert.assertTrue("Request value should be the current value for an empty request", Arrays.equals(ENTERED_1, field.getRequestValue(request))); // Empty values on the request String[] value = new String[]{"", null}; request = new MockRequest(); request.setParameter(field.getId(), value); Assert.assertNull("Request value should be null for empty values on request", field. getRequestValue(request)); // Values on the request request = new MockRequest(); request.setParameter(field.getId(), ENTERED_1_2); Assert.assertTrue("Request value should be the values on the request", Arrays.equals(ENTERED_1_2, field.getRequestValue(request))); // An empty string or null in the array should be removed String[] inputs2 = new String[]{"", "x", "y", "", "", null, "z"}; request.setParameter(field.getId(), inputs2); Assert.assertTrue( "Request value should be the values on the request without the null and empty entries", Arrays.equals(new String[]{"x", "y", "z"}, field.getRequestValue(request))); }
@Test public void testDoPaint() throws IOException, SAXException, XpathException { WMultiTextField wmtf = new WMultiTextField(); assertSchemaMatch(wmtf); assertXpathEvaluatesTo("0", "count(//ui:multitextfield/ui:value)", wmtf); wmtf.setTextInputs(new String[]{"a", "b"}); assertXpathEvaluatesTo("2", "count(//ui:multitextfield/ui:value)", wmtf); assertXpathEvaluatesTo("a", "normalize-space(//ui:multitextfield/ui:value[position()=1])", wmtf); assertXpathEvaluatesTo("b", "normalize-space(//ui:multitextfield/ui:value[position()=2])", wmtf); }
@Test public void testXssEscaping() throws IOException, SAXException, XpathException { WMultiTextField field = new WMultiTextField(); field.setTextInputs(new String[]{getInvalidCharSequence(), getMaliciousContent()}); assertSafeContent(field); field.setToolTip(getMaliciousAttribute("ui:multitextfield")); assertSafeContent(field); field.setAccessibleText(getMaliciousAttribute("ui:multitextfield")); assertSafeContent(field); }