Rename binding-runtime-dynamic to binding-loader
[yangtools.git] / parser / yang-parser-rfc7950 / src / test / java / org / opendaylight / yangtools / yang / stmt / Bug5396Test.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.stmt;
9
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
12 import static org.junit.jupiter.api.Assertions.assertNotEquals;
13
14 import org.junit.jupiter.api.Test;
15 import org.opendaylight.yangtools.yang.common.QName;
16 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
17 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
18 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
19
20 class Bug5396Test extends AbstractYangTest {
21     @Test
22     void test() {
23         final var context = assertEffectiveModelDir("/bugs/bug5396");
24
25         QName root = QName.create("foo", "root");
26         QName myLeaf2 = QName.create("foo", "my-leaf2");
27
28         var findDataSchemaNode = context.findDataTreeChild(root, myLeaf2).orElseThrow();
29
30         var leaf2 = assertInstanceOf(LeafSchemaNode.class, findDataSchemaNode);
31         var union = assertInstanceOf(UnionTypeDefinition.class, leaf2.getType());
32         var types = union.getTypes();
33
34         assertEquals(4, types.size());
35
36         var type0 = types.get(0);
37         var type1 = types.get(1);
38         var type2 = types.get(2);
39         var type3 = types.get(3);
40
41         assertNotEquals(type0, type1);
42         assertNotEquals(type0, type2);
43         assertNotEquals(type0, type3);
44
45         var stringType0 = assertInstanceOf(StringTypeDefinition.class, type0);
46         var stringType1 = assertInstanceOf(StringTypeDefinition.class, type1);
47         var stringType2 = assertInstanceOf(StringTypeDefinition.class, type2);
48         var stringType3 = assertInstanceOf(StringTypeDefinition.class, type3);
49
50         final var patternConstraints0 = stringType0.getPatternConstraints();
51         final var patternConstraints1 = stringType1.getPatternConstraints();
52         final var patternConstraints2 = stringType2.getPatternConstraints();
53         final var patternConstraints3 = stringType3.getPatternConstraints();
54
55         assertEquals(1, patternConstraints0.size());
56         assertEquals(1, patternConstraints1.size());
57         assertEquals(1, patternConstraints2.size());
58         assertEquals(1, patternConstraints3.size());
59
60         final var patternConstraint0 = patternConstraints0.get(0);
61         final var patternConstraint1 = patternConstraints1.get(0);
62         final var patternConstraint2 = patternConstraints2.get(0);
63         final var patternConstraint3 = patternConstraints3.get(0);
64
65         assertEquals("^(?:dp[0-9]+o[0-9]+(d[0-9]+)?)$", patternConstraint0.getJavaPatternString());
66         assertEquals("^(?:dp[0-9]+s[0-9]+(f[0-9]+)?(d[0-9]+)?)$", patternConstraint1.getJavaPatternString());
67         assertEquals("^(?:dp[0-9]+(P[0-9]+)?p[0-9]{1,3}s[0-9]{1,3}(f[0-9]+)?(d[0-9]+)?)$",
68             patternConstraint2.getJavaPatternString());
69         assertEquals("^(?:dp[0-9]+p[0-9]+p[0-9]+)$", patternConstraint3.getJavaPatternString());
70     }
71 }