2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang.stmt;
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;
14 import java.util.List;
15 import org.junit.jupiter.api.Test;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
18 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
19 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
20 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
21 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
22 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
24 class Bug5396Test extends AbstractYangTest {
27 final var context = assertEffectiveModelDir("/bugs/bug5396");
29 QName root = QName.create("foo", "root");
30 QName myLeaf2 = QName.create("foo", "my-leaf2");
32 SchemaNode findDataSchemaNode = context.findDataTreeChild(root, myLeaf2).get();
34 LeafSchemaNode leaf2 = assertInstanceOf(LeafSchemaNode.class, findDataSchemaNode);
35 TypeDefinition<?> type = leaf2.getType();
37 UnionTypeDefinition union = assertInstanceOf(UnionTypeDefinition.class, type);
38 List<TypeDefinition<?>> types = union.getTypes();
40 assertEquals(4, types.size());
42 TypeDefinition<?> type0 = types.get(0);
43 TypeDefinition<?> type1 = types.get(1);
44 TypeDefinition<?> type2 = types.get(2);
45 TypeDefinition<?> type3 = types.get(3);
47 assertNotEquals(type0, type1);
48 assertNotEquals(type0, type2);
49 assertNotEquals(type0, type3);
51 StringTypeDefinition stringType0 = assertInstanceOf(StringTypeDefinition.class, type0);
52 StringTypeDefinition stringType1 = assertInstanceOf(StringTypeDefinition.class, type1);
53 StringTypeDefinition stringType2 = assertInstanceOf(StringTypeDefinition.class, type2);
54 StringTypeDefinition stringType3 = assertInstanceOf(StringTypeDefinition.class, type3);
56 final List<PatternConstraint> patternConstraints0 = stringType0.getPatternConstraints();
57 final List<PatternConstraint> patternConstraints1 = stringType1.getPatternConstraints();
58 final List<PatternConstraint> patternConstraints2 = stringType2.getPatternConstraints();
59 final List<PatternConstraint> patternConstraints3 = stringType3.getPatternConstraints();
61 assertEquals(1, patternConstraints0.size());
62 assertEquals(1, patternConstraints1.size());
63 assertEquals(1, patternConstraints2.size());
64 assertEquals(1, patternConstraints3.size());
66 final PatternConstraint patternConstraint0 = patternConstraints0.get(0);
67 final PatternConstraint patternConstraint1 = patternConstraints1.get(0);
68 final PatternConstraint patternConstraint2 = patternConstraints2.get(0);
69 final PatternConstraint patternConstraint3 = patternConstraints3.get(0);
71 assertEquals("^(?:dp[0-9]+o[0-9]+(d[0-9]+)?)$", patternConstraint0.getJavaPatternString());
72 assertEquals("^(?:dp[0-9]+s[0-9]+(f[0-9]+)?(d[0-9]+)?)$", patternConstraint1.getJavaPatternString());
73 assertEquals("^(?:dp[0-9]+(P[0-9]+)?p[0-9]{1,3}s[0-9]{1,3}(f[0-9]+)?(d[0-9]+)?)$",
74 patternConstraint2.getJavaPatternString());
75 assertEquals("^(?:dp[0-9]+p[0-9]+p[0-9]+)$", patternConstraint3.getJavaPatternString());