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: MathComponentTest.java,v b7608960db6b 2010/08/13 09:22:12 max $ */
018    
019    package net.sourceforge.jeuclid.test;
020    
021    import java.awt.BorderLayout;
022    import java.awt.Frame;
023    import java.awt.GraphicsEnvironment;
024    import java.awt.HeadlessException;
025    import java.io.StringReader;
026    
027    import javax.xml.parsers.DocumentBuilder;
028    import javax.xml.parsers.DocumentBuilderFactory;
029    
030    import net.sourceforge.jeuclid.ResourceEntityResolver;
031    import net.sourceforge.jeuclid.awt.MathComponent;
032    
033    import org.junit.Assume;
034    import org.junit.BeforeClass;
035    import org.junit.Test;
036    import org.w3c.dom.Document;
037    import org.xml.sax.InputSource;
038    
039    /**
040     * Tests the AWT math component.
041     *
042     * @version $Revision: b7608960db6b $
043     */
044    public class MathComponentTest {
045    
046        /** Run these tests only on non-headless nodes. */
047        @BeforeClass
048        public static void checkHeadless() {
049            Assume.assumeTrue(!GraphicsEnvironment.isHeadless());
050        }
051        
052        /**
053         * Test string with xml header.
054         */
055        private static String test = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><math mode=\"display\">"
056                + "<mrow><munderover><mo>&#x0222B;</mo><mn>1</mn><mi>x</mi></munderover>"
057                + "<mfrac><mi>dt</mi><mi>t</mi></mfrac></mrow></math>";
058    
059        /**
060         * Tests if AWT component starts up.
061         * @throws Exception if the test fails.
062         */
063        @Test
064        public void testAWTComponent() throws Exception {
065            Document document;
066    
067            final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
068                    .newInstance();
069            final DocumentBuilder parser = documentBuilderFactory
070                    .newDocumentBuilder();
071            parser.setEntityResolver(new ResourceEntityResolver());
072            document = parser.parse(new InputSource(new StringReader(
073                    MathComponentTest.test)));
074    
075            final Frame frame = new Frame("Test MathComponent");
076            frame.setLayout(new BorderLayout());
077            final MathComponent component = new MathComponent();
078            component.setDocument(document);
079            component.setDebug(false);
080            frame.add(component, BorderLayout.CENTER);
081            frame.setVisible(true);
082            frame.pack();
083            frame.invalidate();
084            frame.validate();
085            frame.dispose();
086        }
087    
088    }