Bug 3670 (part 1/5): Use of new statement parser in yang-maven-plugin
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / stmt / test / TypedefConstraintsTest.java
1 package org.opendaylight.yangtools.yang.stmt.test;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
6
7 import java.math.BigDecimal;
8
9 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils;
10 import org.opendaylight.yangtools.yang.model.util.Decimal64;
11 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
12 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
13 import java.util.List;
14 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
15 import org.opendaylight.yangtools.yang.model.util.ExtendedType;
16 import java.util.Set;
17 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
18 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
19 import java.io.FileNotFoundException;
20 import java.net.URISyntaxException;
21 import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
22 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
23 import org.junit.Test;
24
25 public class TypedefConstraintsTest {
26
27     @Test
28     public void decimalRangeConstraintsTest() throws SourceException,
29             FileNotFoundException, ReactorException, URISyntaxException {
30         SchemaContext context = StmtTestUtils
31                 .parseYangSources("/stmt-test/constraints");
32
33         assertNotNull(context);
34
35         Set<TypeDefinition<?>> typeDefinitions = context.getTypeDefinitions();
36         assertNotNull(typeDefinitions);
37         assertEquals(1, typeDefinitions.size());
38
39         TypeDefinition<?> myDecimal = typeDefinitions.iterator().next();
40
41         assertNotNull(myDecimal);
42         assertTrue(myDecimal instanceof ExtendedType);
43
44         List<RangeConstraint> rangeConstraints = ((ExtendedType) myDecimal)
45                 .getRangeConstraints();
46
47         assertNotNull(rangeConstraints);
48         assertEquals(1, rangeConstraints.size());
49
50         DataSchemaNode dataNode = context.getDataChildByName("id-decimal64");
51         assertNotNull(dataNode);
52         assertTrue(dataNode instanceof LeafSchemaNode);
53
54         LeafSchemaNode leafDecimal = (LeafSchemaNode) dataNode;
55         TypeDefinition<?> type = leafDecimal.getType();
56
57         assertTrue(type instanceof ExtendedType);
58         ExtendedType decType = (ExtendedType) type;
59
60         List<RangeConstraint> decRangeConstraints = decType.getRangeConstraints();
61
62         assertEquals(1, decRangeConstraints.size());
63
64         RangeConstraint range = decRangeConstraints.iterator().next();
65         assertEquals(new BigDecimal(1.5), range.getMin());
66         assertEquals(new BigDecimal(5.5), range.getMax());
67
68         assertTrue(decType.getQName().getModule().equals(leafDecimal.getQName().getModule()));
69         assertTrue(decType.getQName().getLocalName().equals(TypeUtils.DECIMAL64));
70         assertTrue(decType.getBaseType() instanceof Decimal64);
71     }
72
73 }