2 * Copyright (c) 2023 PANTHEON.tech, s.r.o. 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.data.codec.xml;
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertNull;
12 import static org.junit.jupiter.api.Assertions.assertTrue;
15 import java.util.Optional;
16 import org.eclipse.jdt.annotation.NonNull;
17 import org.junit.jupiter.api.Test;
18 import org.opendaylight.yangtools.yang.common.XMLNamespace;
19 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
21 class PreferredPrefixesTest {
22 private static final @NonNull XMLNamespace FOONS = XMLNamespace.of("foons");
23 private static final @NonNull XMLNamespace BARNS = XMLNamespace.of("barns");
26 void ignorePrefixWhenConflicting() {
27 final var context = YangParserTestUtils.parseYang("""
37 final var prefixes = new PreferredPrefixes.Shared(context);
38 assertNull(prefixes.prefixForNamespace(FOONS));
39 assertNull(prefixes.prefixForNamespace(BARNS));
40 assertEquals(Map.of(FOONS, Optional.empty(), BARNS, Optional.empty()), prefixes.mappings());
41 assertEquals("Precomputed{mappings={}}", prefixes.toPrecomputed().toString());
45 void bindPrefixAcrossRevisions() {
46 final var context = YangParserTestUtils.parseYang("""
57 final var prefixes = new PreferredPrefixes.Shared(context);
58 assertEquals("f", prefixes.prefixForNamespace(FOONS));
59 assertEquals("Shared{mappings={foons=Optional[f]}}", prefixes.toString());
61 final var precomputed = prefixes.toPrecomputed();
62 assertEquals("f", precomputed.prefixForNamespace(FOONS));
63 assertEquals("Precomputed{mappings={foons=f}}", precomputed.toString());
67 void ignorePrefixWhenStartsWithXml() {
68 final var context = YangParserTestUtils.parseYang("""
90 XMLNamespace.of("bazns"), "xlx",
91 XMLNamespace.of("quxns"), "xmx",
92 XMLNamespace.of("xyzzyns"), "xyz"), new PreferredPrefixes.Shared(context).toPrecomputed().mappings());
96 void ignorePrefixesStartingWithXML() {
97 final var prefixes = new PreferredPrefixes.Shared(YangParserTestUtils.parseYang("""
102 assertTrue(prefixes.isUsed("a"));
103 assertEquals("Shared{mappings={}}", prefixes.toString());
104 final var precomputed = prefixes.toPrecomputed();
105 assertTrue(precomputed.isUsed("a"));
106 assertEquals("Precomputed{mappings={foons=a}}", precomputed.toString());