/******************************************************************************* * Copyright (c) 2002, 2014 Innoopract Informationssysteme GmbH 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: * Innoopract Informationssysteme GmbH - initial API and implementation * EclipseSource - ongoing development ******************************************************************************/ package org.eclipse.swt.graphics; import static org.eclipse.rap.rwt.testfixture.internal.SerializationTestUtil.serializeAndDeserialize; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.eclipse.swt.SWT; import org.junit.Test; public class FontData_Test { @Test public void testDefaultConstructor() { FontData fontData = new FontData(); assertEquals( "", fontData.getName() ); assertEquals( "", fontData.getLocale() ); assertEquals( 12, fontData.getHeight() ); assertEquals( SWT.NORMAL, fontData.getStyle() ); } @Test public void testConstructor() { FontData fontData = new FontData( "roman", 1, SWT.NORMAL ); assertEquals( "roman", fontData.getName() ); assertEquals( "", fontData.getLocale() ); assertEquals( 1, fontData.getHeight() ); assertEquals( SWT.NORMAL, fontData.getStyle() ); } @Test public void testFontDataFromString() { FontData fontData = new FontData( "1|roman|1|0|" ); assertEquals( "roman", fontData.getName() ); assertEquals( "", fontData.getLocale() ); assertEquals( 1, fontData.getHeight() ); assertEquals( SWT.NORMAL, fontData.getStyle() ); } @Test public void testSetName() { FontData fontData = new FontData( "foo", 8, SWT.ITALIC ); fontData.setName( "bar" ); assertEquals( "bar", fontData.getName() ); assertEquals( 8, fontData.getHeight() ); assertEquals( SWT.ITALIC, fontData.getStyle() ); } @Test public void testSetHeight() { FontData fontData = new FontData( "foo", 8, SWT.ITALIC ); fontData.setHeight( 12 ); assertEquals( "foo", fontData.getName() ); assertEquals( 12, fontData.getHeight() ); assertEquals( SWT.ITALIC, fontData.getStyle() ); } @Test public void testSetStyle() { FontData fontData = new FontData( "foo", 8, SWT.ITALIC ); fontData.setStyle( SWT.BOLD ); assertEquals( "foo", fontData.getName() ); assertEquals( 8, fontData.getHeight() ); assertEquals( SWT.BOLD, fontData.getStyle() ); } @Test public void testSetLocale() { assertEquals( "", setAndGetLocale( "" ) ); assertEquals( " ", setAndGetLocale( " " ) ); assertEquals( " ", setAndGetLocale( " " ) ); assertEquals( "", setAndGetLocale( "_" ) ); assertEquals( "", setAndGetLocale( "__" ) ); assertEquals( "", setAndGetLocale( "___" ) ); assertEquals( "_", setAndGetLocale( "____" ) ); assertEquals( " ", setAndGetLocale( "_ _" ) ); assertEquals( " _ ", setAndGetLocale( " _ " ) ); assertEquals( "a", setAndGetLocale( "a" ) ); assertEquals( "a", setAndGetLocale( "_a_" ) ); assertEquals( "a_b", setAndGetLocale( "_a_b" ) ); assertEquals( "a_b", setAndGetLocale( "_a_b_" ) ); assertEquals( " _a_b_ ", setAndGetLocale( " _a_b_ " ) ); assertEquals( "a_b_", setAndGetLocale( "__a_b__" ) ); assertEquals( "a_b_c_d_e", setAndGetLocale( "_a_b_c_d_e_" ) ); assertEquals( "foo_bar_baz", setAndGetLocale( "foo_bar_baz" ) ); } @Test public void testSetLocaleToNull() { FontData fontData = new FontData(); fontData.setLocale( "foo" ); fontData.setLocale( null ); assertEquals( "", fontData.getLocale() ); } @Test public void testEquals() { FontData fontData1 = new FontData( "roman", 1, SWT.NORMAL ); assertFalse( fontData1.equals( null ) ); assertFalse( fontData1.equals( new Object() ) ); assertFalse( fontData1.equals( new FontData( "roman", 1, SWT.BOLD ) ) ); assertFalse( fontData1.equals( new FontData( "roman", 2, SWT.NORMAL ) ) ); assertFalse( fontData1.equals( new FontData( "arial", 1, SWT.NORMAL ) ) ); assertTrue( fontData1.equals( new FontData( "roman", 1, SWT.NORMAL ) ) ); } @Test public void testHashCode() { FontData roman1Normal = new FontData( "roman", 1, SWT.NORMAL ); FontData roman1Normal2 = new FontData( "roman", 1, SWT.NORMAL ); assertEquals( roman1Normal.hashCode(), roman1Normal2.hashCode() ); assertFalse( roman1Normal.hashCode() == new Object().hashCode() ); FontData fontData3 = new FontData( "roman", 1, SWT.BOLD ); assertFalse( roman1Normal.hashCode() == fontData3.hashCode() ); fontData3 = new FontData( "roman", 2, SWT.NORMAL ); assertFalse( roman1Normal.hashCode() == fontData3.hashCode() ); fontData3 = new FontData( "arial", 1, SWT.NORMAL ); assertFalse( roman1Normal.hashCode() == fontData3.hashCode() ); FontData arial13Normal = new FontData( "arial", 13, SWT.NORMAL ); FontData arial12Bold = new FontData( "arial", 12, SWT.BOLD ); assertFalse( arial13Normal.hashCode() == arial12Bold.hashCode() ); } @Test public void testHashCodeWithLocale() { FontData localeDe = new FontData( "", 1, SWT.NORMAL ); localeDe.setLocale( "de" ); FontData localeEn = new FontData( "", 1, SWT.NORMAL ); localeEn.setLocale( "en" ); assertEquals( localeDe.hashCode(), localeEn.hashCode() ); } @Test public void testEqualsWithLocale() { FontData localeDe = new FontData( "", 1, SWT.NORMAL ); localeDe.setLocale( "de" ); FontData localeEn = new FontData( "", 1, SWT.NORMAL ); localeEn.setLocale( "en" ); assertTrue( localeDe.equals( localeEn ) ); } @Test public void testSerialization() throws Exception { FontData fontData = new FontData( "name", 1, SWT.BOLD ); fontData.setLocale( "fr" ); FontData deserializedFontData = serializeAndDeserialize( fontData ); assertEquals( fontData.getName(), deserializedFontData.getName() ); assertEquals( fontData.getHeight(), deserializedFontData.getHeight() ); assertEquals( fontData.getStyle(), deserializedFontData.getStyle() ); assertEquals( fontData.getLocale(), deserializedFontData.getLocale() ); } private static String setAndGetLocale( String locale ) { FontData fontData = new FontData(); fontData.setLocale( locale ); return fontData.getLocale(); } }