/*******************************************************************************
* Copyright (c) 2007, 2009 Innoopract Informationssysteme GmbH.
* 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:
* Innoopract Informationssysteme GmbH - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.rwt.internal.theme;
import java.util.Arrays;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.rwt.Fixture;
import org.eclipse.rwt.internal.theme.css.StyleRule;
import org.eclipse.rwt.internal.theme.css.StyleSheet;
import org.eclipse.swt.widgets.Button;
public class ThemeManager_Test extends TestCase {
public void testCreate() {
ThemeManager manager = ThemeManager.getInstance();
assertEquals( "org.eclipse.rap.rwt.theme.Default",
ThemeManager.DEFAULT_THEME_ID );
Theme defaultTheme = manager.getTheme( ThemeManager.DEFAULT_THEME_ID );
assertNotNull( defaultTheme );
assertEquals( "RAP Default Theme", defaultTheme.getName() );
}
public void testRegisterResources() {
ThemeManager manager = ThemeManager.getInstance();
manager.registerResources();
String[] themeIds = manager.getRegisteredThemeIds();
assertNotNull( themeIds );
assertTrue( themeIds.length > 0 );
}
public void testRegisterTheme() throws Exception {
ThemeManager.resetInstance();
ThemeManager themeManager = ThemeManager.getInstance();
StyleSheet emptyStyleSheet = new StyleSheet( new StyleRule[ 0 ] );
Theme customTheme = new Theme( "custom.id", "foo", emptyStyleSheet );
themeManager.registerTheme( customTheme );
themeManager.initialize();
assertTrue( themeManager.hasTheme( "custom.id" ) );
List regThemeIds = Arrays.asList( themeManager.getRegisteredThemeIds() );
assertTrue( regThemeIds.contains( "custom.id" ) );
assertSame( customTheme, themeManager.getTheme( "custom.id" ) );
}
public void testRegisterThemeTwice() throws Exception {
ThemeManager.resetInstance();
ThemeManager themeManager = ThemeManager.getInstance();
StyleSheet emptyStyleSheet = new StyleSheet( new StyleRule[ 0 ] );
Theme theme = new Theme( "id1", "foo", emptyStyleSheet );
themeManager.registerTheme( theme );
try {
themeManager.registerTheme( theme );
fail();
} catch( IllegalArgumentException e ) {
// expected
}
}
public void testGetThemeableWidget() {
ThemeManager manager = ThemeManager.getInstance();
ThemeableWidget themeableWidget = manager.getThemeableWidget( Button.class );
assertNotNull( themeableWidget );
assertNotNull( themeableWidget.loader );
assertEquals( Button.class, themeableWidget.widget );
assertNotNull( themeableWidget.elements );
assertTrue( themeableWidget.elements.length > 0 );
}
public void testDefaultThemeInitialized() throws Exception {
ThemeManager.resetInstance();
ThemeManager themeManager = ThemeManager.getInstance();
themeManager.initialize();
Theme defaultTheme = themeManager.getTheme( ThemeManager.DEFAULT_THEME_ID );
assertNotNull( defaultTheme.getValuesMap() );
assertTrue( defaultTheme.getValuesMap().getAllValues().length > 0 );
}
public void testCustomAndDefaultThemeInitialized() throws Exception {
ThemeManager.resetInstance();
ThemeManager themeManager = ThemeManager.getInstance();
StyleSheet styleSheet = ThemeTestUtil.getStyleSheet( "TestExample.css" );
Theme customTheme = new Theme( "custom.id", "Custom Theme", styleSheet );
themeManager.registerTheme( customTheme );
themeManager.initialize();
Theme defaultTheme = themeManager.getTheme( ThemeManager.DEFAULT_THEME_ID );
assertNotNull( defaultTheme.getValuesMap() );
assertTrue( defaultTheme.getValuesMap().getAllValues().length > 0 );
assertNotNull( customTheme.getValuesMap() );
assertTrue( customTheme.getValuesMap().getAllValues().length > 0 );
}
protected void setUp() throws Exception {
Fixture.setUp();
Fixture.fakeNewRequest();
}
protected void tearDown() throws Exception {
Fixture.tearDown();
}
}