Package org.pentaho.platform.engine.core

Source Code of org.pentaho.platform.engine.core.OutputTest

/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License, version 2 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/gpl-2.0.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 General Public License for more details.
*
*
* Copyright 2006 - 2013 Pentaho Corporation.  All rights reserved.
*/

package org.pentaho.platform.engine.core;

import junit.framework.TestCase;
import org.pentaho.platform.engine.core.output.BufferedContentItem;
import org.pentaho.platform.engine.core.output.MultiContentItem;
import org.pentaho.platform.engine.core.output.MultiOutputStream;
import org.pentaho.platform.engine.core.output.SimpleContentItem;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

@SuppressWarnings( { "all" } )
public class OutputTest extends TestCase {

  public void testBufferedContentItem() throws Exception {

    TestContentListener listener = new TestContentListener();

    BufferedContentItem content = new BufferedContentItem( listener );

    OutputStream out = content.getOutputStream( null );

    content.setMimeType( "text/test" );

    out.write( "test sting".getBytes() );

    content.closeOutputStream();

    InputStream in = content.getInputStream();

    byte[] b = new byte[100];
    int n = in.read( b );

    assertEquals( "test sting", new String( b, 0, n ) );
    assertEquals( "text/test", listener.mimeType );
  }

  public void testMultiContentItem() {

    ByteArrayOutputStream out1 = new ByteArrayOutputStream();
    ByteArrayOutputStream out2 = new ByteArrayOutputStream();

    SimpleContentItem item1 = new SimpleContentItem( out1 );
    SimpleContentItem item2 = new SimpleContentItem( out2 );

    MultiContentItem multiContent = new MultiContentItem();
    multiContent.addContentItem( item1 );
    multiContent.addContentItem( item2 );

    byte[] in = "abcd".getBytes();
    String outStr1 = "";
    String outStr2 = "";

    try {
      OutputStream multi = multiContent.getOutputStream( "" );
      multi.write( 'a' );
      multi.write( in, 1, 2 );
      multi.write( in );
      multiContent.closeOutputStream();
    } catch ( IOException e ) {
      // we should not get here
      assertEquals( "IOException", null, e );
    }
    outStr1 = new String( out1.toByteArray() );
    outStr2 = new String( out2.toByteArray() );

    assertEquals( "Output stream 1", "abcabcd", outStr1 );
    assertEquals( "Output stream 2", "abcabcd", outStr2 );

  }

  public void testMultiContentItemErrors() {

    ByteArrayOutputStream out1 = new ByteArrayOutputStream();
    OutputStream out2 = new MockExceptionOutputStream();

    SimpleContentItem item1 = new SimpleContentItem( out1 );
    SimpleContentItem item2 = new SimpleContentItem( out2 );

    MultiContentItem multiContent = new MultiContentItem();
    multiContent.addContentItem( item1 );
    multiContent.addContentItem( item2 );

    byte[] in = "abcd".getBytes();
    String outStr1 = "";
    String outStr2 = "";

    try {
      OutputStream multi = multiContent.getOutputStream( "" );
      multi.write( 'a' );
      // we should not get here
      assertFalse( "IOException expected", true );
    } catch ( IOException e ) {
      assertNotNull( "IOException expected", e );
    }
    try {
      multiContent.closeOutputStream();
    } catch ( Exception e ) {
      // we should not get here
      assertEquals( "IOException", null, e );
    }
    outStr1 = new String( out1.toByteArray() );

    assertEquals( "Output stream 1", "a", outStr1 );

  }

  public void testMultiStream() {

    ByteArrayOutputStream out1 = new ByteArrayOutputStream();
    ByteArrayOutputStream out2 = new ByteArrayOutputStream();

    ByteArrayOutputStream[] outs = new ByteArrayOutputStream[] { out1, out2 };

    MultiOutputStream multi = new MultiOutputStream( outs );
    byte[] in = "abcd".getBytes();
    String outStr1 = "";
    String outStr2 = "";

    try {
      multi.write( 'a' );
      multi.write( in, 1, 2 );
      multi.write( in );
      multi.close();
    } catch ( IOException e ) {
      // we should not get here
      assertEquals( "IOException", null, e );
    }
    outStr1 = new String( out1.toByteArray() );
    outStr2 = new String( out2.toByteArray() );

    assertEquals( "Output stream 1", "abcabcd", outStr1 );
    assertEquals( "Output stream 2", "abcabcd", outStr2 );
  }

  public void testMultiStreamErrors() {

    ByteArrayOutputStream out1 = new ByteArrayOutputStream();
    MockExceptionOutputStream out2 = new MockExceptionOutputStream();
    ByteArrayOutputStream out3 = new ByteArrayOutputStream();

    OutputStream[] outs = new OutputStream[] { out1, out2, out3 };

    MultiOutputStream multi = new MultiOutputStream( outs );
    byte[] in = "abcd".getBytes();
    String outStr1 = "";
    String outStr2 = "";

    try {
      multi.write( 'a' );
    } catch ( IOException e ) {
      // we expect to get here
      assertEquals( "IOException", "Test Exception", e.getMessage() );
    }
    try {
      multi.write( in, 1, 2 );
    } catch ( IOException e ) {
      // we expect to get here
      assertEquals( "IOException", "Test Exception", e.getMessage() );
    }
    try {
      multi.write( in );
    } catch ( IOException e ) {
      // we expect to get here
      assertEquals( "IOException", "Test Exception", e.getMessage() );
    }
    try {
      multi.close();
    } catch ( IOException e ) {
      // we expect to get here
      assertEquals( "IOException", "Test Exception", e.getMessage() );
    }

    outStr1 = new String( out1.toByteArray() );
    outStr2 = new String( out3.toByteArray() );

    assertEquals( "Output stream 1", "abcabcd", outStr1 );
    assertEquals( "Output stream 2", "abcabcd", outStr2 );
  }

  public void testSimpleContentItem() throws Exception {

    OutputStream out = new ByteArrayOutputStream();
    SimpleContentItem content = new SimpleContentItem();
    content.setMimeType( "test/test" );
    content.setOutputStream( out );
    content.setName( "testname" );

    // assertEquals("wrong value", null, content.getPath() );
    assertNotNull( content.getPath() ); // SimpleContentItem changed to not return null for path.
    assertEquals( "wrong value", "test/test", content.getMimeType() );
    assertEquals( "wrong value", null, content.getInputStream() );
    assertEquals( "wrong value", out, content.getOutputStream( null ) );

    // these should not throw errors
    content.closeOutputStream();

    out = new MockExceptionOutputStream();
    content.setOutputStream( out );

    content.closeOutputStream();

  }

}
TOP

Related Classes of org.pentaho.platform.engine.core.OutputTest

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.