import static org.junit.Assert.assertTrue;
import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
+import com.google.common.collect.Range;
import java.util.List;
-import org.junit.Before;
+import java.util.Optional;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.stmt.LeafEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
+import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type.BitsSpecificationEffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type.Decimal64SpecificationEffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type.EnumSpecificationEffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type.IdentityRefSpecificationEffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type.LeafrefSpecificationEffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type.UnionSpecificationEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
-import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveSchemaContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.LeafEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.BitsSpecificationEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.Decimal64SpecificationEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.EnumSpecificationEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.IdentityRefSpecificationEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.LeafrefSpecificationEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.PatternConstraintEffectiveImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.UnionSpecificationEffectiveStatementImpl;
public class EffectiveStatementTypeTest {
-
- private static final StatementStreamSource IMPORTED_MODULE = sourceForResource("/type-tests/types.yang");
- private static EffectiveSchemaContext effectiveSchemaContext;
- private static LeafSchemaNode currentLeaf;
+ private static SchemaContext effectiveSchemaContext;
private static Module types;
- @Before
- public void setup() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSource(IMPORTED_MODULE);
- effectiveSchemaContext = reactor.buildEffective();
- types = effectiveSchemaContext.findModuleByName("types", null);
+ private LeafSchemaNode currentLeaf;
+
+ @BeforeClass
+ public static void setup() throws ReactorException {
+ effectiveSchemaContext = RFC7950Reactors.defaultReactor().newBuild()
+ .addSource(sourceForResource("/type-tests/types.yang"))
+ .buildEffective();
+ types = effectiveSchemaContext.findModules("types").iterator().next();
assertNotNull(types);
}
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-binary"));
assertNotNull(currentLeaf.getType());
- final BinaryTypeDefinition binaryEff = (BinaryTypeDefinition) ((TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
+ final BinaryTypeDefinition binaryEff = (BinaryTypeDefinition)
+ ((TypeEffectiveStatement<?>) ((LeafEffectiveStatement) currentLeaf)
.effectiveSubstatements().iterator().next()).getTypeDefinition();
assertNull(binaryEff.getBaseType());
- assertNull(binaryEff.getUnits());
- assertNull(binaryEff.getDefaultValue());
+ assertEquals(Optional.empty(), binaryEff.getUnits());
+ assertEquals(Optional.empty(), binaryEff.getDefaultValue());
assertEquals("binary", binaryEff.getQName().getLocalName());
- assertEquals(0, binaryEff.getLengthConstraints().size());
- assertEquals("CURRENT", binaryEff.getStatus().toString());
+ assertFalse(binaryEff.getLengthConstraint().isPresent());
+ assertEquals(Status.CURRENT, binaryEff.getStatus());
assertEquals("binary", binaryEff.getPath().getPathFromRoot().iterator().next().getLocalName());
assertNotNull(binaryEff.getUnknownSchemaNodes());
- assertNull(binaryEff.getDescription());
- assertNull(binaryEff.getReference());
+ assertFalse(binaryEff.getDescription().isPresent());
+ assertFalse(binaryEff.getReference().isPresent());
}
@Test
final Bit bitEff = bitsEffIter.get(0);
final Bit bitEffSecond = bitsEffIter.get(1);
- final BitsTypeDefinition bitsEff = ((BitsSpecificationEffectiveStatementImpl) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final BitsTypeDefinition bitsEff = ((BitsSpecificationEffectiveStatement)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertNull(bitsEff.getBaseType());
assertNotNull(bitsEff.getQName());
assertEquals("bits", bitsEff.getQName().getLocalName());
assertEquals("bits", bitsEff.getPath().getLastComponent().getLocalName());
assertNotNull(bitsEff.getUnknownSchemaNodes());
- assertNull(bitsEff.getDescription());
- assertNull(bitsEff.getReference());
- assertEquals("CURRENT", bitsEff.getStatus().toString());
- assertNull(bitsEff.getUnits());
+ assertFalse(bitsEff.getDescription().isPresent());
+ assertFalse(bitsEff.getReference().isPresent());
+ assertEquals(Status.CURRENT, bitsEff.getStatus());
+ assertEquals(Optional.empty(), bitsEff.getUnits());
assertNotNull(bitsEff.toString());
assertNotNull(bitsEff.hashCode());
assertFalse(bitsEff.equals(null));
assertFalse(bitsEff.equals("test"));
assertTrue(bitsEff.equals(bitsEff));
assertEquals(3, bitsEff.getBits().size());
- assertNull(bitsEff.getDefaultValue());
+ assertEquals(Optional.empty(), bitsEff.getDefaultValue());
assertNotNull(bitEff.getPath());
assertNotNull(bitEff.getUnknownSchemaNodes());
- assertEquals("test bit", bitEff.getDescription());
- assertEquals("test bit ref", bitEff.getReference());
- assertEquals("CURRENT", bitEff.getStatus().toString());
+ assertEquals(Optional.of("test bit"), bitEff.getDescription());
+ assertEquals(Optional.of("test bit ref"), bitEff.getReference());
+ assertEquals(Status.CURRENT, bitEff.getStatus());
assertNotNull(bitEff.hashCode());
assertFalse(bitEff.equals(null));
assertFalse(bitEff.equals("test"));
public void testBoolean() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-boolean"));
assertNotNull(currentLeaf.getType());
- final BooleanTypeDefinition booleanEff = (BooleanTypeDefinition) ((TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final BooleanTypeDefinition booleanEff = (BooleanTypeDefinition) ((TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertNull(booleanEff.getBaseType());
- assertNull(booleanEff.getUnits());
- assertNull(booleanEff.getDefaultValue());
+ assertEquals(Optional.empty(), booleanEff.getUnits());
+ assertEquals(Optional.empty(), booleanEff.getDefaultValue());
assertEquals("boolean", booleanEff.getQName().getLocalName());
assertNull(booleanEff.getPath().getParent().getParent());
assertNotNull(booleanEff.getUnknownSchemaNodes());
- assertNull(booleanEff.getDescription());
- assertNull(booleanEff.getReference());
- assertEquals("CURRENT", booleanEff.getStatus().toString());
+ assertFalse(booleanEff.getDescription().isPresent());
+ assertFalse(booleanEff.getReference().isPresent());
+ assertEquals(Status.CURRENT, booleanEff.getStatus());
assertNotNull(booleanEff.toString());
}
public void testDecimal64() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-decimal64"));
assertNotNull(currentLeaf.getType());
- final DecimalTypeDefinition decimal64Eff = ((Decimal64SpecificationEffectiveStatementImpl) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final DecimalTypeDefinition decimal64Eff = ((Decimal64SpecificationEffectiveStatement)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertNull(decimal64Eff.getBaseType());
- assertNull(decimal64Eff.getUnits());
- assertNull(decimal64Eff.getDefaultValue());
+ assertEquals(Optional.empty(), decimal64Eff.getUnits());
+ assertEquals(Optional.empty(), decimal64Eff.getDefaultValue());
assertEquals("decimal64", decimal64Eff.getQName().getLocalName());
assertNotNull(decimal64Eff.getUnknownSchemaNodes());
- // FIXME: The yang model api is wrong: description/reference/status are not allowed under 'type', how come we parse it?
+ // FIXME: The yang model api is wrong: description/reference/status are not allowed under 'type', how come we
+ // parse it?
// allowed under 'type', how come we parse it?
- assertNull(decimal64Eff.getDescription());
- assertNull(decimal64Eff.getReference());
- assertEquals("CURRENT", decimal64Eff.getStatus().toString());
+ assertFalse(decimal64Eff.getDescription().isPresent());
+ assertFalse(decimal64Eff.getReference().isPresent());
+ assertEquals(Status.CURRENT, decimal64Eff.getStatus());
- assertEquals(3, decimal64Eff.getRangeConstraints().size());
+ assertEquals(3, decimal64Eff.getRangeConstraint().get().getAllowedRanges().asRanges().size());
assertNotNull(decimal64Eff.toString());
assertNotNull(decimal64Eff.hashCode());
- assertTrue(decimal64Eff.getFractionDigits().equals(2));
+ assertEquals(2, decimal64Eff.getFractionDigits());
assertFalse(decimal64Eff.equals(null));
assertFalse(decimal64Eff.equals("test"));
assertTrue(decimal64Eff.equals(decimal64Eff));
public void testEmpty() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-empty"));
assertNotNull(currentLeaf.getType());
- final EmptyTypeDefinition emptyEff = (EmptyTypeDefinition) ((TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final EmptyTypeDefinition emptyEff = (EmptyTypeDefinition) ((TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
- assertNull(emptyEff.getUnits());
- assertNull(emptyEff.getDefaultValue());
+ assertEquals(Optional.empty(), emptyEff.getUnits());
+ assertEquals(Optional.empty(), emptyEff.getDefaultValue());
assertNull(emptyEff.getBaseType());
assertEquals("empty", emptyEff.getQName().getLocalName());
assertNull(emptyEff.getPath().getParent().getParent());
assertNotNull(emptyEff.getUnknownSchemaNodes());
- assertNull(emptyEff.getDescription());
- assertNull(emptyEff.getReference());
+ assertFalse(emptyEff.getDescription().isPresent());
+ assertFalse(emptyEff.getReference().isPresent());
assertEquals("CURRENT", emptyEff.getStatus().toString());
assertNotNull(emptyEff.toString());
}
final List<EnumTypeDefinition.EnumPair> enumEffIter = ((EnumTypeDefinition) currentLeaf.getType()).getValues();
final EnumPair enumEff = enumEffIter.iterator().next();
- final EnumTypeDefinition enumSpecEff = ((EnumSpecificationEffectiveStatementImpl) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final EnumTypeDefinition enumSpecEff = ((EnumSpecificationEffectiveStatement)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertEquals("enumeration", enumSpecEff.getQName().getLocalName());
assertEquals("enumeration", enumSpecEff.getPath().getLastComponent().getLocalName());
- assertNull(enumSpecEff.getDefaultValue());
+ assertEquals(Optional.empty(), enumSpecEff.getDefaultValue());
assertEquals(3, enumSpecEff.getValues().size());
assertNull(enumSpecEff.getBaseType());
assertNotNull(enumSpecEff.getUnknownSchemaNodes());
- assertEquals("CURRENT", enumSpecEff.getStatus().toString());
- assertNull(enumSpecEff.getDescription());
- assertNull(enumSpecEff.getReference());
- assertNull(enumSpecEff.getUnits());
+ assertEquals(Status.CURRENT, enumSpecEff.getStatus());
+ assertFalse(enumSpecEff.getDescription().isPresent());
+ assertFalse(enumSpecEff.getReference().isPresent());
+ assertEquals(Optional.empty(), enumSpecEff.getUnits());
assertNotNull(enumSpecEff.toString());
assertNotNull(enumSpecEff.hashCode());
assertFalse(enumSpecEff.equals(null));
assertEquals("zero", enumEff.getName());
assertNotNull(enumEff.getUnknownSchemaNodes());
- assertEquals("test enum", enumEff.getDescription());
- assertEquals("test enum ref", enumEff.getReference());
- assertEquals("CURRENT", enumEff.getStatus().toString());
+ assertEquals(Optional.of("test enum"), enumEff.getDescription());
+ assertEquals(Optional.of("test enum ref"), enumEff.getReference());
+ assertEquals(Status.CURRENT, enumEff.getStatus());
assertEquals(0, enumEff.getValue());
}
currentLeaf = (LeafSchemaNode) types
.getDataChildByName(QName.create(types.getQNameModule(), "leaf-identityref"));
assertNotNull(currentLeaf.getType());
- final IdentityrefTypeDefinition identityRefEff = ((IdentityRefSpecificationEffectiveStatementImpl) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final IdentityrefTypeDefinition identityRefEff = ((IdentityRefSpecificationEffectiveStatement)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
- assertNull(identityRefEff.getDefaultValue());
+ assertEquals(Optional.empty(), identityRefEff.getDefaultValue());
assertEquals("identityref", identityRefEff.getQName().getLocalName());
assertEquals("identityref", identityRefEff.getPath().getLastComponent().getLocalName());
assertNull(identityRefEff.getBaseType());
assertNotNull(identityRefEff.getUnknownSchemaNodes());
- assertEquals("CURRENT", identityRefEff.getStatus().toString());
- assertEquals("test-identity", identityRefEff.getIdentity().getQName().getLocalName());
- assertNull(identityRefEff.getDescription());
- assertNull(identityRefEff.getReference());
+ assertEquals(Status.CURRENT, identityRefEff.getStatus());
+ assertEquals("test-identity", identityRefEff.getIdentities().iterator().next().getQName().getLocalName());
+ assertFalse(identityRefEff.getDescription().isPresent());
+ assertFalse(identityRefEff.getReference().isPresent());
assertNotNull(identityRefEff.toString());
// FIXME: the model is wrong, but we accept units in 'type' statement
- assertNull(identityRefEff.getUnits());
+ assertEquals(Optional.empty(), identityRefEff.getUnits());
}
@Test
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(),
"leaf-instance-identifier"));
assertNotNull(currentLeaf.getType());
- final InstanceIdentifierTypeDefinition instanceIdentEff = (InstanceIdentifierTypeDefinition) ((TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final InstanceIdentifierTypeDefinition instanceIdentEff = (InstanceIdentifierTypeDefinition)
+ ((TypeEffectiveStatement<?>) ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements()
+ .iterator().next()).getTypeDefinition();
assertNotNull(instanceIdentEff.toString());
assertFalse(instanceIdentEff.requireInstance());
assertEquals("instance-identifier", instanceIdentEff.getQName().getLocalName());
assertEquals("instance-identifier", instanceIdentEff.getPath().getLastComponent().getLocalName());
assertNull(instanceIdentEff.getBaseType());
- assertNull(instanceIdentEff.getDefaultValue());
+ assertEquals(Optional.empty(), instanceIdentEff.getDefaultValue());
assertNotNull(instanceIdentEff.getUnknownSchemaNodes());
- assertNull(instanceIdentEff.getDescription());
- assertNull(instanceIdentEff.getReference());
- assertNull(instanceIdentEff.getUnits());
- assertEquals("CURRENT", instanceIdentEff.getStatus().toString());
+ assertFalse(instanceIdentEff.getDescription().isPresent());
+ assertFalse(instanceIdentEff.getReference().isPresent());
+ assertEquals(Optional.empty(), instanceIdentEff.getUnits());
+ assertEquals(Status.CURRENT, instanceIdentEff.getStatus());
assertNotNull(instanceIdentEff.hashCode());
assertFalse(instanceIdentEff.equals(null));
assertFalse(instanceIdentEff.equals("test"));
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-leafref"));
assertNotNull(currentLeaf.getType());
- final LeafrefTypeDefinition leafrefEff = ((LeafrefSpecificationEffectiveStatementImpl) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final LeafrefTypeDefinition leafrefEff = ((LeafrefSpecificationEffectiveStatement)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertEquals("/container-test/leaf-test", leafrefEff.getPathStatement().toString());
assertNull(leafrefEff.getBaseType());
- assertNull(leafrefEff.getUnits());
- assertNull(leafrefEff.getDefaultValue());
+ assertEquals(Optional.empty(), leafrefEff.getUnits());
+ assertEquals(Optional.empty(), leafrefEff.getDefaultValue());
assertNotNull(leafrefEff.toString());
assertEquals("leafref", leafrefEff.getQName().getLocalName());
- assertEquals("CURRENT", leafrefEff.getStatus().toString());
+ assertEquals(Status.CURRENT, leafrefEff.getStatus());
assertNotNull(leafrefEff.getUnknownSchemaNodes());
assertEquals("leafref", leafrefEff.getPath().getLastComponent().getLocalName());
- assertNull(leafrefEff.getDescription());
- assertNull(leafrefEff.getReference());
+ assertFalse(leafrefEff.getDescription().isPresent());
+ assertFalse(leafrefEff.getReference().isPresent());
assertNotNull(leafrefEff.hashCode());
assertFalse(leafrefEff.equals(null));
assertFalse(leafrefEff.equals("test"));
public void testIntAll() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-int8"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> int8Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> int8Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(int8Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-int16"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> int16Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> int16Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(int16Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-int32"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> int32Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> int32Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(int32Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-int64"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> int64Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> int64Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(int64Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-uint8"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> uint8Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> uint8Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(uint8Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-uint16"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> uint16Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> uint16Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(uint16Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-uint32"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> uint32Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> uint32Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(uint32Eff.toString());
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-uint64"));
assertNotNull(currentLeaf.getType());
- final TypeEffectiveStatement<?> uint64Eff = (TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next();
+ final TypeEffectiveStatement<?> uint64Eff = (TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next();
assertNotNull(uint64Eff.toString());
}
public void testUnion() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-union"));
assertNotNull(currentLeaf.getType());
- final UnionTypeDefinition unionEff = ((UnionSpecificationEffectiveStatementImpl) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final UnionTypeDefinition unionEff = ((UnionSpecificationEffectiveStatement)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertEquals(2, unionEff.getTypes().size());
assertEquals("union", unionEff.getQName().getLocalName());
assertEquals("CURRENT", unionEff.getStatus().toString());
assertNotNull(unionEff.getUnknownSchemaNodes());
assertNull(unionEff.getBaseType());
- assertNull(unionEff.getUnits());
- assertNull(unionEff.getDefaultValue());
- assertNull(unionEff.getDescription());
- assertNull(unionEff.getReference());
+ assertEquals(Optional.empty(), unionEff.getUnits());
+ assertEquals(Optional.empty(), unionEff.getDefaultValue());
+ assertFalse(unionEff.getDescription().isPresent());
+ assertFalse(unionEff.getReference().isPresent());
assertNotNull(unionEff.toString());
assertNotNull(unionEff.hashCode());
assertFalse(unionEff.equals(null));
public void testLengthConstraint() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(),
"leaf-length-pattern"));
- assertNotNull(currentLeaf.getType());
- final LengthConstraint lengthConstraint = ((StringTypeDefinition) (currentLeaf.getType()))
- .getLengthConstraints().get(0);
- final LengthConstraint lengthConstraintThird = ((StringTypeDefinition) (currentLeaf.getType()))
- .getLengthConstraints().get(0);
- currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(),
- "leaf-length-pattern-second"));
- assertNotNull(currentLeaf.getType());
- final LengthConstraint lengthConstraintSecond = ((StringTypeDefinition) (currentLeaf.getType()))
- .getLengthConstraints().get(0);
-
- assertEquals(1, lengthConstraint.getMin().intValue());
- assertEquals(255, lengthConstraint.getMax().intValue());
- assertNull(lengthConstraint.getReference());
- assertNull(lengthConstraint.getDescription());
- assertEquals("The argument is out of bounds <1, 255>", lengthConstraint.getErrorMessage());
- assertEquals("length-out-of-specified-bounds", lengthConstraint.getErrorAppTag());
+
+ final StringTypeDefinition leafType = (StringTypeDefinition) currentLeaf.getType();
+ assertNotNull(leafType);
+ final LengthConstraint lengthConstraint = leafType.getLengthConstraint().get();
+
+ final Range<Integer> span = lengthConstraint.getAllowedRanges().span();
+ assertEquals(1, span.lowerEndpoint().intValue());
+ assertEquals(255, span.upperEndpoint().intValue());
+ assertFalse(lengthConstraint.getReference().isPresent());
+ assertFalse(lengthConstraint.getDescription().isPresent());
+ assertFalse(lengthConstraint.getErrorMessage().isPresent());
+ assertFalse(lengthConstraint.getErrorAppTag().isPresent());
assertNotNull(lengthConstraint.toString());
assertNotNull(lengthConstraint.hashCode());
assertFalse(lengthConstraint.equals(null));
assertFalse(lengthConstraint.equals("test"));
+
+ currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(),
+ "leaf-length-pattern-second"));
+ assertNotNull(currentLeaf.getType());
+ final LengthConstraint lengthConstraintSecond = ((StringTypeDefinition) currentLeaf.getType())
+ .getLengthConstraint().get();
assertFalse(lengthConstraint.equals(lengthConstraintSecond));
- assertTrue(lengthConstraint.equals(lengthConstraintThird));
}
@Test
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(),
"leaf-length-pattern"));
assertNotNull(currentLeaf.getType());
- final PatternConstraintEffectiveImpl patternConstraint = (PatternConstraintEffectiveImpl) ((StringTypeDefinition) (currentLeaf
- .getType())).getPatternConstraints().get(0);
- final PatternConstraintEffectiveImpl patternConstraintThird = (PatternConstraintEffectiveImpl) ((StringTypeDefinition) (currentLeaf
- .getType())).getPatternConstraints().get(0);
+ final PatternConstraint patternConstraint = ((StringTypeDefinition) currentLeaf.getType())
+ .getPatternConstraints().get(0);
+ final PatternConstraint patternConstraintThird = ((StringTypeDefinition) currentLeaf.getType())
+ .getPatternConstraints().get(0);
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(),
"leaf-length-pattern-second"));
assertNotNull(currentLeaf.getType());
- final PatternConstraintEffectiveImpl patternConstraintSecond = (PatternConstraintEffectiveImpl) ((StringTypeDefinition) (currentLeaf
- .getType())).getPatternConstraints().get(0);
-
- assertEquals("^[0-9a-fA-F]*$", patternConstraint.getRegularExpression());
- assertNull(patternConstraint.getReference());
- assertNull(patternConstraint.getDescription());
- assertEquals("Supplied value does not match the regular expression ^[0-9a-fA-F]*$.", patternConstraint.getErrorMessage());
- assertEquals("invalid-regular-expression", patternConstraint.getErrorAppTag());
+ final PatternConstraint patternConstraintSecond = ((StringTypeDefinition) currentLeaf.getType())
+ .getPatternConstraints().get(0);
+
+ assertEquals("^[0-9a-fA-F]*$", patternConstraint.getJavaPatternString());
+ assertFalse(patternConstraint.getReference().isPresent());
+ assertFalse(patternConstraint.getDescription().isPresent());
+ assertEquals(Optional.of("Supplied value does not match the regular expression ^[0-9a-fA-F]*$."),
+ patternConstraint.getErrorMessage());
+ assertEquals(Optional.of("invalid-regular-expression"), patternConstraint.getErrorAppTag());
assertNotNull(patternConstraint.toString());
assertNotNull(patternConstraint.hashCode());
assertFalse(patternConstraint.equals(null));
public void testString() {
currentLeaf = (LeafSchemaNode) types.getDataChildByName(QName.create(types.getQNameModule(), "leaf-string"));
assertNotNull(currentLeaf.getType());
- final StringTypeDefinition stringEff = (StringTypeDefinition) ((TypeEffectiveStatement<?>) ((LeafEffectiveStatementImpl) currentLeaf)
- .effectiveSubstatements().iterator().next()).getTypeDefinition();
+ final StringTypeDefinition stringEff = (StringTypeDefinition) ((TypeEffectiveStatement<?>)
+ ((LeafEffectiveStatement) currentLeaf).effectiveSubstatements().iterator().next())
+ .getTypeDefinition();
assertEquals("string", stringEff.getQName().getLocalName());
- assertEquals("CURRENT", stringEff.getStatus().toString());
- assertNull(stringEff.getUnits());
- assertNull(stringEff.getDefaultValue());
+ assertEquals(Status.CURRENT, stringEff.getStatus());
+ assertEquals(Optional.empty(), stringEff.getUnits());
+ assertEquals(Optional.empty(), stringEff.getDefaultValue());
assertNotNull(stringEff.getUnknownSchemaNodes());
assertNull(stringEff.getBaseType());
- assertNull(stringEff.getDescription());
- assertNull(stringEff.getReference());
+ assertFalse(stringEff.getDescription().isPresent());
+ assertFalse(stringEff.getReference().isPresent());
assertNotNull(stringEff.toString());
assertNotNull(stringEff.hashCode());
assertFalse(stringEff.equals(null));
assertFalse(stringEff.equals("test"));
assertTrue(stringEff.equals(stringEff));
assertEquals("string", stringEff.getPath().getLastComponent().getLocalName());
- assertEquals(0, stringEff.getLengthConstraints().size());
+ assertFalse(stringEff.getLengthConstraint().isPresent());
assertNotNull(stringEff.getPatternConstraints());
}
}