/*******************************************************************************
* Copyright (c) 2011, 2015 EclipseSource 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
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.rwt.internal.theme;
import static org.eclipse.rap.rwt.internal.service.ContextProvider.getApplicationContext;
import static org.eclipse.rap.rwt.internal.theme.ThemePropertyAdapterRegistry.getInstance;
import static org.junit.Assert.*;
import org.eclipse.rap.rwt.internal.application.ApplicationContextImpl;
import org.eclipse.rap.rwt.internal.theme.ThemePropertyAdapterRegistry.BoxDimensionsPropertyAdapter;
import org.eclipse.rap.rwt.internal.theme.ThemePropertyAdapterRegistry.DimensionPropertyAdapter;
import org.eclipse.rap.rwt.internal.theme.ThemePropertyAdapterRegistry.DirectPropertyAdapter;
import org.eclipse.rap.rwt.internal.theme.ThemePropertyAdapterRegistry.ImagePropertyAdapter;
import org.eclipse.rap.rwt.internal.theme.ThemePropertyAdapterRegistry.ThemePropertyAdapter;
import org.eclipse.rap.rwt.testfixture.internal.Fixture;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class ThemePropertyAdapterRegistry_Test {
private ApplicationContextImpl applicationContext;
private ThemePropertyAdapterRegistry registry;
@Before
public void setUp() {
Fixture.setUp();
applicationContext = getApplicationContext();
registry = ThemePropertyAdapterRegistry.getInstance( applicationContext );
}
@After
public void tearDown() {
Fixture.tearDown();
}
@Test
public void testGetPropertyAdapter() {
ThemePropertyAdapter dimensionAdapter = registry.getPropertyAdapter( CssDimension.class );
ThemePropertyAdapter boxDimAdapter = registry.getPropertyAdapter( CssBoxDimensions.class );
ThemePropertyAdapter imageAdapter = registry.getPropertyAdapter( CssImage.class );
assertEquals( DimensionPropertyAdapter.class, dimensionAdapter.getClass() );
assertEquals( BoxDimensionsPropertyAdapter.class, boxDimAdapter.getClass() );
assertEquals( ImagePropertyAdapter.class, imageAdapter.getClass() );
}
@Test
public void testDimensionPropertyAdapter() {
ThemePropertyAdapter adapter = new DimensionPropertyAdapter();
assertEquals( "0", adapter.getKey( CssDimension.ZERO ) );
assertEquals( "439", adapter.getKey( CssDimension.create( 23 ) ) );
assertEquals( "ffffffd1", adapter.getKey( CssDimension.create( -1 ) ) );
assertEquals( "dimensions", adapter.getSlot( CssDimension.ZERO ) );
assertEquals( "0", adapter.getValue( CssDimension.ZERO ).toString() );
assertEquals( "23", adapter.getValue( CssDimension.create( 23 ) ).toString() );
}
@Test
public void testBoxDimensionsPropertyAdapter() {
ThemePropertyAdapter adapter = new BoxDimensionsPropertyAdapter();
CssBoxDimensions testBoxDimensions = CssBoxDimensions.create( 0, 1, 2, 3 );
assertEquals( "2144df1c", adapter.getKey( CssBoxDimensions.ZERO ) );
assertEquals( "8bb98613", adapter.getKey( testBoxDimensions ) );
assertEquals( "boxdims", adapter.getSlot( CssBoxDimensions.ZERO ) );
assertEquals( "[0,0,0,0]", adapter.getValue( CssBoxDimensions.ZERO ).toString() );
assertEquals( "[0,1,2,3]", adapter.getValue( testBoxDimensions ).toString() );
}
@Test
public void testDefaultPropertyAdapter() {
ThemePropertyAdapter adapter = new DirectPropertyAdapter();
assertEquals( "23.0", adapter.getKey( CssFloat.valueOf( "23" ) ) );
assertNull( adapter.getSlot( CssFloat.valueOf( "23" ) ) );
assertNull( adapter.getValue( CssFloat.valueOf( "23" ) ) );
}
@Test
public void testSameInstance() {
ThemePropertyAdapterRegistry registryB = getInstance( applicationContext );
assertSame( registry, registryB );
}
@Test
public void testInstanceHasApplicationScope() {
Fixture.tearDown();
Fixture.setUp();
ThemePropertyAdapterRegistry registryB = getInstance( applicationContext );
assertNotSame( registry, registryB );
}
}