001 /*
002 * Copyright 2002 - 2010 JEuclid, http://jeuclid.sf.net
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 /* $Id: CharacterMappingTest.java,v 92b6a7c39d7f 2010/08/11 20:23:17 max $ */
018
019 package net.sourceforge.jeuclid.test;
020
021 import java.awt.Font;
022 import java.util.List;
023
024 import net.sourceforge.jeuclid.elements.support.attributes.FontFamily;
025 import net.sourceforge.jeuclid.elements.support.attributes.MathVariant;
026 import net.sourceforge.jeuclid.elements.support.text.CharacterMapping;
027 import net.sourceforge.jeuclid.elements.support.text.CodePointAndVariant;
028
029 import org.junit.Assert;
030 import org.junit.Test;
031
032 /**
033 * @version $Revision: 92b6a7c39d7f $
034 */
035 public class CharacterMappingTest {
036 /**
037 * Default Constructor.
038 */
039 public CharacterMappingTest() {
040 // Empty on purpose
041 }
042
043 /**
044 * Tests some standard code mappings.
045 * @throws Exception if the test fails.
046 */
047 @Test
048 public void testMappings() throws Exception {
049 final CharacterMapping cMap = CharacterMapping.getInstance();
050 final CodePointAndVariant test = new CodePointAndVariant(0x1D555,
051 MathVariant.ITALIC);
052 Assert.assertEquals(test, new CodePointAndVariant(0x1d555,
053 MathVariant.ITALIC));
054 final CodePointAndVariant split = cMap.extractUnicodeAttr(test);
055 Assert.assertEquals(split, new CodePointAndVariant(0x64,
056 new MathVariant(Font.ITALIC, FontFamily.DOUBLE_STRUCK)));
057 final CodePointAndVariant fin = cMap.composeUnicodeChar(split, false);
058 Assert.assertEquals(fin, new CodePointAndVariant(0x2146,
059 MathVariant.NORMAL));
060 final CodePointAndVariant fina = cMap.composeUnicodeChar(split, true);
061 Assert.assertEquals(fina, new CodePointAndVariant(0x2146,
062 MathVariant.NORMAL));
063
064 final CodePointAndVariant test2 = new CodePointAndVariant(0x1D555,
065 MathVariant.BOLD);
066 Assert.assertEquals(test2, new CodePointAndVariant(0x1d555,
067 MathVariant.BOLD));
068 final CodePointAndVariant split2 = cMap.extractUnicodeAttr(test2);
069 Assert.assertEquals(split2, new CodePointAndVariant(0x64,
070 new MathVariant(Font.BOLD, FontFamily.DOUBLE_STRUCK)));
071 final CodePointAndVariant fin2 = cMap.composeUnicodeChar(split2,
072 false);
073 Assert.assertEquals(fin2, new CodePointAndVariant(0x1d555,
074 MathVariant.BOLD));
075 final CodePointAndVariant fin2a = cMap.composeUnicodeChar(split2,
076 true);
077 Assert.assertEquals(fin2a, new CodePointAndVariant(0x64,
078 new MathVariant(Font.BOLD, FontFamily.DOUBLE_STRUCK)));
079 }
080
081 /**
082 * Tests code mapping alternatives.
083 * @throws Exception if the test fails.
084 */
085 @Test
086 public void testAlternatives() throws Exception {
087 final CharacterMapping cMap = CharacterMapping.getInstance();
088 final CodePointAndVariant space = new CodePointAndVariant(0x20,
089 MathVariant.NORMAL);
090 final List<CodePointAndVariant> spacelist = cMap
091 .getAllAlternatives(space);
092 Assert.assertEquals(spacelist.get(0), space);
093 Assert.assertEquals(spacelist.get(1), new CodePointAndVariant(160,
094 MathVariant.NORMAL));
095 Assert.assertEquals(spacelist.size(), 2);
096
097 final CodePointAndVariant a = new CodePointAndVariant(65,
098 MathVariant.NORMAL);
099 Assert.assertEquals(cMap.getAllAlternatives(a).size(), 1);
100
101 final CodePointAndVariant test = new CodePointAndVariant(0x1D555,
102 MathVariant.ITALIC);
103 Assert.assertEquals(cMap.getAllAlternatives(test).size(), 3);
104
105 }
106 }