/*
 * Copyright (c) 2014, 2017 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.controller.config.api;

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import org.junit.Assert;
import org.junit.Test;
import org.opendaylight.yangtools.yang.binding.BaseIdentity;

public class IdentityAttributeRefTest {

    IdentityAttributeRef attr = new IdentityAttributeRef("attr");

    @Test
    public void testConstructor() throws Exception {
        String param = new String("attr");
        Assert.assertEquals(attr.getqNameOfIdentity(), param);
    }

    @Test(expected = NullPointerException.class)
    public void testConstructor2() throws Exception {
        new IdentityAttributeRef(null);
    }

    @Test
    public void testHashCode() throws Exception {
        Assert.assertEquals(attr.hashCode(), new String("attr").hashCode());
    }

    @Test
    public void testEqual() throws Exception {
        Assert.assertEquals(attr, attr);
    }

    @Test
    public void testEqual2() throws Exception {
        Assert.assertEquals(attr, new IdentityAttributeRef("attr"));
    }

    @Test
    public void testNotEqual() throws Exception {
        Assert.assertNotEquals(attr, new IdentityAttributeRef("different"));
    }

    @Test
    public void testResolveIdentity() throws Exception {
        DependencyResolver res = mock(DependencyResolver.class);
        IdentityAttributeRef identityAttributeRef = new IdentityAttributeRef("abcd");
        doReturn(SubIdentity.class).when(res).resolveIdentity(identityAttributeRef, Identity.class);
        identityAttributeRef.resolveIdentity(res, Identity.class);
        verify(res).resolveIdentity(identityAttributeRef, Identity.class);
    }

    @Test
    public void testValidateIdentity() throws Exception {
        DependencyResolver res = mock(DependencyResolver.class);
        JmxAttribute jmxAttr = new JmxAttribute("abc");
        doNothing().when(res).validateIdentity(attr, Identity.class, jmxAttr);
        attr.validateIdentity(res, Identity.class, jmxAttr);
        verify(res).validateIdentity(attr, Identity.class, jmxAttr);
    }

    static class Identity extends BaseIdentity {}

    static class SubIdentity extends Identity {}
}

/*
 * Copyright (c) 2014, 2017 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.controller.config.api;

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import org.junit.Assert;
import org.junit.Test;
import org.opendaylight.yangtools.yang.binding.BaseIdentity;

public class IdentityAttributeRefTest {

    IdentityAttributeRef attr = new IdentityAttributeRef("attr");

    @Test
    public void testConstructor() throws Exception {
        String param = new String("attr");
        Assert.assertEquals(attr.getqNameOfIdentity(), param);
    }

    @Test(expected = NullPointerException.class)
    public void testConstructor2() throws Exception {
        new IdentityAttributeRef(null);
    }

    @Test
    public void testHashCode() throws Exception {
        Assert.assertEquals(attr.hashCode(), new String("attr").hashCode());
    }

    @Test
    public void testEqual() throws Exception {
        Assert.assertEquals(attr, attr);
    }

    @Test
    public void testEqual2() throws Exception {
        Assert.assertEquals(attr, new IdentityAttributeRef("attr"));
    }

    @Test
    public void testNotEqual() throws Exception {
        Assert.assertNotEquals(attr, new IdentityAttributeRef("different"));
    }

    @Test
    public void testResolveIdentity() throws Exception {
        DependencyResolver res = mock(DependencyResolver.class);
        IdentityAttributeRef identityAttributeRef = new IdentityAttributeRef("abcd");
        doReturn(SubIdentity.class).when(res).resolveIdentity(identityAttributeRef, Identity.class);
        identityAttributeRef.resolveIdentity(res, Identity.class);
        verify(res).resolveIdentity(identityAttributeRef, Identity.class);
    }

    @Test
    public void testValidateIdentity() throws Exception {
        DependencyResolver res = mock(DependencyResolver.class);
        JmxAttribute jmxAttr = new JmxAttribute("abc");
        doNothing().when(res).validateIdentity(attr, Identity.class, jmxAttr);
        attr.validateIdentity(res, Identity.class, jmxAttr);
        verify(res).validateIdentity(attr, Identity.class, jmxAttr);
    }

    interface Identity extends BaseIdentity {}

    interface SubIdentity extends Identity {}
}

Update IdentityAttributeRefTest