/* * Rapid Beans Framework: RapidEnumTest.java * * Copyright Martin Bluemel, 2008 * * Nov 4, 2005 */ package org.rapidbeans.core.basic; import junit.framework.TestCase; import org.rapidbeans.core.common.PrecisionDate; import org.rapidbeans.core.exception.TypeNotFoundException; import org.rapidbeans.core.type.TypeRapidEnum; import org.rapidbeans.domain.finance.Currency; import org.rapidbeans.domain.math.UnitLength; import org.rapidbeans.domain.org.Sex; /** * Unit Tests for class RapidEnum. * * @author Martin Bluemel */ public final class RapidEnumTest extends TestCase { /** * test getInstance happy day. */ public void testValueOf() { assertSame(Sex.male, Sex.valueOf("male")); assertSame(Sex.female, Sex.valueOf("female")); assertSame(PrecisionDate.day, PrecisionDate.valueOf("day")); } /** * test getInstance not existent. */ public void testValueOfNotExistent() { try { Sex.valueOf("xxx"); } catch (IllegalArgumentException e) { // O. K. assertTrue(true); } } /** * test getInstance type not existent. */ public void testValueOfNotExistentType() { try { GenericEnum.valueOf("org.rapidbeans.domain.org.Xxx", "male"); } catch (TypeNotFoundException e) { // O. K. assertTrue(true); } } /** * Test method for getType(). */ public void testGetType() { assertEquals("org.rapidbeans.domain.org.Sex", Sex.male.getType().getName()); } /** * Test method for toString(). */ public void testToString() { assertEquals("male", Sex.male.toString()); } /** * Test method for compareTo(). */ public void testCompareTo() { assertEquals(0, Sex.male.compareTo(Sex.male)); assertEquals(-1, Sex.male.compareTo(Sex.female)); assertEquals(1, Sex.female.compareTo(Sex.male)); } /** * Test method for RapidEnum.format(RapidEnum[], char). */ public void testFormat() { assertEquals("male,female", TypeRapidEnum.format(Sex.male.getType().getElements())); } /** * test a concrete (generated) RapidEnum class. */ public void testConcreteEnumClass() { // an enum is automatically loaded while using one // of its elements Sex sex = Sex.male; assertNotNull(sex); assertSame(Sex.male, sex); assertEquals(Sex.male, sex); assertEquals("male", sex.toString()); assertEquals(Sex.male.ordinal(), sex.ordinal()); sex = Sex.female; assertTrue(sex == Sex.female); assertEquals(Sex.female, sex); assertEquals("female", sex.toString()); assertEquals(Sex.female.ordinal(), sex.ordinal()); switch (sex) { case female: break; default: assertTrue("sex was supposed to be Sex.female", false); break; } } /** * test the value table. */ public void testEnumValueTable() { Currency eur = Currency.euro; assertEquals("euro", eur.name()); assertEquals(1, eur.ordinal()); assertEquals("EU", eur.getShort2()); assertEquals("EUR", eur.getShort3()); } /** * test enum Sex. */ public void testEnumSex() { Sex sex = Sex.female; assertSame(Sex.female, sex); assertEquals(Sex.female.ordinal(), sex.ordinal()); } /** * test enum UnitLength. */ public void testEnumUnitLength() { assertSame(2, UnitLength.dm.ordinal()); assertSame("dm", UnitLength.dm.name()); } }