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;
14 import java.util.Optional;
15 import org.eclipse.jdt.annotation.NonNull;
16 import org.junit.jupiter.api.Test;
17 import org.opendaylight.yangtools.yang.common.XMLNamespace;
18 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
20 class PreferredPrefixesTest {
21 private static final @NonNull XMLNamespace FOONS = XMLNamespace.of("foons");
22 private static final @NonNull XMLNamespace BARNS = XMLNamespace.of("barns");
25 void ignorePrefixWhenConflicting() {
26 final var context = YangParserTestUtils.parseYang("""
36 final var prefixes = new PreferredPrefixes.Shared(context);
37 assertNull(prefixes.prefixForNamespace(FOONS));
38 assertNull(prefixes.prefixForNamespace(BARNS));
39 assertEquals(Map.of(FOONS, Optional.empty(), BARNS, Optional.empty()), prefixes.mappings());
40 assertEquals("Precomputed{mappings={}}", prefixes.toPrecomputed().toString());
44 void bindPrefixAcrossRevisions() {
45 final var context = YangParserTestUtils.parseYang("""
56 final var prefixes = new PreferredPrefixes.Shared(context);
57 assertEquals("f", prefixes.prefixForNamespace(FOONS));
58 assertEquals("Shared{mappings={foons=Optional[f]}}", prefixes.toString());
59 assertEquals("Precomputed{mappings={foons=f}}", prefixes.toPrecomputed().toString());
63 void ignorePrefixWhenStartsWithXml() {
64 final var context = YangParserTestUtils.parseYang("""
86 XMLNamespace.of("bazns"), "xlx",
87 XMLNamespace.of("quxns"), "xmx",
88 XMLNamespace.of("xyzzyns"), "xyz"), new PreferredPrefixes.Shared(context).toPrecomputed().mappings());