/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.extension.definition;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.junit.Test;
import org.teiid.core.designer.util.CoreStringUtil;
import org.teiid.designer.extension.Constants;
import org.teiid.designer.extension.properties.ModelExtensionPropertyDefinition.Type;
import org.teiid.designer.extension.properties.Translation;
/**
*
*/
public class ModelExtensionDefinitionValidatorTest implements Constants {
private static final String ALL_SPACES = " "; //$NON-NLS-1$
private static final String INTERIOR_SPACES = "a z"; //$NON-NLS-1$
private static final String SPECIAL_CHARS = "!@#$%^&*()_+=-~`|\\}]{[:;\"'?/>.<,"; //$NON-NLS-1$
@Test
public void emptyDescriptionShouldBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateDescription(CoreStringUtil.Constants.EMPTY_STRING).isOk());
}
@Test
public void interiorSpacesAsDescriptionShouldBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateDescription(INTERIOR_SPACES).isOk());
}
@Test
public void specialCharactersAsDescriptionShouldBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateDescription(INTERIOR_SPACES).isOk());
}
@Test
public void nullDescriptionShouldBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateDescription(null).isOk());
}
@Test
public void specialCharactersAsMetaclassNameShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetaclassName(SPECIAL_CHARS).isError());
}
@Test
public void interiorSpacesAsMetaclassNameShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetaclassName(INTERIOR_SPACES).isError());
}
@Test
public void allSpacesAsMetaclassNameShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetaclassName(ALL_SPACES).isError());
}
@Test
public void emptyMetaclassNameShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetaclassName(CoreStringUtil.Constants.EMPTY_STRING).isError());
}
@Test
public void nullMetaclassNameShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetaclassName(null).isError());
}
@Test
public void interiorSpacesAsMetamodelUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetamodelUri(INTERIOR_SPACES, null).isError());
}
@Test
public void specialCharactersAsMetamodelUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetamodelUri(SPECIAL_CHARS, null).isError());
}
@Test
public void allSpacesAsMetamodelUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetamodelUri(ALL_SPACES, null).isError());
}
@Test
public void emptyMetamodelUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetamodelUri(CoreStringUtil.Constants.EMPTY_STRING, null).isError());
}
@Test
public void nullMetamodelUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateMetamodelUri(null, null).isError());
}
@Test
public void interiorSpacesAsNamespacePrefixShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespacePrefix(INTERIOR_SPACES, null).isError());
}
@Test
public void specialCharactersAsNamespacePrefixShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespacePrefix(SPECIAL_CHARS, null).isError());
}
@Test
public void emptyNamespacePrefixShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespacePrefix(CoreStringUtil.Constants.EMPTY_STRING, null).isError());
}
@Test
public void nullNamespacePrefixShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespacePrefix(null, null).isError());
}
@Test
public void interiorSpacesAsNamespaceUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespaceUri(INTERIOR_SPACES, null).isError());
}
@Test
public void specialCharactersAsNamespaceUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespaceUri(SPECIAL_CHARS, null).isError());
}
@Test
public void allSpacesAsNamespaceUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespaceUri(ALL_SPACES, null).isError());
}
@Test
public void emptyNamespaceUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespaceUri(CoreStringUtil.Constants.EMPTY_STRING, null).isError());
}
@Test
public void nullNamespaceUriShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateNamespaceUri(null, null).isError());
}
@Test
public void allSpacesAsVersionShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion(ALL_SPACES).isError());
}
@Test
public void emptyVersionShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion(CoreStringUtil.Constants.EMPTY_STRING).isError());
}
@Test
public void nullVersionShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion(null).isError());
}
@Test
public void allSpacesAsVersionValueShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion(ALL_SPACES).isError());
}
@Test
public void nonIntegerAsVersionValueShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion("abc").isError()); //$NON-NLS-1$
}
@Test
public void negativeIntegerAsVersionValueShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion("-5").isError()); //$NON-NLS-1$
}
@Test
public void positiveIntegerAsVersionValueShouldBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion("5").isOk()); //$NON-NLS-1$
}
@Test
public void zeroAsVersionValueShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateVersion("0").isError()); //$NON-NLS-1$
}
@Test
public void allSpacesAsTranslationTextShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateTranslationText(ALL_SPACES).isError());
}
@Test
public void emptyTranslationTextShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateTranslationText(CoreStringUtil.Constants.EMPTY_STRING).isError());
}
@Test
public void nullTranslationTextShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateTranslationText(null).isError());
}
@Test
public void nullTranslationTLocaleShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateTranslationLocale(null).isError());
}
@Test
public void emptyPropertyFixedValueShouldBeValidWhenNoRuntimeType() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyFixedValue(null, CoreStringUtil.Constants.EMPTY_STRING, null)
.isOk());
}
@Test
public void emptyPropertyFixedValueShouldNotBeValidIfThereIsARuntimeType() {
assertFalse(ModelExtensionDefinitionValidator.validatePropertyFixedValue(Type.STRING.toString(),
CoreStringUtil.Constants.EMPTY_STRING, null)
.isOk());
}
@Test
public void nullPropertyFixedValueShouldBeValidWhenNoRuntimeType() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyFixedValue(null, null, null).isOk());
}
@Test
public void nullPropertyFixedValueShouldNotBeValidIfThereIsARuntimeType() {
assertFalse(ModelExtensionDefinitionValidator.validatePropertyFixedValue(Type.STRING.toString(), null, null).isOk());
}
@Test
public void emptyPropertyDefaultValueShouldBeValidWhenThereIsNoRuntimeType() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyDefaultValue(null, CoreStringUtil.Constants.EMPTY_STRING, null)
.isOk());
}
@Test
public void emptyPropertyDefaultValueShouldNotBeValidWhenThereIsARuntimeType() {
assertFalse(ModelExtensionDefinitionValidator.validatePropertyDefaultValue(Type.STRING.toString(),
CoreStringUtil.Constants.EMPTY_STRING, null)
.isOk());
}
@Test
public void nullPropertyDefaultValueShouldBeValidThereIsNoRuntimeType() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyDefaultValue(null, null, null).isOk());
}
@Test
public void emptyPropertySimpleIdShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertySimpleId(CoreStringUtil.Constants.EMPTY_STRING).isError());
}
@Test
public void nullPropertySimpleIdShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertySimpleId(null).isError());
}
@Test
public void allSpacesAsPropertySimpleIdShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertySimpleId(ALL_SPACES).isError());
}
@Test
public void interiorSpacesAsPropertySimpleIdShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertySimpleId(INTERIOR_SPACES).isError());
}
@Test
public void specialCharactersAsPropertySimpleIdShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertySimpleId(SPECIAL_CHARS).isError());
}
@Test
public void allSpacesAsRuntimeTypeShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyRuntimeType(ALL_SPACES).isError());
}
@Test
public void emptyRuntimeTypeShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyRuntimeType(CoreStringUtil.Constants.EMPTY_STRING).isError());
}
@Test
public void nullRuntimeTypeShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyRuntimeType(null).isError());
}
@Test
public void allEnumeratedRuntimeTypesShouldBeValid() {
for (Type type : Type.values()) {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyRuntimeType(type.toString()).isOk());
}
}
@Test
public void propertyAdvancededAttributeShouldAlwaysBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyAdvancedAttribute(true).isOk());
assertTrue(ModelExtensionDefinitionValidator.validatePropertyAdvancedAttribute(false).isOk());
}
@Test
public void propertyIndexedAttributeShouldAlwaysBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyIndexedAttribute(true).isOk());
assertTrue(ModelExtensionDefinitionValidator.validatePropertyIndexedAttribute(false).isOk());
}
@Test
public void propertyMaskedAttributeShouldAlwaysBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyMaskedAttribute(true).isOk());
assertTrue(ModelExtensionDefinitionValidator.validatePropertyMaskedAttribute(false).isOk());
}
@Test
public void propertyRequiredAttributeShouldAlwaysBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validatePropertyRequiredAttribute(true).isOk());
assertTrue(ModelExtensionDefinitionValidator.validatePropertyRequiredAttribute(false).isOk());
}
@Test
public void translationsWithDuplicatesShouldNotBeValid() {
Collection<Translation> translations = Constants.Utils.getTranslationsWithDuplicates();
assertTrue(ModelExtensionDefinitionValidator.validateTranslations(CoreStringUtil.Constants.EMPTY_STRING, translations,
false).isError());
}
@Test
public void allowedValuesWithDuplicatesShouldNotBeValid() {
Collection<String> allowedValues = Constants.Utils.getStringAllowedValuesWithDuplicates();
assertTrue(ModelExtensionDefinitionValidator.validatePropertyAllowedValues(Type.STRING.toString(),
allowedValues.toArray(new String[allowedValues.size()]))
.isError());
}
@Test
public void allowedValuesWithWrongTypeShouldNotBeValid() {
Collection<String> allowedValues = Constants.Utils.getStringAllowedValues();
assertTrue(ModelExtensionDefinitionValidator.validatePropertyAllowedValues(Type.INTEGER.toString(),
allowedValues.toArray(new String[allowedValues.size()]))
.isError());
}
@Test
public void nullModelTypeShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateModelType(null, null).isError());
}
@Test
public void emptyModelTypeShouldNotBeValid() {
assertTrue(ModelExtensionDefinitionValidator.validateModelType(CoreStringUtil.Constants.EMPTY_STRING, null).isError());
}
@Test
public void modelTypeShouldNotBeValidWhenNoValidValues() {
assertTrue(ModelExtensionDefinitionValidator.validateModelType(MODEL_TYPES[0], null).isError());
}
@Test
public void modelTypeShouldBeValidIfValidValue() {
assertTrue(ModelExtensionDefinitionValidator.validateModelType(MODEL_TYPES[0], Constants.Utils.getDefaultModelTypes())
.isOk());
}
@Test
public void modelTypeShouldNotBeValidIfNotValidValue() {
assertTrue(ModelExtensionDefinitionValidator.validateModelType(MODEL_TYPES[0] + "badValue", Constants.Utils.getDefaultModelTypes()) //$NON-NLS-1$
.isError());
}
@Test
public void modelTypesShouldNotBeValidIfDuplicateValuesExist() {
String[] duplicateTypes = new String[] { MODEL_TYPES[0], MODEL_TYPES[1], MODEL_TYPES[0] };
assertTrue(ModelExtensionDefinitionValidator.validateModelTypes(Arrays.asList(duplicateTypes),
Constants.Utils.getDefaultModelTypes()).isError());
}
@Test
public void nullModelTypesShouldBeInValid() {
assertTrue(ModelExtensionDefinitionValidator.validateModelTypes(null, Constants.Utils.getDefaultModelTypes()).isError());
}
@Test
public void emptyModelTypesShouldBeInValid() {
assertTrue(ModelExtensionDefinitionValidator.validateModelTypes(Collections.<String>emptyList(),
Constants.Utils.getDefaultModelTypes()).isError());
}
}