Package com.ibm.icu.dev.test.bidi

Source Code of com.ibm.icu.dev.test.bidi.TestFailureRecovery

/*
*******************************************************************************
*   Copyright (C) 2007, International Business Machines
*   Corporation and others.  All Rights Reserved.
*******************************************************************************
*/

package com.ibm.icu.dev.test.bidi;

import com.ibm.icu.text.Bidi;

/**
* Regression test for Bidi failure recovery
*
* @author Lina Kemmel, Matitiahu Allouche
*/

public class TestFailureRecovery extends BidiTest {

    public void testFailureRecovery()
    {
        logln("\nEntering TestFailureRecovery\n");
        Bidi bidi = new Bidi();
        try {
            bidi.setPara("abc", (byte)(Bidi.LEVEL_DEFAULT_LTR - 1), null);
            errln("Bidi.setPara did not fail when passed too big para level");
        } catch (IllegalArgumentException e) {
            logln("OK: Got exception for bidi.setPara(..., Bidi.LEVEL_DEFAULT_LTR - 1, ...)"
                    + " as expected: " + e.getMessage());
        }
        try {
            bidi.setPara("abc", (byte)(-1), null);
            errln("Bidi.setPara did not fail when passed negative para level");
        } catch (IllegalArgumentException e) {
            logln("OK: Got exception for bidi.setPara(..., -1, ...)"
                    + " as expected: " + e.getMessage());
        }
        try {
            Bidi.writeReverse(null, 0);
            errln("Bidi.writeReverse did not fail when passed a null string");
        } catch (IllegalArgumentException e) {
            logln("OK: Got exception for Bidi.writeReverse(null) as expected: "
                  + e.getMessage());
        }
        bidi = new Bidi();
        try {
            bidi.setLine(0, 1);
            errln("bidi.setLine did not fail when called before valid setPara()");
        } catch (IllegalStateException e) {
            logln("OK: Got exception for Bidi.setLine(0, 1) as expected: "
                  + e.getMessage());
        }
        try {
            bidi.getDirection();
            errln("bidi.getDirection did not fail when called before valid setPara()");
        } catch (IllegalStateException e) {
            logln("OK: Got exception for Bidi.getDirection() as expected: "
                  + e.getMessage());
        }
        bidi.setPara("abc", Bidi.LTR, null);
        try {
            bidi.getLevelAt(3);
            errln("bidi.getLevelAt did not fail when called with bad argument");
        } catch (IllegalArgumentException e) {
            logln("OK: Got exception for Bidi.getLevelAt(3) as expected: "
                  + e.getMessage());
        }
        try {
            bidi = new Bidi(-1, 0);
            errln("Bidi constructor did not fail when called with bad argument");
        } catch (IllegalArgumentException e) {
            logln("OK: Got exception for Bidi(-1,0) as expected: "
                  + e.getMessage());
        }
        bidi = new Bidi(2, 1);
        try {
            bidi.setPara("abc", Bidi.LTR, null);
            errln("setPara did not fail when called with text too long");
        } catch (OutOfMemoryError e) {
            logln("OK: Got exception for setPara(\"abc\") as expected: "
                  + e.getMessage());
        }
        try {
            bidi.setPara("=2", Bidi.RTL, null);
            bidi.countRuns();
            errln("countRuns did not fail when called for too many runs");
        } catch (OutOfMemoryError e) {
            logln("OK: Got exception for countRuns as expected: "
                  + e.getMessage());
        }
        int rm = bidi.getReorderingMode();
        bidi.setReorderingMode(Bidi.REORDER_DEFAULT - 1);
        if (rm != bidi.getReorderingMode()) {
            errln("setReorderingMode with bad argument #1 should have no effect");
        }
        bidi.setReorderingMode(9999);
        if (rm != bidi.getReorderingMode()) {
            errln("setReorderingMode with bad argument #2 should have no effect");
        }
        /* Try a surrogate char */
        bidi = new Bidi();
        bidi.setPara("\uD800\uDC00", Bidi.RTL, null);
        if (bidi.getDirection() != Bidi.MIXED) {
            errln("getDirection for 1st surrogate char should be MIXED");
        }
        byte[] levels = new byte[] {6,5,4};
        try {
            bidi.setPara("abc", (byte)5, levels);
            errln("setPara did not fail when called with bad levels");
        } catch (IllegalArgumentException e) {
            logln("OK: Got exception for setPara(..., levels) as expected: "
                  + e.getMessage());
        }

        logln("\nExiting TestFailureRecovery\n");
    }


    public static void main(String[] args) {
        try {
            new TestFailureRecovery().run(args);
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}
TOP

Related Classes of com.ibm.icu.dev.test.bidi.TestFailureRecovery

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.