/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.services.extension.validators;
import java.util.SortedSet;
import org.eclipse.skalli.model.Issue;
import org.eclipse.skalli.model.Severity;
import org.eclipse.skalli.testutil.TestExtension;
import org.eclipse.skalli.testutil.TestUUIDs;
import org.junit.Assert;
import org.junit.Test;
@SuppressWarnings("nls")
public class StringLengthValidatorTest {
@Test
public void testIsValid() throws Exception {
StringLengthValidator validator = new StringLengthValidator(Severity.FATAL, TestExtension.class,
TestExtension.PROPERTY_STR, 3, 10);
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "123"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12345678901"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890123456789"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1"));
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, -1, 10);
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "123"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12345678901"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890123456789"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1"));
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, 3, -1);
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "123"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12345678901"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890123456789"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1"));
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, -1, -1);
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "123"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12345678901"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890123456789"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1"));
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, 3, 3);
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "123"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12345678901"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1234567890123456789"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "12"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "1"));
}
@Test(expected = IllegalArgumentException.class)
public void testIsValid_tooShort() throws Exception {
new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, -1, 0);
}
@Test(expected = IllegalArgumentException.class)
public void testIsValid_impossible() throws Exception {
new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, 10, 3);
}
@Test
public void testValidate() throws Exception {
StringLengthValidator validator = new StringLengthValidator(Severity.FATAL, TestExtension.class,
TestExtension.PROPERTY_STR, 3, 10);
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], "1234", Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
String value = "12";
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
Assert.assertEquals(validator.getDefaultInvalidMessage(value), issues.first().getMessage());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issues.first().getEntityId());
Assert.assertEquals(TestExtension.class, issues.first().getExtension());
Assert.assertEquals(TestExtension.PROPERTY_STR, issues.first().getPropertyId());
Assert.assertEquals(Severity.FATAL, issues.first().getSeverity());
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], null, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], "", Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
validator.setValueRequired(true);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], null, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], "", Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
}
@Test
public void testInvalidMessages() throws Exception {
String value = "12";
StringLengthValidator validator = new StringLengthValidator(Severity.FATAL, TestExtension.class,
TestExtension.PROPERTY_STR, 3, 10);
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
String defaultInvalidMessage = validator.getDefaultInvalidMessage(value);
Assert.assertEquals(defaultInvalidMessage, issues.first().getMessage());
Assert.assertTrue(defaultInvalidMessage.startsWith("Value"));
Assert.assertTrue(defaultInvalidMessage.indexOf(TestExtension.PROPERTY_STR) > 0);
Assert.assertTrue(defaultInvalidMessage.indexOf("at least") > 0);
Assert.assertTrue(defaultInvalidMessage.indexOf("at most") > 0);
value = "1234567890123";
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, 0, 10);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
defaultInvalidMessage = validator.getDefaultInvalidMessage(value);
Assert.assertEquals(defaultInvalidMessage, issues.first().getMessage());
Assert.assertTrue(defaultInvalidMessage.startsWith("Value"));
Assert.assertTrue(defaultInvalidMessage.indexOf(TestExtension.PROPERTY_STR) > 0);
Assert.assertFalse(defaultInvalidMessage.indexOf("at least") > 0);
Assert.assertTrue(defaultInvalidMessage.indexOf("at most") > 0);
value = "12";
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, 3, -1);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
defaultInvalidMessage = validator.getDefaultInvalidMessage(value);
Assert.assertEquals(defaultInvalidMessage, issues.first().getMessage());
Assert.assertTrue(defaultInvalidMessage.startsWith("Value"));
Assert.assertTrue(defaultInvalidMessage.indexOf(TestExtension.PROPERTY_STR) > 0);
Assert.assertTrue(defaultInvalidMessage.indexOf("at least") > 0);
Assert.assertFalse(defaultInvalidMessage.indexOf("at most") > 0);
value = "12";
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, 3, 3);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
defaultInvalidMessage = validator.getDefaultInvalidMessage(value);
Assert.assertEquals(defaultInvalidMessage, issues.first().getMessage());
Assert.assertTrue(defaultInvalidMessage.startsWith("Value"));
Assert.assertTrue(defaultInvalidMessage.indexOf(TestExtension.PROPERTY_STR) > 0);
Assert.assertTrue(defaultInvalidMessage.indexOf("exactly") > 0);
value = "12";
String caption = "String Caption";
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, caption,
3, 10);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
String invalidMessage = validator.getInvalidMessageFromCaption(value);
Assert.assertEquals(invalidMessage, issues.first().getMessage());
Assert.assertTrue(invalidMessage.startsWith(caption));
Assert.assertTrue(invalidMessage.indexOf("at least") > 0);
Assert.assertTrue(invalidMessage.indexOf("at most") > 0);
value = "12";
validator = new StringLengthValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR,
"Invalid String Length", "Undefined String", 3, 10);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
Assert.assertEquals("Invalid String Length", issues.first().getMessage());
}
}