/*******************************************************************************
* Copyright (c) 2009, 2014 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.ThemeTestUtil.RESOURCE_LOADER;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.rap.rwt.service.ApplicationContext;
import org.eclipse.rap.rwt.testfixture.TestContext;
import org.eclipse.rap.rwt.testfixture.internal.Fixture;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
public class CssCursor_Test {
@Rule
public TestContext context = new TestContext();
private ApplicationContext applicationContext;
@Before
public void setUp() {
applicationContext = getApplicationContext();
}
@Test( expected = NullPointerException.class )
public void testValueOf_nullArgument() {
CssCursor.valueOf( null, RESOURCE_LOADER );
}
@Test( expected = NullPointerException.class )
public void testValueOf_nullLoader() {
CssCursor.valueOf( "", null );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_emptyString() {
CssCursor.valueOf( "", RESOURCE_LOADER );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_invalidCursorType() {
CssCursor.valueOf( "alabala" );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_notExistingCursorFile() {
CssCursor.valueOf( "not-existing.cur", RESOURCE_LOADER );
}
@Test
public void testPredefinedCursor() {
CssCursor cursor = CssCursor.valueOf( "crosshair" );
assertEquals( "crosshair", cursor.value );
assertNull( cursor.loader );
assertFalse( cursor.isCustomCursor() );
}
@Test
public void testCustomCursor() {
CssCursor cursor = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
assertEquals( Fixture.IMAGE_50x100, cursor.value );
assertEquals( RESOURCE_LOADER, cursor.loader );
assertTrue( cursor.isCustomCursor() );
}
@Test
public void testDefaultString() {
CssCursor cursor = CssCursor.valueOf( "crosshair" );
assertEquals( "crosshair", cursor.toDefaultString() );
cursor = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
assertEquals( "", cursor.toDefaultString() );
}
@Test
public void testHashCode() {
CssCursor cursor1 = CssCursor.valueOf( "crosshair" );
CssCursor cursor2 = CssCursor.valueOf( "crosshair" );
assertEquals( cursor1, cursor2 );
assertEquals( cursor1.hashCode(), cursor2.hashCode() );
cursor1 = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
cursor2 = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
assertEquals( cursor1, cursor2 );
assertEquals( cursor1.hashCode(), cursor2.hashCode() );
}
@Test
public void testGetResourcePath() {
CssCursor image = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
assertTrue( image.getResourcePath( applicationContext ).startsWith( "themes/cursors/" ) );
}
@Test
public void testResourcePathsDiffer() {
CssCursor image1 = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
CssCursor image2 = CssCursor.valueOf( Fixture.IMAGE_100x50, RESOURCE_LOADER );
String path1 = image1.getResourcePath( applicationContext );
String path2 = image2.getResourcePath( applicationContext );
assertFalse( path1.equals( path2 ) );
}
@Test
public void testGetResourcePathWithPredefined() {
assertNull( CssCursor.valueOf( "crosshair" ).getResourcePath( applicationContext ) );
}
@Test
public void testGetResourceAsStream() throws IOException {
CssCursor image = CssCursor.valueOf( Fixture.IMAGE_50x100, RESOURCE_LOADER );
InputStream inputStream = image.getResourceAsStream();
assertTrue( inputStream.available() > 0 );
inputStream.close();
}
@Test
public void testGetResourceAsStreamWithPredefined() throws IOException {
assertNull( CssCursor.valueOf( "crosshair" ).getResourceAsStream() );
}
}