JavaPackageTest.java

package com.thoughtworks.qdox.model;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public abstract class JavaPackageTest<P extends JavaPackage>
{

    public abstract P newJavaPackage( String name );

    @Test
    public void testToStringJavaLang()
    {
        P pckg = newJavaPackage( "java.lang" );
        Assertions.assertEquals("package java.lang", pckg.toString());
    }

    @Test
    public void testEquals()
    {
        P pckg = newJavaPackage( "java.lang" );

        Assertions.assertTrue(pckg.equals( pckg ));
        Assertions.assertFalse(pckg.equals( null ));
        Assertions.assertFalse(pckg.equals( new Object() ));

        JavaPackage mockPckg = mock( JavaPackage.class );
        when( mockPckg.getName() ).thenReturn( "java.lang" );

        Assertions.assertTrue(pckg.equals( mockPckg ));
    }
    
    public void testHashCode() 
    {
        Assertions.assertTrue(newJavaPackage( "" ).hashCode() != 0, "hashCode should never resolve to 0");
    }
    
    
    @Test
    public void testListAccessors() {
        P pckg = newJavaPackage( "com.foo.bar" );
        Assertions.assertNotNull(pckg.getSubPackages());
        Assertions.assertEquals(0, pckg.getSubPackages().size());
    }
}