FileDocCategorySizeDatePackage
TestStringUtil.javaAPI DocApache Poi 3.0.110346Mon Jan 01 12:39:46 GMT 2007org.apache.poi.util

TestStringUtil

public class TestStringUtil extends TestCase
Unit test for StringUtil
author
Marc Johnson (mjohnson at apache dot org
author
Glen Stampoultzis (glens at apache.org)
author
Sergei Kozello (sergeikozello at mail.ru)

Fields Summary
Constructors Summary
public TestStringUtil(String name)
Creates new TestStringUtil

param
name

        super( name );
    
Methods Summary
private java.lang.Stringfmt(double num, int minIntDigits, int maxFracDigitis)

        NumberFormat nf = NumberFormat.getInstance();

        if ( minIntDigits != -1 )
        {
            nf.setMinimumIntegerDigits( minIntDigits );
        }
        if ( maxFracDigitis != -1 )
        {
            nf.setMaximumFractionDigits( maxFracDigitis );
        }

        return nf.format( num );
    
public static voidmain(java.lang.String[] ignored_args)
main

param
ignored_args

        System.out.println( "Testing util.StringUtil functionality" );
        junit.textui.TestRunner.run( TestStringUtil.class );
    
protected voidsetUp()

see
junit.framework.TestCase#setUp()

        super.setUp();

        // System.setProperty()
    
public voidtestComplexGetFromUnicode()
Test more complex form of getFromUnicode

        byte[] test_data = new byte[32];
        int index = 0;
        for ( int k = 0; k < 16; k++ )
        {
            test_data[index++] = (byte) 0;
            test_data[index++] = (byte) ( 'a" + k );
        }
        assertEquals( "abcdefghijklmno",
                StringUtil.getFromUnicodeBE( test_data, 0, 15 ) );
        assertEquals( "bcdefghijklmnop",
                StringUtil.getFromUnicodeBE( test_data, 2, 15 ) );
        try
        {
            StringUtil.getFromUnicodeBE( test_data, -1, 16 );
            fail( "Should have caught ArrayIndexOutOfBoundsException" );
        }
        catch ( ArrayIndexOutOfBoundsException ignored )
        {
            // as expected
        }

        try
        {
            StringUtil.getFromUnicodeBE( test_data, 32, 16 );
            fail( "Should have caught ArrayIndexOutOfBoundsException" );
        }
        catch ( ArrayIndexOutOfBoundsException ignored )
        {
            // as expected
        }

        try
        {
            StringUtil.getFromUnicodeBE( test_data, 1, 16 );
            fail( "Should have caught IllegalArgumentException" );
        }
        catch ( IllegalArgumentException ignored )
        {
            // as expected
        }

        try
        {
            StringUtil.getFromUnicodeBE( test_data, 1, -1 );
            fail( "Should have caught IllegalArgumentException" );
        }
        catch ( IllegalArgumentException ignored )
        {
            // as expected
        }
    
public voidtestFormat()

        assertEquals( "This is a test " + fmt( 1.2345, 2, 2 ),
                StringUtil.format( "This is a test %2.2", new Object[]
                {
                    new Double( 1.2345 )
                } ) );
        assertEquals( "This is a test " + fmt( 1.2345, -1, 3 ),
                StringUtil.format( "This is a test %.3", new Object[]
                {
                    new Double( 1.2345 )
                } ) );
        assertEquals( "This is a great test " + fmt( 1.2345, -1, 3 ),
                StringUtil.format( "This is a % test %.3", new Object[]
                {
                    "great", new Double( 1.2345 )
                } ) );
        assertEquals( "This is a test 1",
                StringUtil.format( "This is a test %", new Object[]
                {
                    new Integer( 1 )
                } ) );
        assertEquals( "This is a test 1",
                StringUtil.format( "This is a test %", new Object[]
                {
                    new Integer( 1 ), new Integer( 1 )
                } ) );
        assertEquals( "This is a test 1.x",
                StringUtil.format( "This is a test %1.x", new Object[]
                {
                    new Integer( 1 )
                } ) );
        assertEquals( "This is a test ?missing data?1.x",
                StringUtil.format( "This is a test %1.x", new Object[]
                {
                } ) );
        assertEquals( "This is a test %1.x",
                StringUtil.format( "This is a test \\%1.x", new Object[]
                {
                } ) );
    
public voidtestGetFromUnicodeHighSymbolsWithCodesMoreThan127()
test getFromUnicodeHigh for symbols with code below and more 127

        byte[] test_data = new byte[]{0x22, 0x04,
                                      0x35, 0x04,
                                      0x41, 0x04,
                                      0x42, 0x04,
                                      0x20, 0x00,
                                      0x74, 0x00,
                                      0x65, 0x00,
                                      0x73, 0x00,
                                      0x74, 0x00,
        };


        assertEquals( "\u0422\u0435\u0441\u0442 test",
                StringUtil.getFromUnicodeLE( test_data ) );
    
public voidtestGetFromUnicodeSymbolsWithCodesMoreThan127()
test simple form of getFromUnicode with symbols with code below and more 127

        byte[] test_data = new byte[]{0x04, 0x22,
                                      0x04, 0x35,
                                      0x04, 0x41,
                                      0x04, 0x42,
                                      0x00, 0x20,
                                      0x00, 0x74,
                                      0x00, 0x65,
                                      0x00, 0x73,
                                      0x00, 0x74,
        };

        assertEquals( "\u0422\u0435\u0441\u0442 test",
                StringUtil.getFromUnicodeBE( test_data ) );
    
public voidtestPutCompressedUnicode()
Test putCompressedUnicode

        byte[] output = new byte[100];
        byte[] expected_output =
                {
                    (byte) 'H", (byte) 'e", (byte) 'l", (byte) 'l",
                    (byte) 'o", (byte) ' ", (byte) 'W", (byte) 'o",
                    (byte) 'r", (byte) 'l", (byte) 'd", (byte) 0xAE
                };
        String input = new String( expected_output, StringUtil.getPreferredEncoding() );

        StringUtil.putCompressedUnicode( input, output, 0 );
        for ( int j = 0; j < expected_output.length; j++ )
        {
            assertEquals( "testing offset " + j, expected_output[j],
                    output[j] );
        }
        StringUtil.putCompressedUnicode( input, output,
                100 - expected_output.length );
        for ( int j = 0; j < expected_output.length; j++ )
        {
            assertEquals( "testing offset " + j, expected_output[j],
                    output[100 + j - expected_output.length] );
        }
        try
        {
            StringUtil.putCompressedUnicode( input, output,
                    101 - expected_output.length );
            fail( "Should have caught ArrayIndexOutOfBoundsException" );
        }
        catch ( ArrayIndexOutOfBoundsException ignored )
        {
            // as expected
        }
    
public voidtestPutUncompressedUnicode()
Test putUncompressedUnicode

        byte[] output = new byte[100];
        String input = "Hello World";
        byte[] expected_output =
                {
                    (byte) 'H", (byte) 0, (byte) 'e", (byte) 0, (byte) 'l",
                    (byte) 0, (byte) 'l", (byte) 0, (byte) 'o", (byte) 0,
                    (byte) ' ", (byte) 0, (byte) 'W", (byte) 0, (byte) 'o",
                    (byte) 0, (byte) 'r", (byte) 0, (byte) 'l", (byte) 0,
                    (byte) 'd", (byte) 0
                };

        StringUtil.putUnicodeLE( input, output, 0 );
        for ( int j = 0; j < expected_output.length; j++ )
        {
            assertEquals( "testing offset " + j, expected_output[j],
                    output[j] );
        }
        StringUtil.putUnicodeLE( input, output,
                100 - expected_output.length );
        for ( int j = 0; j < expected_output.length; j++ )
        {
            assertEquals( "testing offset " + j, expected_output[j],
                    output[100 + j - expected_output.length] );
        }
        try
        {
            StringUtil.putUnicodeLE( input, output,
                    101 - expected_output.length );
            fail( "Should have caught ArrayIndexOutOfBoundsException" );
        }
        catch ( ArrayIndexOutOfBoundsException ignored )
        {
            // as expected
        }
    
public voidtestSimpleGetFromUnicode()
test simple form of getFromUnicode

        byte[] test_data = new byte[32];
        int index = 0;

        for ( int k = 0; k < 16; k++ )
        {
            test_data[index++] = (byte) 0;
            test_data[index++] = (byte) ( 'a" + k );
        }

        assertEquals( "abcdefghijklmnop",
                StringUtil.getFromUnicodeBE( test_data ) );