/*******************************************************************************
* Copyright (c) 2009 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.swt.dnd;
import junit.framework.TestCase;
import org.eclipse.rwt.Fixture;
import org.eclipse.rwt.graphics.Graphics;
import org.eclipse.rwt.internal.resources.DefaultResourceManagerFactory;
import org.eclipse.rwt.internal.resources.ResourceManager;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.internal.graphics.ResourceFactory;
public class Transfer_Test extends TestCase {
public void testTransferDataInitialValues() {
TransferData data = new TransferData();
assertEquals( 0, data.type );
assertEquals( 0, data.result );
assertNull( data.data );
}
public void testTextTransferTypeIds() {
Transfer transfer = TextTransfer.getInstance();
assertNotNull( transfer.getTypeIds() );
assertTrue( transfer.getTypeIds().length > 0 );
}
public void testTextTransferIsSupportedType() {
Transfer transfer = TextTransfer.getInstance();
TransferData data = new TransferData();
data.type = transfer.getTypeIds()[ 0 ];
assertTrue( transfer.isSupportedType( data ) );
data = new TransferData();
data.type = ImageTransfer.getInstance().getTypeIds()[ 0 ];
assertFalse( transfer.isSupportedType( data ) );
assertFalse( transfer.isSupportedType( null ) );
}
public void testTextTransferConversion() {
Transfer transfer = TextTransfer.getInstance();
TransferData data = transfer.getSupportedTypes()[ 0 ];
transfer.javaToNative( "foo", data );
assertEquals( 1, data.result );
Object java = transfer.nativeToJava( data );
assertTrue( java instanceof String );
assertEquals( "foo", ( String )java );
}
public void testImageTransferIsSupportedType() {
Transfer transfer = ImageTransfer.getInstance();
TransferData data = new TransferData();
data.type = transfer.getTypeIds()[ 0 ];
assertTrue( transfer.isSupportedType( data ) );
data = new TransferData();
data.type = TextTransfer.getInstance().getTypeIds()[ 0 ];
assertFalse( transfer.isSupportedType( data ) );
assertFalse( transfer.isSupportedType( null ) );
}
public void testImageTransferTypeIds() {
Transfer transfer = ImageTransfer.getInstance();
assertNotNull( transfer.getTypeIds() );
assertTrue( transfer.getTypeIds().length > 0 );
}
public void testImagaeTransferConversion() {
Transfer transfer = ImageTransfer.getInstance();
TransferData data = transfer.getSupportedTypes()[ 0 ];
Image image = Graphics.getImage( Fixture.IMAGE1,
Fixture.class.getClassLoader() );
ImageData imageData = ResourceFactory.getImageData( image );
transfer.javaToNative( imageData, data );
assertEquals( 1, data.result );
Object java = transfer.nativeToJava( data );
assertTrue( java instanceof ImageData );
assertNotSame( imageData, java );
assertEquals( imageData.width, ( ( ImageData ) java ).width );
assertEquals( imageData.height, ( ( ImageData ) java ).height );
}
public void testURLTransferConversion() {
Transfer transfer = URLTransfer.getInstance();
TransferData data = transfer.getSupportedTypes()[ 0 ];
String url = "http://eclipse.org/rap";
transfer.javaToNative( url, data );
assertEquals( 1, data.result );
Object java = transfer.nativeToJava( data );
assertTrue( java instanceof String );
assertEquals( url, ( String )java );
}
public void testFileTransferConversion() {
Transfer transfer = FileTransfer.getInstance();
TransferData data = transfer.getSupportedTypes()[ 0 ];
String[] fileNames = new String[] { "c:/file1", "c:/file2", };
transfer.javaToNative( fileNames, data );
assertEquals( 1, data.result );
Object java = transfer.nativeToJava( data );
assertTrue( java instanceof String[] );
String[] transferredFileNames = ( String[] )java;
assertEquals( fileNames.length, transferredFileNames.length );
assertEquals( fileNames[ 0 ], transferredFileNames[ 0 ] );
assertEquals( fileNames[ 1 ], transferredFileNames[ 1 ] );
}
public void testRTFTransferConversion() {
Transfer transfer = RTFTransfer.getInstance();
TransferData data = transfer.getSupportedTypes()[ 0 ];
String rtf
= "{\\rtf1{\\colortbl;\\red255\\green0\\blue0;}\\cf1\\b "
+ "Hello World"
+ "}";
transfer.javaToNative( rtf, data );
assertEquals( 1, data.result );
Object java = transfer.nativeToJava( data );
assertTrue( java instanceof String );
assertEquals( rtf, ( String )java );
}
public void testHTMLTransferConversion() {
Transfer transfer = HTMLTransfer.getInstance();
TransferData data = transfer.getSupportedTypes()[ 0 ];
String html = "<html></html>";
transfer.javaToNative( html, data );
assertEquals( 1, data.result );
Object java = transfer.nativeToJava( data );
assertTrue( java instanceof String );
assertEquals( html, ( String )java );
}
public void testTextToImageTransfer() {
Transfer textTransfer = TextTransfer.getInstance();
TransferData data = textTransfer.getSupportedTypes()[ 0 ];
String text = "Hello World";
textTransfer.javaToNative( text, data );
assertEquals( 1, data.result );
Transfer imageTransfer = ImageTransfer.getInstance();
Object java = imageTransfer.nativeToJava( data );
assertNull( java );
}
public void testTextTransferWithIllegalData() {
Transfer textTransfer = TextTransfer.getInstance();
TransferData data = textTransfer.getSupportedTypes()[ 0 ];
try {
textTransfer.javaToNative( new Object(), data );
fail( "Must not accept wrong input data" );
} catch( SWTException e ) {
// expected
}
}
public void testRegisterType() {
int fooType = Transfer.registerType( "foo" );
assertEquals( fooType, Transfer.registerType( "foo" ) );
int barType = Transfer.registerType( "bar" );
assertTrue( fooType != barType );
}
protected void setUp() throws Exception {
// we do need the ressource manager for this test
Fixture.setUpWithoutResourceManager();
Fixture.registerAdapterFactories();
Fixture.createContext( false );
// registration of real resource manager
ResourceManager.register( new DefaultResourceManagerFactory() );
}
protected void tearDown() throws Exception {
Fixture.tearDown();
}
}