2 * Copyright (c) 2018 Pantheon Technologies, 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.model.util;
10 import static org.junit.Assert.assertArrayEquals;
11 import static org.mockito.Mockito.doReturn;
12 import static org.mockito.Mockito.mock;
14 import com.google.common.collect.ImmutableList;
15 import com.google.common.collect.ImmutableSet;
16 import java.util.Collection;
17 import java.util.List;
18 import java.util.Optional;
20 import org.junit.Test;
21 import org.opendaylight.yangtools.yang.common.QNameModule;
22 import org.opendaylight.yangtools.yang.common.Revision;
23 import org.opendaylight.yangtools.yang.common.XMLNamespace;
24 import org.opendaylight.yangtools.yang.model.api.Module;
25 import org.opendaylight.yangtools.yang.model.spi.SimpleSchemaContext;
27 public class SimpleSchemaContextTest {
29 public void testGetModulesOrdering() {
30 final Module foo0 = mockModule("foo", Optional.empty());
31 final Module foo1 = mockModule("foo", Revision.ofNullable("2018-01-01"));
32 final Module foo2 = mockModule("foo", Revision.ofNullable("2018-01-16"));
34 final List<Module> expected = ImmutableList.of(foo2, foo1, foo0);
35 assertGetModules(expected, foo0, foo1, foo2);
36 assertGetModules(expected, foo0, foo2, foo1);
37 assertGetModules(expected, foo1, foo0, foo2);
38 assertGetModules(expected, foo1, foo2, foo0);
39 assertGetModules(expected, foo2, foo0, foo1);
40 assertGetModules(expected, foo2, foo1, foo0);
42 assertFindModules(expected, "foo", foo0, foo1, foo2);
43 assertFindModules(expected, "foo", foo0, foo2, foo1);
44 assertFindModules(expected, "foo", foo1, foo0, foo2);
45 assertFindModules(expected, "foo", foo1, foo2, foo0);
46 assertFindModules(expected, "foo", foo2, foo0, foo1);
47 assertFindModules(expected, "foo", foo2, foo1, foo0);
49 final XMLNamespace uri = XMLNamespace.of("foo");
50 assertFindModules(expected, uri, foo0, foo1, foo2);
51 assertFindModules(expected, uri, foo0, foo2, foo1);
52 assertFindModules(expected, uri, foo1, foo0, foo2);
53 assertFindModules(expected, uri, foo1, foo2, foo0);
54 assertFindModules(expected, uri, foo2, foo0, foo1);
55 assertFindModules(expected, uri, foo2, foo1, foo0);
58 private static void assertGetModules(final List<Module> expected, final Module... modules) {
59 final Set<Module> actual = SimpleSchemaContext.forModules(ImmutableList.copyOf(modules)).getModules();
60 assertArrayEquals(expected.toArray(), actual.toArray());
63 private static void assertFindModules(final List<Module> expected, final String name, final Module... modules) {
64 final Collection<? extends Module> actual = SimpleSchemaContext.forModules(ImmutableList.copyOf(modules))
66 assertArrayEquals(expected.toArray(), actual.toArray());
69 private static void assertFindModules(final List<Module> expected, final XMLNamespace uri,
70 final Module... modules) {
71 final Collection<? extends Module> actual = SimpleSchemaContext.forModules(ImmutableSet.copyOf(modules))
73 assertArrayEquals(expected.toArray(), actual.toArray());
76 private static Module mockModule(final String name, final Optional<Revision> revision) {
77 final QNameModule mod = QNameModule.create(XMLNamespace.of(name), revision);
78 final Module ret = mock(Module.class);
79 doReturn(name).when(ret).getName();
80 doReturn(mod.getNamespace()).when(ret).getNamespace();
81 doReturn(mod.getRevision()).when(ret).getRevision();
82 doReturn(mod).when(ret).getQNameModule();
83 doReturn(mod.toString()).when(ret).toString();
84 doReturn(ImmutableSet.of()).when(ret).getImports();
85 doReturn(ImmutableSet.of()).when(ret).getSubmodules();
86 doReturn(ImmutableList.of()).when(ret).getUnknownSchemaNodes();