001    /*
002     * Copyright 2007 - 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: LayoutContextParamTest.java,v 92b6a7c39d7f 2010/08/11 20:23:17 max $ */
018    
019    package net.sourceforge.jeuclid.test;
020    
021    import java.awt.Color;
022    import java.util.Arrays;
023    import java.util.Collections;
024    
025    import net.sourceforge.jeuclid.Constants;
026    import net.sourceforge.jeuclid.LayoutContext;
027    import net.sourceforge.jeuclid.context.Display;
028    import net.sourceforge.jeuclid.context.LayoutContextImpl;
029    import net.sourceforge.jeuclid.context.Parameter;
030    import net.sourceforge.jeuclid.elements.generic.DocumentElement;
031    import net.sourceforge.jeuclid.elements.generic.MathImpl;
032    
033    import org.junit.Assert;
034    import org.junit.Test;
035    
036    /**
037     * Test for {@link net.sourceforge.jeuclid.context.Parameter} enum.
038     *
039     * @version $Revision: 92b6a7c39d7f $
040     */
041    public class LayoutContextParamTest {
042        /**
043         * Default Constructor.
044         */
045        public LayoutContextParamTest() {
046            // Empty on purpose
047        }
048    
049        /**
050         * Tests implementation of {@link Parameter#valid(Object)} method.
051         */
052        @Test
053        public void testValid() {
054            Assert.assertTrue(Parameter.DEBUG.valid(Boolean.TRUE));
055            Assert.assertFalse(Parameter.DEBUG.valid("true"));
056            Assert.assertTrue(Parameter.DISPLAY.valid(Display.BLOCK));
057            Assert.assertFalse(Parameter.DISPLAY.valid(null));
058            Assert.assertTrue(Parameter.FONTS_SERIF.valid(Collections
059                    .singletonList("Arial")));
060            Assert.assertFalse(Parameter.FONTS_SERIF.valid("Courier"));
061            Assert.assertTrue(Parameter.MATHBACKGROUND.valid(Color.RED));
062            Assert.assertTrue(Parameter.MATHBACKGROUND.valid(null));
063            Assert.assertTrue(Parameter.MATHSIZE.valid(Float.valueOf(1)));
064            Assert.assertFalse(Parameter.MATHSIZE.valid(Integer.valueOf(1)));
065            Assert.assertTrue(Parameter.SCRIPTLEVEL.valid(Integer.valueOf(1)));
066            Assert.assertFalse(Parameter.SCRIPTLEVEL.valid(Float.valueOf(1)));
067        }
068    
069        /**
070         * Tests implementation of {@link Parameter#fromString(String)} method.
071         */
072        @Test
073        public void testFromString() {
074            Assert.assertEquals(Parameter.DEBUG.fromString("true"), Boolean.TRUE);
075            Assert.assertEquals(Parameter.DEBUG.fromString(null), null);
076            Assert.assertEquals(Parameter.DISPLAY.fromString("BLOCK"),
077                    Display.BLOCK);
078            try {
079                Parameter.DISPLAY.fromString("foo");
080                Assert.fail();
081            } catch (final IllegalArgumentException e) {
082            }
083            Assert.assertEquals(Parameter.FONTS_SERIF.fromString("Arial"),
084                    Collections.singletonList("arial"));
085            Assert.assertEquals(
086                    Parameter.FONTS_SERIF.fromString("Arial,Helvetica"), Arrays
087                            .asList(new String[] { "arial", "helvetica" }));
088            Assert.assertEquals(Parameter.FONTS_SERIF.fromString("Foo, Bar"),
089                    Arrays.asList(new String[] { "foo", "bar" }));
090            Assert.assertEquals(Parameter.MATHCOLOR.fromString("RED"), Color.RED);
091            try {
092                Parameter.MATHCOLOR.fromString("violet");
093                Assert.fail();
094            } catch (final IllegalArgumentException e) {
095            }
096            Assert.assertEquals(Parameter.MATHCOLOR.fromString("rgb(100,100,100)"),
097                    new Color(100, 100, 100));
098            Assert.assertEquals(Parameter.MATHSIZE.fromString("0.5"), Float
099                    .valueOf(0.5f));
100            Assert.assertEquals(Parameter.SCRIPTLEVEL.fromString("1"), Integer
101                    .valueOf(1));
102        }
103    
104        /**
105         * Tests implementation of {@link Parameter#toString(String)} method.
106         */
107        @Test
108        public void testToString() {
109            Assert.assertEquals(Parameter.DEBUG.toString(Boolean.TRUE), "true");
110            Assert.assertEquals(Parameter.DEBUG.toString(null), null);
111            Assert.assertEquals(Parameter.DISPLAY.toString(Display.INLINE),
112                    "INLINE");
113            Assert.assertEquals(Parameter.FONTS_SERIF.toString(Collections
114                    .singletonList("font")), "font");
115            Assert.assertEquals(Parameter.FONTS_SERIF.toString(Arrays
116                    .asList(new String[] { "f1", "f2" })), "f1, f2");
117            Assert.assertEquals(Parameter.MATHCOLOR.toString(Color.RED), "red");
118            Assert.assertEquals(Parameter.MATHCOLOR.toString(null), null);
119            Assert.assertEquals(
120                    Parameter.MATHCOLOR.toString(new Color(32, 32, 32)), "#202020");
121            Assert.assertEquals(Parameter.MATHSIZE.toString(Float.valueOf(0.5f)),
122                    "0.5");
123            Assert.assertEquals(Parameter.SCRIPTLEVEL.toString(Integer.valueOf(2)),
124                    "2");
125        }
126    
127        /**
128         * Test parameter passing from String.
129         */
130        @Test
131        public void testParamFromOldNSProgrammatically() {
132            final MathImpl mi = new MathImpl(MathImpl.ELEMENT,
133                    new DocumentElement());
134            final LayoutContext defaultContext = LayoutContextImpl
135                    .getDefaultLayoutContext();
136            final LayoutContext testContext1 = mi.getChildLayoutContext(0,
137                    defaultContext);
138            Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE),
139                    12.0f);
140            mi.setAttributeNS(Constants.NS_OLD_JEUCLID_EXT, "jeuclid:fontSize",
141                    "13");
142            Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE),
143                    13.0f);
144            // Case sensitive!
145            mi.setAttributeNS(Constants.NS_OLD_JEUCLID_EXT, "jeuclid:fontsize",
146                    "14");
147            Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE),
148                    13.0f);
149        }
150    
151        /**
152         * Test parameter passing from String.
153         */
154        @Test
155        public void testParamFromNSProgrammatically() {
156            final MathImpl mi = new MathImpl(MathImpl.ELEMENT,
157                    new DocumentElement());
158            final LayoutContext defaultContext = LayoutContextImpl
159                    .getDefaultLayoutContext();
160            final LayoutContext testContext1 = mi.getChildLayoutContext(0,
161                    defaultContext);
162            Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE),
163                    12.0f);
164            mi.setAttributeNS(Constants.NS_JEUCLID_EXT, "jeuclid:fontSize", "13");
165            Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE),
166                    13.0f);
167            // Case sensitive!
168            mi.setAttributeNS(Constants.NS_JEUCLID_EXT, "jeuclid:fontsize", "14");
169            Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE),
170                    13.0f);
171        }
172    }