Package org.odftoolkit.odfdom.doc.text

Source Code of org.odftoolkit.odfdom.doc.text.OdfListStyleTest

/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
*
* Use is subject to license terms.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also
* obtain a copy of the License at http://odftoolkit.org/docs/license.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
************************************************************************/

package org.odftoolkit.odfdom.doc.text;


import java.util.logging.Level;
import java.util.logging.Logger;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.odftoolkit.odfdom.pkg.OdfFileDom;
import org.odftoolkit.odfdom.doc.OdfTextDocument;
import org.odftoolkit.odfdom.dom.element.text.TextListLevelStyleElementBase;
import org.odftoolkit.odfdom.dom.style.props.OdfListLevelProperties;
import org.odftoolkit.odfdom.incubator.doc.office.OdfOfficeAutomaticStyles;
import org.odftoolkit.odfdom.incubator.doc.text.OdfTextHeading;
import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListLevelStyleBullet;
import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListLevelStyleNumber;
import org.odftoolkit.odfdom.incubator.doc.text.OdfTextListStyle;
import org.w3c.dom.Node;

/**
*
* @author J David Eisenberg
*/
public class OdfListStyleTest {
  private static final Logger LOG = Logger.getLogger(OdfListStyleTest.class.getName());
    OdfTextDocument doc;
  OdfFileDom dom;
  OdfOfficeAutomaticStyles documentStyles;

  String[] listSpecTest = {
    "*,>,##",
    "I./1:/a)",
    "1.!\u273f!(a)",
  };

  String[] delim = { ",", "/", "!" };

  boolean[] show = { false, true, false };

  String[][] levelType = { // B=bullet, N = numeric
    {"B","B","B"},
    {"N","N","N"},
    {"N","B","N"}
  };

  String[][] formatChar = { // 1,I,a,A for numeric, char for bullet
    {"*", ">", "#" },
    {"I", "1", "a" },
    {"1", "\u273f", "a"}
  };

  String[][] prefixSuffix = { // separated by slashes
    {"/", "/", "/" },
    {"/.", "/:", "/)"},
    {"/.", "/", "(/)" }
  };

    public OdfListStyleTest() {
    }

  @BeforeClass
  public static void setUpClass() throws Exception {
  }

  @AfterClass
  public static void tearDownClass() throws Exception {
  }

    @Before
    public void setUp() {
        try
        {
            doc = OdfTextDocument.newTextDocument();
      dom = doc.getContentDom();
        }
        catch (Exception e)
        {
          LOG.log(Level.SEVERE, e.getMessage(), e);
            Assert.fail(e.getMessage());
        }
    }

    @After
    public void tearDown() {
    }

      @Test
    public void testBuildFromFormat() {
    int i;
   
        LOG.info("createListStyle");
        OdfTextListStyle instance = null;

        for (i = 0; i < listSpecTest.length; i++)
    {
      LOG.info("List Format: " + listSpecTest[i]);
      instance = new OdfTextListStyle(dom, "list" + i,
        listSpecTest[i], delim[i], "1cm", show[i]);

      Assert.assertNotNull(instance.getFirstChild());

      checkNodes(instance, i);
    }
  }

  /**
   * Test of addContent method, of class OdfListStyle.
   */
  @Test
  public void testAddContent() {
    LOG.info("addContent");
    String content = "heading content";
    OdfTextHeading instance = new OdfTextHeading(dom);
    Node node;
    Assert.assertNotNull(instance);
    instance.addContent(content);
    node = instance.getFirstChild();
    Assert.assertNotNull(node);
    Assert.assertEquals(Node.TEXT_NODE, node.getNodeType());
    Assert.assertEquals(content, node.getTextContent());
  }

  private void checkNodes(Node node, int position)
  {
    OdfTextListStyle theStyle;
    OdfTextListLevelStyleBullet bullet;
    OdfTextListLevelStyleNumber number;
    TextListLevelStyleElementBase base;

    int i = 0;
    theStyle = (OdfTextListStyle) node;
    Assert.assertTrue("Style name " +
      theStyle.getStyleNameAttribute() + " incorrect",
      theStyle.getStyleNameAttribute().equals("list" + position));
    node = node.getFirstChild();

    while (node != null)
    {
      Assert.assertTrue("More nodes than specifiers",
        i < levelType[position].length);
      String[] surround;
      if (prefixSuffix[position][i].equals("/"))
      {
        surround = new String[2];
        surround[0] = "";
        surround[1] = "";
      }
      else
      {
        surround = prefixSuffix[position][i].split("/");
      }
      if (levelType[position][i].equals("B"))
      {
        Assert.assertTrue("Class is not bullet",
          node instanceof OdfTextListLevelStyleBullet);
        bullet = (OdfTextListLevelStyleBullet) node;
        base = bullet;
        Assert.assertEquals("Prefix incorrect",
          surround[0], bullet.getStyleNumPrefixAttribute());
        Assert.assertEquals("Suffix incorrect", surround[1],
          bullet.getStyleNumSuffixAttribute());
      }
      else
      {
        Assert.assertTrue("Class is not number",
          node instanceof OdfTextListLevelStyleNumber);
        number = (OdfTextListLevelStyleNumber) node;
        Assert.assertEquals(formatChar[position][i],
          number.getStyleNumFormatAttribute());
        base = number;
        Assert.assertEquals("Prefix incorrect",
          surround[0], number.getStyleNumPrefixAttribute());
        Assert.assertEquals("Suffix incorrect", surround[1],
          number.getStyleNumSuffixAttribute());
      }
      Assert.assertEquals("Level incorrect",
        i+1, base.getTextLevelAttribute().intValue());

      checkNumber(
        "SpaceBefore",
        base.getProperty(OdfListLevelProperties.SpaceBefore),
        i+1);

      checkNumber(
        "MinLabelWidth",
        base.getProperty(OdfListLevelProperties.MinLabelWidth),
        1.0);

      node = node.getNextSibling();
      i++;
    }
    }

  private void checkNumber(String message, String cssLength, double expected)
  {
    String cssAmount = cssLength.replaceFirst("cm","");
    double amount = Double.valueOf(cssAmount);
    Assert.assertEquals(message + " incorrect", expected, amount, 0.01);
  }

}
TOP

Related Classes of org.odftoolkit.odfdom.doc.text.OdfListStyleTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.