Package org.pentaho.test.platform.plugin

Source Code of org.pentaho.test.platform.plugin.MultipleComponentTest

/*!
* 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) 2002-2013 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.test.platform.plugin;

import org.pentaho.commons.connection.DataUtilities;
import org.pentaho.commons.connection.IPentahoMetaData;
import org.pentaho.commons.connection.IPentahoResultSet;
import org.pentaho.commons.connection.memory.MemoryMetaData;
import org.pentaho.commons.connection.memory.MemoryResultSet;
import org.pentaho.platform.api.engine.AuditException;
import org.pentaho.platform.api.engine.IOutputHandler;
import org.pentaho.platform.api.engine.IRuntimeContext;
import org.pentaho.platform.api.engine.InvalidParameterException;
import org.pentaho.platform.api.repository.ContentException;
import org.pentaho.platform.api.repository.IRuntimeElement;
import org.pentaho.platform.api.repository.IRuntimeRepository;
import org.pentaho.platform.api.repository.RepositoryException;
import org.pentaho.platform.api.util.PentahoChainedException;
import org.pentaho.platform.engine.core.output.SimpleOutputHandler;
import org.pentaho.platform.engine.core.solution.SimpleParameterProvider;
import org.pentaho.platform.engine.core.system.PathBasedSystemSettings;
import org.pentaho.platform.engine.core.system.StandaloneSession;
import org.pentaho.platform.engine.services.runtime.SimpleRuntimeElement;
import org.pentaho.platform.plugin.services.connections.sql.SQLResultSetException;
import org.pentaho.platform.plugin.services.messages.Messages;
import org.pentaho.platform.repository.SimpleRuntimeRepository;
import org.pentaho.platform.util.FileHelper;
import org.pentaho.platform.util.JVMParameterProvider;
import org.pentaho.test.platform.engine.core.BaseTest;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

//import java.text.SimpleDateFormat;
//import org.pentaho.platform.api.engine.IActionParameter;

@SuppressWarnings( "nls" )
public class MultipleComponentTest extends BaseTest {

  /**
   * This Test Case runs multiple small action sequences which improve test coverage.
   */

  private static final String HW_TEST_NAME = "MultipleComponentTest_HelloWorld_"; //$NON-NLS-1$

  private static final String HW_TEST_EXTN = ".txt"; //$NON-NLS-1$

  private static final String RC_TEST_NAME = "MultipleComponentTest_ReportCharts_"; //$NON-NLS-1$

  //  private static final String RC_TEST_EXTN = ".html"; //$NON-NLS-1$
  //
  //  private static final String DS_TEST_NAME = "MultipleComponentTest_DynamicSQL_"; //$NON-NLS-1$
  //
  //  private static final String DS_TEST_EXTN = ".html"; //$NON-NLS-1$

  private ByteArrayOutputStream lastStream;

  private static final String SOLUTION_PATH = "test-src/solution";

  public String getSolutionPath() {
    return SOLUTION_PATH;
  }

  public Map getRequiredListeners() {
    Map listeners = super.getRequiredListeners();
    listeners.put( "jfree-report", "jfree-report" ); //$NON-NLS-1$ //$NON-NLS-2$
    return listeners;
  }

  public void startTest() {
    super.startTest();
  }

  public void finishTest() {
    super.finishTest();
  }

  public String getBaseUrl() {
    return "http://localhost:9876/pentaho/"; //$NON-NLS-1$
  }

  protected OutputStream getOutputStream( String testName, String extension ) {
    //
    // The reportchart reports are huge (>500k). So, for these, write the
    // output to a file (in test/tmp). Otherwise, use a ByteArrayOutputStream
    //
    if ( testName.indexOf( RC_TEST_NAME ) >= 0 ) {
      return super.getOutputStream( testName, extension );
    } else {
      lastStream = new ByteArrayOutputStream();
      return lastStream;
    }
  }

  protected InputStream getInputStreamFromOutput( String testName, String extension ) {

    //
    // Either read from the file for the report charts, or just
    // return the byte array output stream wrapped as an input stream.
    //
    if ( testName.indexOf( RC_TEST_NAME ) >= 0 ) {
      return super.getInputStreamFromOutput( testName, extension );
    } else {
      return new ByteArrayInputStream( lastStream.toByteArray() );
    }
  }

  public void setUp() {
    super.setUp();
  }

  public void tearDown() {
    super.tearDown();
  }

  public IOutputHandler getOutputHandler( OutputStream stream ) {
    SimpleOutputHandler outputHandler = new SimpleOutputHandler( stream, true ); // Allow feedback for this test
    outputHandler.setOutputPreference( IOutputHandler.OUTPUT_TYPE_DEFAULT );
    return outputHandler;
  }

  private IPentahoResultSet getResultSet() {
    Object[][] columnHeaders = new Object[][] { { "COL1", "COL2", "COL3" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    IPentahoMetaData md = new MemoryMetaData( columnHeaders, null );
    MemoryResultSet rs = new MemoryResultSet( md );
    rs.addRow( new Object[] { "DATA1", "DATA2", new Date() } ); //$NON-NLS-1$ //$NON-NLS-2$
    rs.isScrollable();
    return rs;
  }

  private IPentahoResultSet getResultSetFromArray() {
    Object[][] columnHeaders = new Object[][] { { "COL1", "COL2", "COL3" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    Object[][] row = new Object[][] { { "VAL1", "VAL2", "VAL3" }, { "VAL4", "VAL5", "VAL6" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
    return MemoryResultSet.createFromArrays( columnHeaders, row );
  }

  @SuppressWarnings( "unused" )
  private IPentahoResultSet getResultSetFromList() {
    List columnHeadersList = new ArrayList();
    columnHeadersList.add( "COL1" ); //$NON-NLS-1$
    columnHeadersList.add( "COL2" ); //$NON-NLS-1$
    columnHeadersList.add( "COL3" ); //$NON-NLS-1$
    List rowList = new ArrayList();
    rowList.add( "VAL1" ); //$NON-NLS-1$
    rowList.add( "VAL2" ); //$NON-NLS-1$
    rowList.add( "VAL3" ); //$NON-NLS-1$

    return MemoryResultSet.createFromLists( columnHeadersList, rowList );
  }

  private IPentahoResultSet getResultSet2() {
    Object[][] columnHeaders = new Object[][] { { "COL1", "COL2", "COL3" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    List columnHeadersList = new ArrayList();
    columnHeadersList.add( "COL1" ); //$NON-NLS-1$
    columnHeadersList.add( "COL2" ); //$NON-NLS-1$
    columnHeadersList.add( "COL3" ); //$NON-NLS-1$
    MemoryMetaData md2 = new MemoryMetaData( columnHeaders, null );
    //    emd.getAttribute(1, 1, "COL1"); //$NON-NLS-1$
    // emd.setBusinessColumns(columnHeadersList);
    MemoryResultSet rs = new MemoryResultSet( md2 );
    rs.addRow( new Object[] { "DATA1", "DATA2", new Date() } ); //$NON-NLS-1$ //$NON-NLS-2$
    return rs;
  }

  private IPentahoResultSet getResultSet3() {
    List columnHeadersList = new ArrayList();
    columnHeadersList.add( "COL1" ); //$NON-NLS-1$
    columnHeadersList.add( "COL2" ); //$NON-NLS-1$
    columnHeadersList.add( "COL3" ); //$NON-NLS-1$
    MemoryMetaData md3 = new MemoryMetaData( columnHeadersList );
    MemoryResultSet rs = new MemoryResultSet( md3 );
    rs.addRow( new Object[] { "DATA1", "DATA2", new Date() } ); //$NON-NLS-1$ //$NON-NLS-2$
    return rs;
  }

  public void testHelloWorldComponent() {
    startTest();
    String testName = HW_TEST_NAME + System.currentTimeMillis();
    SimpleParameterProvider parameterProvider = new SimpleParameterProvider();
    IRuntimeContext context = run( "/test/platform/HelloWorld.xaction", parameterProvider, testName, HW_TEST_EXTN ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    assertEquals(
        Messages.getInstance().getString( "BaseTest.USER_RUNNING_ACTION_SEQUENCE" ), IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus() ); //$NON-NLS-1$

    InputStream is = this.getInputStreamFromOutput( testName, HW_TEST_EXTN );
    assertNotNull( is ); // Did the test execute properly...
    String lookingFor = "\nHello World. (2B || !2B) That is the question\n"; //$NON-NLS-1$ //$NON-NLS-2$
    String wasRead = FileHelper.getStringFromInputStream( is );
    assertEquals( wasRead, lookingFor );
    finishTest();
  }

  /*
   * public void testCrosstab() { startTest(); IRuntimeContext context = run("test", "rules", "CrossTabTest.xaction");
   * //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals(
   * Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS,
   * context.getStatus()); //$NON-NLS-1$ IActionParameter rtn = context.getOutputParameter("rule-result"); //$NON-NLS-1$
   * assertNotNull(rtn); IPentahoResultSet resultset = (IPentahoResultSet) rtn.getValue();
   * assertEquals(resultset.getRowCount(), 7); Object[][] colHeaders = resultset.getMetaData().getColumnHeaders();
   * assertEquals(colHeaders[0][0], "DEPARTMENT"); //$NON-NLS-1$ assertEquals(colHeaders[0][1], "Central"); //$NON-NLS-1$
   * assertEquals(colHeaders[0][2], "Western"); //$NON-NLS-1$ assertEquals(colHeaders[0][3], "Southern"); //$NON-NLS-1$
   * assertEquals(colHeaders[0][4], "Eastern"); //$NON-NLS-1$
   *
   * finishTest(); }
   */

  public void testMiscExceptionClasses() {
    // Making sure we create an instance of all the Pentaho
    // Exception classes.
    startTest();
    Exception ex = new RepositoryException();
    Exception ex2 = new RepositoryException( "Ignored" ); //$NON-NLS-1$
    Exception ex3 = new RepositoryException( ex2 );
    Exception ex4 = new RepositoryException( "Ignored", ex3 ); //$NON-NLS-1$
    Exception ex5 = new AuditException();
    Exception ex6 = new AuditException( "Ignored" ); //$NON-NLS-1$
    Exception ex7 = new AuditException( "Ignored", ex ); //$NON-NLS-1$
    Exception ex8 = new AuditException( ex4 );
    ex = new ContentException( "Ignored" ); //$NON-NLS-1$
    ex = new ContentException( "Ignored", ex5 ); //$NON-NLS-1$
    ex = new ContentException( ex6 );
    ex = new InvalidParameterException();
    ex = new SQLResultSetException();
    ex = new PentahoChainedException();
    ex = new PentahoChainedException( "Ignored" ); //$NON-NLS-1$
    ex = new PentahoChainedException( "Ignored", ex7 ); //$NON-NLS-1$
    ex = new PentahoChainedException( ex8 );
    finishTest();
  }

  /*
   * public void testReportCharts() { startTest(); SimpleParameterProvider parameterProvider = new
   * SimpleParameterProvider(); parameterProvider.setParameter("chart_type", "multipie"); //$NON-NLS-1$ //$NON-NLS-2$
   * parameterProvider.setParameter("output-type", "html"); //$NON-NLS-1$ //$NON-NLS-2$ long curTime =
   * System.currentTimeMillis(); String testName = RC_TEST_NAME + "multipie_" + curTime; //$NON-NLS-1$ IRuntimeContext
   * context = run( "test", "reporting/JFreeReportChartTypes", "JFreeReport_Chart_ChartTypes.xaction",
   * parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals(
   * Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS,
   * context.getStatus()); //$NON-NLS-1$ InputStream is = this.getInputStreamFromOutput(testName, RC_TEST_EXTN);
   * assertNotNull(is); try { is.close(); } catch (Exception ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "line"); //$NON-NLS-1$ //$NON-NLS-2$ testName = RC_TEST_NAME + "line_"
   * + curTime; //$NON-NLS-1$ context = run( "test", "reporting/JFreeReportChartTypes",
   * "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ is =
   * this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); try { is.close(); } catch (Exception
   * ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "area"); //$NON-NLS-1$ //$NON-NLS-2$ testName = RC_TEST_NAME + "area_"
   * + curTime; //$NON-NLS-1$ context = run( "test", "reporting/JFreeReportChartTypes",
   * "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ is =
   * this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); try { is.close(); } catch (Exception
   * ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "stackedarea"); //$NON-NLS-1$ //$NON-NLS-2$ testName = RC_TEST_NAME +
   * "stackedarea_" + curTime; //$NON-NLS-1$ context = run( "test", "reporting/JFreeReportChartTypes",
   * "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ is =
   * this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); try { is.close(); } catch (Exception
   * ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "bar"); //$NON-NLS-1$ //$NON-NLS-2$ testName = RC_TEST_NAME + "bar_" +
   * curTime; //$NON-NLS-1$ context = run( "test", "reporting/JFreeReportChartTypes",
   * "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ is =
   * this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); try { is.close(); } catch (Exception
   * ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "stackedbar"); //$NON-NLS-1$ //$NON-NLS-2$ testName = RC_TEST_NAME +
   * "stackedbar_" + curTime; //$NON-NLS-1$ context = run( "test", "reporting/JFreeReportChartTypes",
   * "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ is =
   * this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); try { is.close(); } catch (Exception
   * ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "stackedbarpercentages"); //$NON-NLS-1$ //$NON-NLS-2$ testName =
   * RC_TEST_NAME + "stackedbarpercentages_" + curTime; //$NON-NLS-1$ context = run( "test",
   * "reporting/JFreeReportChartTypes", "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName,
   * RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertEquals(
   * Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"), IRuntimeContext.RUNTIME_STATUS_SUCCESS,
   * context.getStatus()); //$NON-NLS-1$ is = this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is);
   * try { is.close(); } catch (Exception ignored) { }
   *
   * parameterProvider.setParameter("chart_type", "pie"); //$NON-NLS-1$ //$NON-NLS-2$ testName = RC_TEST_NAME + "pie_" +
   * curTime; //$NON-NLS-1$ context = run( "test", "reporting/JFreeReportChartTypes",
   * "JFreeReport_Chart_ChartTypes.xaction", parameterProvider, testName, RC_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ is =
   * this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); try { is.close(); } catch (Exception
   * ignored) { }
   *
   * finishTest(); }
   */

  /*
   * public void testDynamicSQLAndSecureFilter() { startTest(); SimpleParameterProvider parameterProvider = new
   * SimpleParameterProvider(); // Add no parameters yet for first run String testName = DS_TEST_NAME +
   * "parameterResponse_" + System.currentTimeMillis(); //$NON-NLS-1$ IRuntimeContext context = run( "test",
   * "reporting", "DynamicSQLSample.xaction", parameterProvider, testName, DS_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$
   * //$NON-NLS-3$ assertEquals( Messages.getInstance().getString("BaseTest.USER_RUNNING_ACTION_SEQUENCE"),
   * IRuntimeContext.RUNTIME_STATUS_SUCCESS, context.getStatus()); //$NON-NLS-1$ // Should have created a Feedback html
   * page in the output. InputStream is = this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is);
   * String feedbackHTML = FileHelper.getStringFromInputStream(is); assertNotNull(feedbackHTML); // Make sure it's
   * feedback HTML we have...
   * assertTrue(feedbackHTML.indexOf("Use this form to supply the parameters required for this content") > 0);
   * //$NON-NLS-1$ assertTrue(feedbackHTML.indexOf("Select: Department or Position") > 0); //$NON-NLS-1$ // OK - now,
   * supply all the parameters and re-run. parameterProvider.setParameter("deptorposn", "department"); //$NON-NLS-1$
   * //$NON-NLS-2$ parameterProvider.setParameter("type", "html"); //$NON-NLS-1$ //$NON-NLS-2$
   * parameterProvider.setParameter("region", "Central"); //$NON-NLS-1$ //$NON-NLS-2$ testName = DS_TEST_NAME + "report_"
   * + System.currentTimeMillis(); //$NON-NLS-1$ context = run("test", "reporting", "DynamicSQLSample.xaction",
   * parameterProvider, testName, DS_TEST_EXTN); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
   * assertEquals(context.getStatus(), IRuntimeContext.RUNTIME_STATUS_SUCCESS); // Should have created a report html
   * page in the output. is = this.getInputStreamFromOutput(testName, RC_TEST_EXTN); assertNotNull(is); String
   * reportHTML = FileHelper.getStringFromInputStream(is); assertNotNull(reportHTML); // Insure it has information
   * assertTrue(reportHTML.indexOf("Professional Services") > 0); //$NON-NLS-1$
   * assertTrue(reportHTML.indexOf("20,068,039") > 0); //$NON-NLS-1$ finishTest(); }
   */

  public void testSimpleRuntime() {
    // The simple runtime is used by the standalone distribution.
    // This provides some simple tests to exercise the code...
    startTest();
    StandaloneSession session =
        new StandaloneSession( Messages.getInstance().getString( "BaseTest.DEBUG_JUNIT_SESSION" ) ); //$NON-NLS-1$
    IRuntimeRepository srr = new SimpleRuntimeRepository();
    srr.setSession( session );
    IRuntimeElement ele1 = srr.loadElementById( "instanceid", null ); //$NON-NLS-1$
    IRuntimeElement ele2 = srr.newRuntimeElement( "parent", "parentType", true ); //$NON-NLS-1$ //$NON-NLS-2$
    IRuntimeElement ele3 = srr.newRuntimeElement( "parentid", "parentType", "solutionId", true ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

    SimpleRuntimeElement sre = (SimpleRuntimeElement) srr.loadElementById( "instanceid", null ); //$NON-NLS-1$
    List list = sre.getMessages();
    if ( list != null ) {
      for ( int i = 0; i < list.size(); i++ ) {
        System.out.println( "Message " + ( i + 1 ) + list.get( i ) ); //$NON-NLS-1$
      }

      sre.setParentId( "parentid1" ); //$NON-NLS-1$
      sre.setParentType( "parentidType1" ); //$NON-NLS-1$
      sre.setSolutionId( "solutionId1" ); //$NON-NLS-1$
      sre.setReadOnly( true );
      boolean isReadOnly = sre.getReadOnly();
      String parentId = sre.getParentId();
      String parentIdType = sre.getParentType();
      String solutionId = sre.getSolutionId();
      assertEquals( isReadOnly, true );
      assertEquals( parentId, "parentid1" ); //$NON-NLS-1$
      assertEquals( parentIdType, "parentidType1" ); //$NON-NLS-1$
      assertEquals( solutionId, "solutionId1" ); //$NON-NLS-1$
    }
    int revision = sre.getRevision();
    System.out.println( "Revision Value is" + revision ); //$NON-NLS-1$
    sre.setStringProperty( "parentId", "value" ); //$NON-NLS-1$ //$NON-NLS-2$
    BigDecimal tstBD = new BigDecimal( "2.4" ); //$NON-NLS-1$
    ele2.setBigDecimalProperty( "junkBD", tstBD ); //$NON-NLS-1$
    BigDecimal bd = ele2.getBigDecimalProperty( "junkBD" ); //$NON-NLS-1$
    assertEquals( bd, tstBD );
    Date tstDT = new Date();
    ele3.setDateProperty( "junkDT", tstDT ); //$NON-NLS-1$
    Date dt = ele3.getDateProperty( "junkDT" ); //$NON-NLS-1$
    assertEquals( tstDT, dt );
    List l = new ArrayList();
    l.add( "one" ); //$NON-NLS-1$
    l.add( "two" ); //$NON-NLS-1$
    ele1.setListProperty( "SOMELIST", l ); //$NON-NLS-1$
    assertEquals( ele1.getListProperty( "SOMELIST" ), l ); //$NON-NLS-1$
    Long aLong = new Long( 5 );
    ele2.setLongProperty( "SOMELONG", aLong ); //$NON-NLS-1$
    assertEquals( ele2.getLongProperty( "SOMELONG", null ), aLong ); //$NON-NLS-1$
    assertEquals( ele2.getLongProperty( "SOMELONG", 5 ), 5 ); //$NON-NLS-1$
    Map mapProperty = new HashMap();
    mapProperty.put( "mapKey", "mapValue" ); //$NON-NLS-1$ //$NON-NLS-2$
    ele3.setMapProperty( "SOMEMAP", mapProperty ); //$NON-NLS-1$
    assertEquals( ele3.getMapProperty( "SOMEMAP" ), mapProperty ); //$NON-NLS-1$
    ele1.setStringProperty( "SOMESTRING", "SomeStringValue" ); //$NON-NLS-1$ //$NON-NLS-2$
    assertEquals( ele1.getStringProperty( "SOMESTRING" ), "SomeStringValue" ); //$NON-NLS-1$ //$NON-NLS-2$
    assertEquals( ele2.getStringProperty( "DOESNTEXIST", "SomeDefault" ), "SomeDefault" ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

    assertNull( ele1.getStringProperty( "DOESNTEXIST" ) ); //$NON-NLS-1$   
    assertNull( ele1.getBigDecimalProperty( "DOESNTEXIST" ) ); //$NON-NLS-1$
    assertNull( ele2.getDateProperty( "DOESNTEXIST" ) ); //$NON-NLS-1$
    assertNull( ele3.getListProperty( "DOESNTEXIST" ) ); //$NON-NLS-1$
    assertEquals( ele2.getLongProperty( "DOESNTEXIST", 2 ), 2 ); //$NON-NLS-1$
    assertEquals( ele2.getLongProperty( "DOESNTEXIST", new Long( 2 ) ), new Long( 2 ) ); //$NON-NLS-1$
    assertEquals( ele1.getBigDecimalProperty( "DOESNTEXIST", new BigDecimal( "0.23" ) ), new BigDecimal( "0.23" ) ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    Date tmpDate = new Date();
    assertEquals( ele1.getDateProperty( "DOESNTEXIST", tmpDate ), tmpDate ); //$NON-NLS-1$
    Set parmNames = ele1.getParameterNames();
    assertNotNull( parmNames );

    assertFalse( srr.usesHibernate() );

    assertEquals( ele2.getParameterType( "SOMELONG" ), "java.lang.Long" ); //$NON-NLS-1$ //$NON-NLS-2$
    assertEquals( ele2.getParentType(), "parentType" ); //$NON-NLS-1$
    assertEquals( ele3.getParentId(), "parentid" ); //$NON-NLS-1$
    assertEquals( ele1.getInstanceId(), "instanceid" ); //$NON-NLS-1$

    finishTest();
  }

  public void testDataUtility() {
    startTest();
    IPentahoResultSet rs = getResultSet();
    String xmlString = DataUtilities.getXMLString( rs );
    assertTrue( xmlString.indexOf( "DATA2" ) > 0 ); //$NON-NLS-1$
    finishTest();
  }

  public void testDataUtility1() {
    startTest();
    IPentahoResultSet rs1 = getResultSetFromArray();
    String xmlString1 = DataUtilities.getXMLString( rs1 );
    assertTrue( xmlString1.indexOf( "VAL1" ) > 0 ); //$NON-NLS-1$
    finishTest();
  }

  public void testDataUtility3() {
    startTest();
    IPentahoResultSet rs3 = getResultSet2();
    String xmlString3 = DataUtilities.getXMLString( rs3 );
    assertTrue( xmlString3.indexOf( "DATA2" ) > 0 ); //$NON-NLS-1$

    finishTest();
  }

  public void testDataUtility4() {
    startTest();
    IPentahoResultSet rs4 = getResultSet3();
    String xmlString4 = DataUtilities.getXMLString( rs4 );
    assertTrue( xmlString4.indexOf( "DATA2" ) > 0 ); //$NON-NLS-1$  
    finishTest();
  }

  public void testJVMParameterProvider() {
    startTest();
    System.setProperty( "teststring", "test string" ); //$NON-NLS-1$//$NON-NLS-2$
    System.setProperty( "testlong", "32" ); //$NON-NLS-1$//$NON-NLS-2$
    System.setProperty( "testdecimal", "66.6" ); //$NON-NLS-1$//$NON-NLS-2$
    Date someDate = new Date();
    System.setProperty( "testdate", DateFormat.getInstance().format( someDate ) ); //$NON-NLS-1$

    JVMParameterProvider provider = new JVMParameterProvider();

    //  assertEquals(someDate, provider.getDateParameter("testdate", null) ); //$NON-NLS-1$
    assertEquals( someDate, provider.getDateParameter( "bogus", someDate ) ); //$NON-NLS-1$
    assertEquals( 32, provider.getLongParameter( "testlong", 0 ) ); //$NON-NLS-1$
    assertEquals( "test string", provider.getStringParameter( "teststring", null ) ); //$NON-NLS-1$ //$NON-NLS-2$
    assertEquals( new BigDecimal( "66.6" ), provider.getDecimalParameter( "testdecimal", null ) ); //$NON-NLS-1$ //$NON-NLS-2$

    assertEquals( "test string", provider.getParameter( "teststring" ) ); //$NON-NLS-1$ //$NON-NLS-2$
    assertEquals( "string", provider.getParameterType( "teststring" ) ); //$NON-NLS-1$ //$NON-NLS-2$

    Iterator it = provider.getParameterNames();
    while ( it.hasNext() ) {
      String pName = (String) it.next();
      System.out.println( pName + "=" + provider.getStringParameter( pName, null ) ); //$NON-NLS-1$
    }
    finishTest();
  }

  public void testJVMParameterProviderDifferentPath() {
    startTest();
    JVMParameterProvider provider = new JVMParameterProvider();
    assertEquals( 99, provider.getLongParameter( "bogus", 99 ) ); //$NON-NLS-1$
    assertEquals( new BigDecimal( "99" ), provider.getDecimalParameter( "bogus", new BigDecimal( "99" ) ) ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    finishTest();
  }

  public void testJVMParameterProviderDifferentPath2() {
    startTest();
    JVMParameterProvider provider = new JVMParameterProvider();
    try {
      Object parameterValue = provider.getDecimalParameter( "bogus", null ); //$NON-NLS-1$
      System.out.println( "Paramater Value Received is " + parameterValue ); //$NON-NLS-1$
    } catch ( Exception e ) {
      e.printStackTrace();
      assertTrue( "Expected exception was caught", true ); //$NON-NLS-1$
    }
    finishTest();
  }

  /*
   * public void testUIUtil() { List messages = new ArrayList(); messages.add("Error Message One"); //$NON-NLS-1$
   * messages.add("Error Message Two"); //$NON-NLS-1$
   * messages.add("Error: This is the first error Error: message - MultipleComponentTest"); //$NON-NLS-1$ StringBuffer
   * messageBuffer = new StringBuffer(); UIUtil.formatErrorMessage("text/html", "Error Test", messages, messageBuffer);
   * //$NON-NLS-1$ //$NON-NLS-2$ String result = messageBuffer.toString();
   * assertTrue(result.indexOf("Error Message Two")>=0); //$NON-NLS-1$ String msg = UIUtil.getFirstError(messages);
   * assertTrue(msg.indexOf("MultipleComponentTest")>=0); //$NON-NLS-1$ IPentahoResultSet rs = getResultSet();
   * StringBuffer formattedRs = new StringBuffer(); UIUtil.formatResultSetAsHTMLRows(rs, formattedRs);
   * System.out.println(formattedRs.toString()); assertTrue(formattedRs.indexOf("<th>COL3</th>")>=0); //$NON-NLS-1$ }
   */

  public void testPathBasedSystemSettings() {

    PathBasedSystemSettings settings = new PathBasedSystemSettings();
    String cfgPathKey = settings.getSystemSetting( PathBasedSystemSettings.SYSTEM_CFG_PATH_KEY, "" ); //$NON-NLS-1$
    List list = settings.getSystemSettings( PathBasedSystemSettings.SYSTEM_CFG_PATH_KEY );
    for ( int i = 0; i < list.size(); i++ ) {
      System.out.println( "System Settings" + ( i + 1 ) + list.get( i ) ); //$NON-NLS-1$
    }
    System.setProperty( PathBasedSystemSettings.SYSTEM_CFG_PATH_KEY, "" ); //$NON-NLS-1$
    settings.getSystemSetting( "c:/code", PathBasedSystemSettings.SYSTEM_CFG_PATH_KEY, null ); //$NON-NLS-1$
    System.setProperty( PathBasedSystemSettings.SYSTEM_CFG_PATH_KEY, cfgPathKey );
    assertTrue( true );
  }

  public static void main( String[] args ) {
    MultipleComponentTest test = new MultipleComponentTest();
    try {
      test.setUp();
      /*
                    * test.testHelloWorldComponent(); // test.testCrosstab(); test.testMiscExceptionClasses(); //
                    * test.testReportCharts(); // test.testDynamicSQLAndSecureFilter(); test.testPivotViewComponent();
                    * test.testSimpleRuntime(); test.testDataUtility(); test.testDataUtility1();
                    * test.testDataUtility2(); test.testDataUtility3(); test.testDataUtility4();
                    * test.testJVMParameterProvider(); test.testJVMParameterProviderDifferentPath();
                    * test.testJVMParameterProviderDifferentPath2(); test.testUIUtil();
                    */
      test.testPathBasedSystemSettings();
    } finally {
      test.tearDown();
      BaseTest.shutdown();
    }
  }
}
TOP

Related Classes of org.pentaho.test.platform.plugin.MultipleComponentTest

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.