2 * Copyright (c) 2015 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.model.util;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
12 import static org.mockito.ArgumentMatchers.any;
13 import static org.mockito.Mockito.doReturn;
14 import static org.mockito.Mockito.mock;
16 import com.google.common.collect.ImmutableSet;
18 import java.util.Arrays;
19 import java.util.Collection;
20 import java.util.Collections;
21 import java.util.HashSet;
22 import java.util.List;
23 import java.util.Optional;
25 import org.junit.Test;
26 import org.opendaylight.yangtools.concepts.SemVer;
27 import org.opendaylight.yangtools.yang.common.QName;
28 import org.opendaylight.yangtools.yang.common.QNameModule;
29 import org.opendaylight.yangtools.yang.common.Revision;
30 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
31 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
32 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
33 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
34 import org.opendaylight.yangtools.yang.model.api.Module;
35 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
36 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
37 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
38 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
39 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
40 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
41 import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement;
42 import org.opendaylight.yangtools.yang.model.util.FilteringSchemaContextProxy.ModuleId;
44 public class SchemaContextProxyTest {
46 private static final URI NAMESPACE = URI.create("urn:opendaylight:params:xml:ns:yang:controller:config");
47 private static final Revision REVISION = Revision.of("2015-01-01");
48 private static final Revision REVISION2 = Revision.of("2015-01-15");
50 private static final String CONFIG_NAME = "config";
51 private static final String ROOT_NAME = "root";
52 private static final String MODULE2_NAME = "module2";
53 private static final String MODULE3_NAME = "module3";
54 private static final String MODULE4_NAME = "module4";
55 private static final String MODULE41_NAME = "module41";
56 private static final String MODULE5_NAME = "module5";
58 private static SchemaContext mockSchema(final Module... modules) {
59 final List<Module> sortedModules = Arrays.asList(modules);
60 sortedModules.sort(AbstractSchemaContext.NAME_REVISION_COMPARATOR);
61 SchemaContext mock = mock(SchemaContext.class);
62 doReturn(ImmutableSet.copyOf(sortedModules)).when(mock).getModules();
73 public void testBasic() {
74 Module moduleConfig = mockModule(CONFIG_NAME);
75 Module module2 = mockModule(MODULE2_NAME);
76 Module module3 = mockModule(MODULE3_NAME);
78 mockModuleImport(module2, moduleConfig);
79 mockModuleImport(module3, module2, moduleConfig);
81 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
83 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
85 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
89 * No root or additional modules
95 public void testNull() {
96 Module moduleConfig = mockModule(CONFIG_NAME);
97 Module module2 = mockModule(MODULE2_NAME);
98 Module module3 = mockModule(MODULE3_NAME);
100 mockModuleImport(module2, moduleConfig);
101 mockModuleImport(module3, module2, moduleConfig);
103 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
105 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, null);
106 assertProxyContext(filteringSchemaContextProxy, null);
116 public void testConfigDifferentRevisions() {
117 Module moduleConfigNullRevision = mockModule(CONFIG_NAME, null);
118 Module moduleConfig = mockModule(CONFIG_NAME, REVISION);
119 Module moduleConfig2 = mockModule(CONFIG_NAME, REVISION2);
120 Module module2 = mockModule(MODULE2_NAME);
121 Module module3 = mockModule(MODULE3_NAME);
123 mockModuleImport(module2, moduleConfig);
124 mockModuleImport(module3, module2, moduleConfigNullRevision);
126 SchemaContext schemaContext = mockSchema(moduleConfig, moduleConfig2, module2, module3);
128 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
130 assertProxyContext(filteringSchemaContextProxy, moduleConfig, moduleConfig2, module2, module3);
140 public void testBasicNullRevision() throws Exception {
141 final Module moduleConfig = mockModule(CONFIG_NAME, Revision.of("2013-04-05"));
142 final Module module2 = mockModule(MODULE2_NAME, Revision.of("2014-06-17"));
143 final Module module20 = mockModule(MODULE2_NAME, null);
144 final Module module3 = mockModule(MODULE3_NAME, Revision.of("2014-06-12"));
145 final Module module30 = mockModule(MODULE3_NAME, null);
147 mockModuleImport(module20, moduleConfig);
148 mockModuleImport(module2, moduleConfig);
149 mockModuleImport(module3, module20, moduleConfig);
150 mockModuleImport(module30, module20, moduleConfig);
152 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
154 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
157 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
167 public void testBasicMoreRootModules() {
168 final Module moduleConfig = mockModule(CONFIG_NAME);
169 final Module moduleRoot = mockModule(ROOT_NAME);
170 final Module module2 = mockModule(MODULE2_NAME);
171 final Module module3 = mockModule(MODULE3_NAME);
173 mockModuleImport(module2, moduleConfig);
174 mockModuleImport(module3, moduleRoot);
176 SchemaContext schemaContext = mockSchema(moduleConfig, moduleRoot, module2, module3);
178 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null, moduleRoot,
180 assertProxyContext(filteringSchemaContextProxy, moduleRoot, module3, moduleConfig, module2);
190 public void testChainNotDepend() {
191 Module moduleConfig = mockModule(CONFIG_NAME);
192 Module module2 = mockModule(MODULE2_NAME);
193 Module module3 = mockModule(MODULE3_NAME);
195 mockModuleImport(module2, moduleConfig);
196 mockModuleImport(module3, module2);
198 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3);
200 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
202 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2);
209 * M2 -> M3 -> M4 -> M5
212 public void testChainDependMulti() {
213 Module moduleConfig = mockModule(CONFIG_NAME);
214 Module module2 = mockModule(MODULE2_NAME);
215 Module module3 = mockModule(MODULE3_NAME);
216 Module module4 = mockModule(MODULE4_NAME);
217 Module module5 = mockModule(MODULE5_NAME);
219 mockModuleImport(module2, moduleConfig, module3);
220 mockModuleImport(module3, module4);
221 mockModuleImport(module4, module5);
223 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4, module5);
225 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
227 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4, module5);
237 public void testChainNotDependMulti() {
238 Module moduleConfig = mockModule(CONFIG_NAME);
239 Module module2 = mockModule(MODULE2_NAME);
240 Module module3 = mockModule(MODULE3_NAME);
241 Module module4 = mockModule(MODULE4_NAME);
243 mockModuleImport(module2, moduleConfig, module3);
244 mockModuleImport(module4, module3);
246 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4);
248 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
250 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
260 public void testChainNotMulti() {
261 final Module moduleConfig = mockModule(CONFIG_NAME);
262 final Module module2 = mockModule(MODULE2_NAME);
263 final Module module3 = mockModule(MODULE3_NAME);
264 final Module module4 = mockModule(MODULE4_NAME);
265 final Module module5 = mockModule(MODULE5_NAME);
267 mockModuleImport(module2, moduleConfig);
268 mockModuleImport(module3, moduleConfig);
269 mockModuleImport(module4, moduleConfig);
270 mockModuleImport(module5, moduleConfig);
272 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4, module5);
274 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
276 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4, module5);
283 * M2 <- M3 M4=M3(Different revision)
286 public void testBasicRevisionChange() throws Exception {
287 Module moduleConfig = mockModule(CONFIG_NAME);
288 Module module2 = mockModule(MODULE2_NAME);
289 Module module3 = mockModule(MODULE3_NAME);
290 Module module4 = mockModule(MODULE3_NAME, Revision.of("2015-10-10"));
292 mockModuleImport(module2, moduleConfig);
293 mockModuleImport(module3, module2, moduleConfig);
295 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4);
297 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
299 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3);
305 * M2 -(no revision)-> M3(R2) ... M3(R1)
308 public void testImportNoRevision() {
309 Module moduleConfig = mockModule(CONFIG_NAME, REVISION);
310 Module module2 = mockModule(MODULE2_NAME, REVISION);
312 Module module3 = mockModule(MODULE3_NAME, null);
313 Module module30 = mockModule(MODULE3_NAME, REVISION);
314 Module module31 = mockModule(MODULE3_NAME, REVISION2);
315 mockModuleImport(module2, moduleConfig, module3);
317 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module30, module31);
319 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
322 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module31);
334 public void testBasicSubmodule() {
335 Module moduleConfig = mockModule(CONFIG_NAME);
336 Module module2 = mockModule(MODULE2_NAME);
337 Module module3 = mockModule(MODULE3_NAME);
338 Module module4 = mockModule(MODULE4_NAME);
339 Module module41 = mockModule(MODULE41_NAME);
341 mockSubmodules(module4, module41);
342 mockModuleImport(module2, moduleConfig, module3);
343 mockModuleImport(module41, moduleConfig);
345 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4);
347 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext, null,
349 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4);
353 * M2 -> M3 -> M4 -> M5
356 public void testChainAdditionalModules() {
357 Module module2 = mockModule(MODULE2_NAME);
358 Module module3 = mockModule(MODULE3_NAME);
359 Module module4 = mockModule(MODULE4_NAME);
360 Module module5 = mockModule(MODULE5_NAME);
362 mockModuleImport(module2, module3);
363 mockModuleImport(module3, module4);
364 mockModuleImport(module4, module5);
366 SchemaContext schemaContext = mockSchema(module2, module3, module4, module5);
368 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
369 Collections.singleton(module2), null);
370 assertProxyContext(filteringSchemaContextProxy, module2, module3, module4, module5);
383 public void testChainAdditionalModulesConfig() {
384 Module moduleConfig = mockModule(CONFIG_NAME);
385 Module module2 = mockModule(MODULE2_NAME);
387 Module module3 = mockModule(MODULE3_NAME);
388 Module module4 = mockModule(MODULE4_NAME);
389 Module module5 = mockModule(MODULE5_NAME);
391 mockModuleImport(module2, moduleConfig);
392 mockModuleImport(module3, module4);
394 SchemaContext schemaContext = mockSchema(moduleConfig, module2, module3, module4, module5);
396 FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
397 Collections.singleton(module3), moduleConfig);
398 assertProxyContext(filteringSchemaContextProxy, moduleConfig, module2, module3, module4);
402 public void testGetDataDefinitions() {
403 final Module moduleConfig = mockModule(CONFIG_NAME);
404 final SchemaContext schemaContext = mockSchema(moduleConfig);
405 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
406 new HashSet<>(), moduleConfig);
408 final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
409 final Set<DataSchemaNode> childNodes = Collections.singleton(mockedContainer);
410 doReturn(childNodes).when(moduleConfig).getChildNodes();
412 final Collection<? extends DataSchemaNode> dataDefinitions =
413 filteringSchemaContextProxy.getDataDefinitions();
414 assertTrue(dataDefinitions.contains(mockedContainer));
418 public void testGetNotifications() {
419 final Module moduleConfig = mockModule(CONFIG_NAME);
420 final SchemaContext schemaContext = mockSchema(moduleConfig);
421 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
422 new HashSet<>(), moduleConfig);
424 final NotificationDefinition mockedNotification = mock(NotificationDefinition.class);
425 final Set<NotificationDefinition> notifications = Collections.singleton(mockedNotification);
426 doReturn(notifications).when(moduleConfig).getNotifications();
428 final Collection<? extends NotificationDefinition> schemaContextProxyNotifications =
429 filteringSchemaContextProxy.getNotifications();
430 assertTrue(schemaContextProxyNotifications.contains(mockedNotification));
434 public void testGetOperations() {
435 final Module moduleConfig = mockModule(CONFIG_NAME);
436 final SchemaContext schemaContext = mockSchema(moduleConfig);
437 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
438 new HashSet<>(), moduleConfig);
440 final RpcDefinition mockedRpc = mock(RpcDefinition.class);
441 final Set<RpcDefinition> rpcs = Collections.singleton(mockedRpc);
442 doReturn(rpcs).when(moduleConfig).getRpcs();
444 final Collection<? extends RpcDefinition> operations = filteringSchemaContextProxy.getOperations();
445 assertTrue(operations.contains(mockedRpc));
449 public void testGetExtensions() {
450 final Module moduleConfig = mockModule(CONFIG_NAME);
451 final SchemaContext schemaContext = mockSchema(moduleConfig);
452 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
453 new HashSet<>(), moduleConfig);
455 final ExtensionDefinition mockedExtension = mock(ExtensionDefinition.class);
456 final List<ExtensionDefinition> extensions = Collections.singletonList(mockedExtension);
457 doReturn(extensions).when(moduleConfig).getExtensionSchemaNodes();
459 final Collection<? extends ExtensionDefinition> schemaContextProxyExtensions =
460 filteringSchemaContextProxy.getExtensions();
461 assertTrue(schemaContextProxyExtensions.contains(mockedExtension));
465 public void testGetUnknownSchemaNodes() {
466 final Module moduleConfig = mockModule(CONFIG_NAME);
467 final SchemaContext schemaContext = mockSchema(moduleConfig);
468 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
469 new HashSet<>(), moduleConfig);
471 final UnknownSchemaNode mockedUnknownSchemaNode = mock(UnknownSchemaNode.class);
472 final List<UnknownSchemaNode> unknownSchemaNodes = Collections.singletonList(mockedUnknownSchemaNode);
473 doReturn(unknownSchemaNodes).when(moduleConfig).getUnknownSchemaNodes();
475 final Collection<? extends UnknownSchemaNode> schemaContextProxyUnknownSchemaNodes =
476 filteringSchemaContextProxy.getUnknownSchemaNodes();
477 assertTrue(schemaContextProxyUnknownSchemaNodes.contains(mockedUnknownSchemaNode));
481 public void testGetTypeDefinitions() {
482 final Module moduleConfig = mockModule(CONFIG_NAME);
483 final SchemaContext schemaContext = mockSchema(moduleConfig);
484 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
485 new HashSet<>(), moduleConfig);
487 final TypeDefinition<?> mockedTypeDefinition = mock(TypeDefinition.class);
488 final Set<TypeDefinition<?>> typeDefinitions = Collections.singleton(mockedTypeDefinition);
489 doReturn(typeDefinitions).when(moduleConfig).getTypeDefinitions();
491 final Collection<? extends TypeDefinition<?>> schemaContextProxyTypeDefinitions = filteringSchemaContextProxy
492 .getTypeDefinitions();
493 assertTrue(schemaContextProxyTypeDefinitions.contains(mockedTypeDefinition));
497 public void testGetChildNodes() {
498 final Module moduleConfig = mockModule(CONFIG_NAME);
499 final SchemaContext schemaContext = mockSchema(moduleConfig);
500 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
501 new HashSet<>(), moduleConfig);
503 final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
504 final Set<DataSchemaNode> childNodes = Collections.singleton(mockedContainer);
505 doReturn(childNodes).when(moduleConfig).getChildNodes();
507 final Collection<? extends DataSchemaNode> schemaContextProxyChildNodes =
508 filteringSchemaContextProxy.getChildNodes();
509 assertTrue(schemaContextProxyChildNodes.contains(mockedContainer));
513 public void testGetGroupings() {
514 final Module moduleConfig = mockModule(CONFIG_NAME);
515 final SchemaContext schemaContext = mockSchema(moduleConfig);
516 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
517 new HashSet<>(), moduleConfig);
519 final GroupingDefinition mockedGrouping = mock(GroupingDefinition.class);
520 final Set<GroupingDefinition> groupings = Collections.singleton(mockedGrouping);
521 doReturn(groupings).when(moduleConfig).getGroupings();
523 final Collection<? extends GroupingDefinition> schemaContextProxyGroupings =
524 filteringSchemaContextProxy.getGroupings();
525 assertTrue(schemaContextProxyGroupings.contains(mockedGrouping));
529 public void testGetDataChildByName() {
530 final Module moduleConfig = mockModule(CONFIG_NAME);
531 final SchemaContext schemaContext = mockSchema(moduleConfig);
532 final FilteringSchemaContextProxy filteringSchemaContextProxy = createProxySchemaCtx(schemaContext,
533 new HashSet<>(), moduleConfig);
535 final QName qname = QName.create("config-namespace", "2016-08-11", "cont");
536 final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
537 doReturn(Optional.of(mockedContainer)).when(moduleConfig).findDataChildByName(any(QName.class));
539 final DataSchemaNode dataSchemaNode = filteringSchemaContextProxy.getDataChildByName(qname);
540 assertTrue(dataSchemaNode instanceof ContainerSchemaNode);
543 private static void assertProxyContext(final FilteringSchemaContextProxy filteringSchemaContextProxy,
544 final Module... expected) {
546 final Set<Module> modSet = expected != null ? ImmutableSet.copyOf(expected) : new HashSet<>();
547 Set<Module> modSetFiltering = filteringSchemaContextProxy.getModules();
549 assertEquals(modSet, modSetFiltering);
551 //asserting collections
552 if (expected != null) {
553 for (final Module module : expected) {
554 assertEquals(module, filteringSchemaContextProxy.findModule(module.getName(), module.getRevision())
557 Collection<? extends Module> mod = filteringSchemaContextProxy.findModules(module.getNamespace());
558 assertTrue(mod.contains(module));
559 assertEquals(module, filteringSchemaContextProxy.findModule(module.getNamespace(),
560 module.getRevision().orElse(null)).get());
565 private static FilteringSchemaContextProxy createProxySchemaCtx(final SchemaContext schemaContext,
566 final Set<Module> additionalModules, final Module... modules) {
567 Set<Module> modulesSet = new HashSet<>();
568 if (modules != null) {
569 modulesSet = ImmutableSet.copyOf(modules);
572 return new FilteringSchemaContextProxy(schemaContext, createModuleIds(modulesSet),
573 createModuleIds(additionalModules));
576 private static Set<ModuleId> createModuleIds(final Set<Module> modules) {
577 Set<ModuleId> moduleIds = new HashSet<>();
578 if (modules != null) {
579 for (Module module : modules) {
580 moduleIds.add(new ModuleId(module.getName(), module.getRevision()));
587 private static void mockSubmodules(final Module mainModule, final Module... submodules) {
588 Set<Module> submodulesSet = new HashSet<>();
589 submodulesSet.addAll(Arrays.asList(submodules));
591 doReturn(submodulesSet).when(mainModule).getSubmodules();
594 private static void mockModuleImport(final Module importer, final Module... imports) {
595 Set<ModuleImport> mockedImports = new HashSet<>();
596 for (final Module module : imports) {
597 mockedImports.add(new ModuleImport() {
599 public String getModuleName() {
600 return module.getName();
604 public Optional<Revision> getRevision() {
605 return module.getRevision();
609 public String getPrefix() {
610 return module.getName();
614 public Optional<SemVer> getSemanticVersion() {
615 return module.getSemanticVersion();
619 public Optional<String> getDescription() {
620 return module.getDescription();
624 public Optional<String> getReference() {
625 return module.getReference();
629 public String toString() {
630 return String.format("Module: %s, revision:%s", module.getName(), module.getRevision());
634 public ImportEffectiveStatement asEffectiveStatement() {
635 throw new UnsupportedOperationException();
639 doReturn(mockedImports).when(importer).getImports();
642 //mock module with revision
643 private static Module mockModule(final String name, final Revision rev) {
645 final Module mod = mockModule(name);
647 doReturn(QNameModule.create(mod.getNamespace(), rev)).when(mod).getQNameModule();
648 doReturn(Optional.ofNullable(rev)).when(mod).getRevision();
649 doReturn(mod.getQNameModule().toString()).when(mod).toString();
654 //mock module with default revision
655 private static Module mockModule(final String name) {
657 Module mockedModule = mock(Module.class);
658 doReturn(name).when(mockedModule).getName();
659 doReturn(Optional.of(REVISION)).when(mockedModule).getRevision();
660 final URI newNamespace = URI.create(NAMESPACE.toString() + ":" + name);
661 doReturn(newNamespace).when(mockedModule).getNamespace();
662 doReturn(QNameModule.create(newNamespace, REVISION)).when(mockedModule).getQNameModule();
663 doReturn(new HashSet<>()).when(mockedModule).getSubmodules();
664 doReturn(mockedModule.getQNameModule().toString()).when(mockedModule).toString();
665 mockModuleImport(mockedModule);