]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / bidi / TestFailureRecovery.java
1 /*\r
2 *******************************************************************************\r
3 *   Copyright (C) 2007, International Business Machines\r
4 *   Corporation and others.  All Rights Reserved.\r
5 *******************************************************************************\r
6 */\r
7 \r
8 package com.ibm.icu.dev.test.bidi;\r
9 \r
10 import com.ibm.icu.text.Bidi;\r
11 \r
12 /**\r
13  * Regression test for Bidi failure recovery\r
14  *\r
15  * @author Lina Kemmel, Matitiahu Allouche\r
16  */\r
17 \r
18 public class TestFailureRecovery extends BidiTest {\r
19 \r
20     public void testFailureRecovery()\r
21     {\r
22         logln("\nEntering TestFailureRecovery\n");\r
23         Bidi bidi = new Bidi();\r
24         try {\r
25             bidi.setPara("abc", (byte)(Bidi.LEVEL_DEFAULT_LTR - 1), null);\r
26             errln("Bidi.setPara did not fail when passed too big para level");\r
27         } catch (IllegalArgumentException e) {\r
28             logln("OK: Got exception for bidi.setPara(..., Bidi.LEVEL_DEFAULT_LTR - 1, ...)"\r
29                     + " as expected: " + e.getMessage());\r
30         }\r
31         try {\r
32             bidi.setPara("abc", (byte)(-1), null);\r
33             errln("Bidi.setPara did not fail when passed negative para level");\r
34         } catch (IllegalArgumentException e) {\r
35             logln("OK: Got exception for bidi.setPara(..., -1, ...)"\r
36                     + " as expected: " + e.getMessage());\r
37         }\r
38         try {\r
39             Bidi.writeReverse(null, 0);\r
40             errln("Bidi.writeReverse did not fail when passed a null string");\r
41         } catch (IllegalArgumentException e) {\r
42             logln("OK: Got exception for Bidi.writeReverse(null) as expected: "\r
43                   + e.getMessage());\r
44         }\r
45         bidi = new Bidi();\r
46         try {\r
47             bidi.setLine(0, 1);\r
48             errln("bidi.setLine did not fail when called before valid setPara()");\r
49         } catch (IllegalStateException e) {\r
50             logln("OK: Got exception for Bidi.setLine(0, 1) as expected: "\r
51                   + e.getMessage());\r
52         }\r
53         try {\r
54             bidi.getDirection();\r
55             errln("bidi.getDirection did not fail when called before valid setPara()");\r
56         } catch (IllegalStateException e) {\r
57             logln("OK: Got exception for Bidi.getDirection() as expected: "\r
58                   + e.getMessage());\r
59         }\r
60         bidi.setPara("abc", Bidi.LTR, null);\r
61         try {\r
62             bidi.getLevelAt(3);\r
63             errln("bidi.getLevelAt did not fail when called with bad argument");\r
64         } catch (IllegalArgumentException e) {\r
65             logln("OK: Got exception for Bidi.getLevelAt(3) as expected: "\r
66                   + e.getMessage());\r
67         }\r
68         try {\r
69             bidi = new Bidi(-1, 0);\r
70             errln("Bidi constructor did not fail when called with bad argument");\r
71         } catch (IllegalArgumentException e) {\r
72             logln("OK: Got exception for Bidi(-1,0) as expected: "\r
73                   + e.getMessage());\r
74         }\r
75         bidi = new Bidi(2, 1);\r
76         try {\r
77             bidi.setPara("abc", Bidi.LTR, null);\r
78             errln("setPara did not fail when called with text too long");\r
79         } catch (OutOfMemoryError e) {\r
80             logln("OK: Got exception for setPara(\"abc\") as expected: "\r
81                   + e.getMessage());\r
82         }\r
83         try {\r
84             bidi.setPara("=2", Bidi.RTL, null);\r
85             bidi.countRuns();\r
86             errln("countRuns did not fail when called for too many runs");\r
87         } catch (OutOfMemoryError e) {\r
88             logln("OK: Got exception for countRuns as expected: "\r
89                   + e.getMessage());\r
90         }\r
91         int rm = bidi.getReorderingMode();\r
92         bidi.setReorderingMode(Bidi.REORDER_DEFAULT - 1);\r
93         if (rm != bidi.getReorderingMode()) {\r
94             errln("setReorderingMode with bad argument #1 should have no effect");\r
95         }\r
96         bidi.setReorderingMode(9999);\r
97         if (rm != bidi.getReorderingMode()) {\r
98             errln("setReorderingMode with bad argument #2 should have no effect");\r
99         }\r
100         /* Try a surrogate char */\r
101         bidi = new Bidi();\r
102         bidi.setPara("\uD800\uDC00", Bidi.RTL, null);\r
103         if (bidi.getDirection() != Bidi.MIXED) {\r
104             errln("getDirection for 1st surrogate char should be MIXED");\r
105         }\r
106         byte[] levels = new byte[] {6,5,4};\r
107         try {\r
108             bidi.setPara("abc", (byte)5, levels);\r
109             errln("setPara did not fail when called with bad levels");\r
110         } catch (IllegalArgumentException e) {\r
111             logln("OK: Got exception for setPara(..., levels) as expected: "\r
112                   + e.getMessage());\r
113         }\r
114 \r
115         logln("\nExiting TestFailureRecovery\n");\r
116     }\r
117 \r
118 \r
119     public static void main(String[] args) {\r
120         try {\r
121             new TestFailureRecovery().run(args);\r
122         }\r
123         catch (Exception e) {\r
124             System.out.println(e);\r
125         }\r
126     }\r
127 }\r