/* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.groupbasedpolicy.sxp.ep.provider.impl; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.groupbasedpolicy.sxp.ep.provider.api.EPPolicyTemplateProvider; import org.opendaylight.groupbasedpolicy.sxp.ep.provider.api.TemplateProviderDistributionTarget; import org.opendaylight.yangtools.concepts.ObjectRegistration; /** * Test for {@link EPPolicyTemplateProviderRegistryImpl}. */ @RunWith(MockitoJUnitRunner.class) public class EPPolicyTemplateProviderRegistryImplTest { @Mock private EPPolicyTemplateProvider templateProvider; @Mock private TemplateProviderDistributionTarget<EPPolicyTemplateProvider> target1; @Mock private TemplateProviderDistributionTarget<EPPolicyTemplateProvider> target2; @Mock private TemplateProviderDistributionTarget<EPPolicyTemplateProvider> target3; private EPPolicyTemplateProviderRegistryImpl registry; @Before public void setUp() throws Exception { registry = new EPPolicyTemplateProviderRegistryImpl(); } @Test public void testRegisterTemplateProvider() throws Exception { registry.addDistributionTarget(target1); final ObjectRegistration<EPPolicyTemplateProvider> registration = registry.registerTemplateProvider(templateProvider); Mockito.verify(target1).setTemplateProvider(templateProvider); registry.addDistributionTarget(target2); Mockito.verify(target2).setTemplateProvider(templateProvider); registration.close(); Mockito.verify(target1).setTemplateProvider(null); Mockito.verify(target2).setTemplateProvider(null); registry.addDistributionTarget(target3); Mockito.verifyNoMoreInteractions(target1, target2, target3); } @Test public void testAddDistributionTarget() throws Exception { registry.addDistributionTarget(target1); Mockito.verify(target1, Mockito.never()).setTemplateProvider(Matchers.<EPPolicyTemplateProvider>any()); registry.registerTemplateProvider(templateProvider); Mockito.verify(target1).setTemplateProvider(templateProvider); registry.addDistributionTarget(target2); Mockito.verify(target2).setTemplateProvider(templateProvider); } @Test public void testClose() throws Exception { registry.addDistributionTarget(target1); final ObjectRegistration<EPPolicyTemplateProvider> registration = registry.registerTemplateProvider(templateProvider); registry.addDistributionTarget(target2); Mockito.verify(target1).setTemplateProvider(templateProvider); Mockito.verify(target2).setTemplateProvider(templateProvider); registry.close(); Mockito.verify(target1).setTemplateProvider(null); Mockito.verify(target2).setTemplateProvider(null); Mockito.verifyNoMoreInteractions(target1, target2); } }