Package org.pentaho.openformula.ui.util

Source Code of org.pentaho.openformula.ui.util.FunctionParameterEditHelperTest

/*
* This program is free software; you can redistribute it and/or modify it under the
*  terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
*  Foundation.
*
*  You should have received a copy of the GNU Lesser General Public License along with this
*  program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
*  or from the Free Software Foundation, Inc.,
*  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
*  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details.
*
*  Copyright (c) 2006 - 2013 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.openformula.ui.util;

import junit.framework.TestCase;
import org.pentaho.openformula.ui.ParameterUpdateEvent;
import org.pentaho.openformula.ui.model2.FormulaDocument;
import org.pentaho.openformula.ui.model2.FunctionInformation;
import org.pentaho.reporting.libraries.formula.LibFormulaBoot;

@SuppressWarnings("HardCodedStringLiteral")
public class FunctionParameterEditHelperTest extends TestCase
{
  public FunctionParameterEditHelperTest()
  {
  }

  protected void setUp() throws Exception
  {
    LibFormulaBoot.getInstance().start();
  }

  public void testEditExtraParameterEmptyText()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 10, "", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=SUM()");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=SUM()", editResult.text);
    assertEquals(5, editResult.caretPositionAfterEdit);
  }

  public void testEditExtraParameterText()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 4, "1", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=SUM()");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=SUM(;;;;1)", editResult.text);
    assertEquals(10, editResult.caretPositionAfterEdit);
  }

  public void testEditExtraParameterText2()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 0, "1", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=SUM()");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=SUM(1)", editResult.text);
    assertEquals(6, editResult.caretPositionAfterEdit);
  }

  public void testEditExtraParameterText3()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 1, "1", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=SUM(1)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=SUM(1;1)", editResult.text);
    assertEquals(8, editResult.caretPositionAfterEdit);
  }

  public void testEditExtraParameterText0()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 0, "1", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=SUM(2)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=SUM(1)", editResult.text);
    assertEquals(6, editResult.caretPositionAfterEdit);
  }

  public void testGlobalReplaceAgainstEmpty()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, -1, "SUM(1; (1 + 1))", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=SUM()");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=SUM(1; (1 + 1))", editResult.text);
    assertEquals(16, editResult.caretPositionAfterEdit);
  }

  public void testParameterReplacement()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 1, "SUM(1; (1 + 1))", false);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=IF(;;)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=IF(;SUM(1; (1 + 1));)", editResult.text);
    assertEquals(20, editResult.caretPositionAfterEdit);
  }

  public void testParameterReplacementFirst()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 0, "SUM(1; (1 + 1))", false);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=IF(;;)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=IF(SUM(1; (1 + 1));;)", editResult.text);
    assertEquals(19, editResult.caretPositionAfterEdit);
  }

  public void testParameterReplacementLast()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 2, "SUM(1; (1 + 1))", false);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=IF(;;)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=IF(;;SUM(1; (1 + 1)))", editResult.text);
    assertEquals(21, editResult.caretPositionAfterEdit);
  }

  public void testNestedParameterReplacement()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 1, "AND(1; (1 + 1))", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=IF(;SUM();)");
    final FunctionInformation fn = doc.getFunctionForPosition(9);
    assertEquals("SUM", fn.getCanonicalName());

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=IF(;SUM(;AND(1; (1 + 1)));)", editResult.text);
    assertEquals(25, editResult.caretPositionAfterEdit);
  }

  public void testNestedParameterReplacement2()
  {
    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 0, "AND(1; (1 + 1))", true);
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=IF(;SUM();)");
    final FunctionInformation fn = doc.getFunctionForPosition(9);
    assertEquals("SUM", fn.getCanonicalName());

    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=IF(;SUM(AND(1; (1 + 1)));)", editResult.text);
    assertEquals(24, editResult.caretPositionAfterEdit);
  }

  public void testCatchAllParameterReplacementFixedPart()
  {
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=MESSAGE(\"Test\"; 1 ; 2)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 0, "[Some parameter]", true);
    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=MESSAGE([Some parameter]; 1 ; 2)", editResult.text);
    assertEquals(25, editResult.caretPositionAfterEdit);
  }

  public void testCatchAllParameterReplacementSoftPart()
  {
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=MESSAGE(\"Test\"; 1 ; 2)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 2, "[Some parameter]", true);
    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=MESSAGE(\"Test\"; 1 ;[Some parameter])", editResult.text);
    assertEquals(36, editResult.caretPositionAfterEdit);
  }

  public void testCatchAllParameterReplacementSoftPart2()
  {
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=MESSAGE(\"Test\"; 1 ; 2)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 3, "[Some parameter]", true);
    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, doc.getText());

    assertEquals("=MESSAGE(\"Test\"; 1 ; 2;[Some parameter])", editResult.text);
    assertEquals(39, editResult.caretPositionAfterEdit);
  }

  public void testOptimizeCatchAll()
  {
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=MESSAGE(\"Test\";;;;)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 3, "[Some parameter]", true);
    String text = doc.getText();
    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, text);

    assertEquals("=MESSAGE(\"Test\";;;[Some parameter])", editResult.text);
    assertEquals(34, editResult.caretPositionAfterEdit);
  }

  public void testOptimizeCatchAll2()
  {
    final FormulaDocument doc = new FormulaDocument();
    doc.setText("=MESSAGE(\"Test\";;;;;;)");
    final FunctionInformation fn = doc.getFunctionForPosition(1);

    final ParameterUpdateEvent event = new ParameterUpdateEvent(this, 3, "[Some parameter]", true);
    String text = doc.getText();
    final FunctionParameterEditHelper.EditResult editResult =
        FunctionParameterEditHelper.buildFormulaText(event, fn, text);

    assertEquals("=MESSAGE(\"Test\";;;[Some parameter])", editResult.text);
    assertEquals(34, editResult.caretPositionAfterEdit);
  }
}
TOP

Related Classes of org.pentaho.openformula.ui.util.FunctionParameterEditHelperTest

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.