/** * Copyright (c) 2014 - 2017 Frank Appel * 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 * * Contributors: * Frank Appel - initial API and implementation */ package com.codeaffine.eclipse.ui.swt.theme; import static com.codeaffine.eclipse.ui.swt.theme.AttributeKey.key; import static com.codeaffine.test.util.lang.EqualsTester.newInstance; import static org.assertj.core.api.Assertions.assertThat; import java.util.concurrent.Callable; import org.eclipse.swt.graphics.Color; import org.junit.Test; import com.codeaffine.eclipse.swt.widget.scrollable.Demeanor; import com.codeaffine.test.util.lang.EqualsTester; public class AttributeKeyTest { private static final String IDENTIFIER = "identifier"; private static final Class<Runnable> TYPE = Runnable.class; @Test public void getName() { AttributeKey<Runnable> key = key( IDENTIFIER, TYPE ); String actual = key.identifier; assertThat( actual ).isSameAs( IDENTIFIER ); } @Test public void getType() { AttributeKey<Runnable> key = key( IDENTIFIER, TYPE ); Class<Runnable> actual = key.type; assertThat( actual ).isSameAs( TYPE ); } @Test public void equalsAndHashCode() { EqualsTester<AttributeKey<Runnable>> tester = newInstance( key( IDENTIFIER, TYPE ) ); tester.assertImplementsEqualsAndHashCode(); tester.assertEqual( key( IDENTIFIER, TYPE ), key( IDENTIFIER, TYPE ) ); tester.assertNotEqual( key( IDENTIFIER, TYPE ), key( "otherKey", TYPE ) ); tester.assertNotEqual( key( IDENTIFIER, TYPE ), key( IDENTIFIER, Callable.class ) ); } @Test public void toStringRepresentation() { AttributeKey<Runnable> key = key( IDENTIFIER, TYPE ); String actual = key.toString(); assertThat( actual ) .contains( IDENTIFIER ) .contains( TYPE.getName() ); } @Test public void colorKey() { AttributeKey<Color> actual = AttributeKey.colorKey( IDENTIFIER ); assertThat( actual.identifier ).isSameAs( IDENTIFIER ); assertThat( actual.type ).isSameAs( Color.class ); } @Test public void demeanorKey() { AttributeKey<Demeanor> actual = AttributeKey.demeanorKey( IDENTIFIER ); assertThat( actual.identifier ).isSameAs( IDENTIFIER ); assertThat( actual.type ).isSameAs( Demeanor.class ); } @Test public void integerKey() { AttributeKey<Integer> actual = AttributeKey.integerKey( IDENTIFIER ); assertThat( actual.identifier ).isSameAs( IDENTIFIER ); assertThat( actual.type ).isSameAs( Integer.class ); } @Test( expected = IllegalArgumentException.class ) public void constructWithNullAsName() { key( null, TYPE ); } @Test( expected = IllegalArgumentException.class ) public void constructWithNullAsType() { key( IDENTIFIER, null ); } }