1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* 3aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin******************************************************************************* 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Copyright (C) 2001-2007, International Business Machines 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin* Corporation and others. All Rights Reserved. 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin******************************************************************************* 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin*/ 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.bidi; 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 11aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.Bidi; 123a45e58d9461ee00f295ca8a6a29ef0860559e7ePaul Duffinimport org.junit.runner.RunWith; 133a45e58d9461ee00f295ca8a6a29ef0860559e7ePaul Duffinimport android.icu.junit.IcuTestFmwkRunner; 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 16aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Regression test for variants to the UBA. 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * 18aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * @author Lina Kemmel, Matitiahu Allouche 19aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 213a45e58d9461ee00f295ca8a6a29ef0860559e7ePaul Duffin@RunWith(IcuTestFmwkRunner.class) 22aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpublic class TestReorderRunsOnly extends BidiTest { 23aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 24aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 25aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin static class TestCase { 26aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String textIn; 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String textOut[][]; 28aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int noroundtrip[]; 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 30aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin TestCase(String in, String[][] out, int[] nrd) { 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin this.textIn = in; 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin this.textOut = out; 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin this.noroundtrip = nrd; 34aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin static final TestCase testCases[] = { 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("ab 234 896 de", // 0 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"de 896 ab 234", "de 896 ab 234"}, 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"ab 234 @896@ de", "de 896 ab 234"}}, 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("abcGHI", // 1 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"GHIabc", "GHIabc"}, {"GHIabc", "GHIabc"}}, 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("a.>67->", // 2 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"<-67<.a", "<-67<.a"}, {"<-67<.a", "<-67<.a"}}, 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("-=%$123/ *", // 3 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"* /%$123=-", "* /%$123=-"}, 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"* /%$123=-", "* /%$123=-"}}, 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("abc->12..>JKL", // 4 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"JKL<..12<-abc", "JKL<..abc->12"}, 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"JKL<..12<-abc", "JKL<..abc->12"}}, 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("JKL->12..>abc", // 5 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"abc<..JKL->12", "abc<..12<-JKL"}, 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"abc<..JKL->12", "abc<..12<-JKL"}}, 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("123->abc", // 6 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"abc<-123", "abc<-123"}, 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"abc&<-123", "abc<-123"}}, 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {1, 0}), 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("123->JKL", // 7 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"JKL<-123", "123->JKL"}, 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"JKL<-123", "JKL<-@123"}}, 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 1}), 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("*>12.>34->JKL", // 8 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"JKL<-34<.12<*", "12.>34->JKL<*"}, 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"JKL<-34<.12<*", "JKL<-@34<.12<*"}}, 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 1}), 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("*>67.>89->JKL", // 9 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"67.>89->JKL<*", "67.>89->JKL<*"}, 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"67.>89->JKL<*", "67.>89->JKL<*"}}, 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("* /abc-=$%123", // 10 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"$%123=-abc/ *", "abc-=$%123/ *"}, 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"$%123=-abc/ *", "abc-=$%123/ *"}}, 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("* /$%def-=123", // 11 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"123=-def%$/ *", "def-=123%$/ *"}, 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"123=-def%$/ *", "def-=123%$/ *"}}, 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("-=GHI* /123%$", // 12 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"GHI* /123%$=-", "123%$/ *GHI=-"}, 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"GHI* /123%$=-", "123%$/ *GHI=-"}}, 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("-=%$JKL* /123", // 13 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"JKL* /%$123=-", "123/ *JKL$%=-"}, 90aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"JKL* /%$123=-", "123/ *JKL$%=-"}}, 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("ab =#CD *?450", // 14 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"CD *?450#= ab", "450?* CD#= ab"}, 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"CD *?450#= ab", "450?* CD#= ab"}}, 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("ab 234 896 de", // 15 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"de 896 ab 234", "de 896 ab 234"}, 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"ab 234 @896@ de", "de 896 ab 234"}}, 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("abc-=%$LMN* /123",// 16 101aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"LMN* /%$123=-abc", "123/ *LMN$%=-abc"}, 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"LMN* /%$123=-abc", "123/ *LMN$%=-abc"}}, 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}), 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("123->JKL&MN&P", // 17 105aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"JKLMNP<-123", "123->JKLMNP"}, 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"JKLMNP<-123", "JKLMNP<-@123"}}, 107aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 1}), 108aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestCase("123", // 18 just one run 109aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new String[][] {{"123", "123"}, 110aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin {"123", "123"}}, 111aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new int[] {0, 0}) 112aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 113aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 114aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void testReorderRunsOnly() { 115aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 116aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Bidi bidi = new Bidi(); 117aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Bidi bidiL2V = new Bidi(); 118aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String src, dest, visual1, visual2; 119aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String srcU16, destU16, visual1U16, visual2U16; 120aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int option, i, j, nCases; 121aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin byte level; 122aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 123aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("\nEntering TestReorderRunsOnly\n"); 124aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY); 125aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidiL2V.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS); 126aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 127aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (option = 0; option < 2; option++) { 128aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setReorderingOptions(option == 0 ? Bidi.OPTION_REMOVE_CONTROLS 129aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin : Bidi.OPTION_INSERT_MARKS); 130aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (i = 0, nCases = testCases.length; i < nCases; i++) { 131aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin src = testCases[i].textIn; 132aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin srcU16 = pseudoToU16(src); 133aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (j = 0; j < 2; j++) { 134aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Now doing test for option " + option + 135aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ", case " + i + ", level " + j); 136aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin level = (byte)j; 137aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setPara(srcU16, level, null); 138aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin destU16 = bidi.writeReordered(Bidi.DO_MIRRORING); 139aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin dest = u16ToPseudo(destU16); 140aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin checkWhatYouCan(bidi, src, dest); 141aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("Reorder runs only failed for case " + i, 142aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin testCases[i].textOut[option][level], 143aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin dest, src, null, null, Byte.toString(level)); 144aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 145aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if ((option == 0) && (testCases[i].noroundtrip[level] > 0)) { 146aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin continue; 147aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 148aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidiL2V.setPara(srcU16, level, null); 149aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin visual1U16 = bidiL2V.writeReordered(Bidi.DO_MIRRORING); 150aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin visual1 = u16ToPseudo(visual1U16); 151aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin checkWhatYouCan(bidiL2V, src, visual1); 152aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidiL2V.setPara(destU16, (byte)(level^1), null); 153aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin visual2U16 = bidiL2V.writeReordered(Bidi.DO_MIRRORING); 154aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin visual2 = u16ToPseudo(visual2U16); 155aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin checkWhatYouCan(bidiL2V, dest, visual2); 156aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("Round trip failed for case " + i, 157aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin visual1, visual2, src, 158aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "REORDER_RUNS_ONLY (2)", 159aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin option == 0 ? "0" : "OPTION_INSERT_MARKS", 160aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin Byte.toString(level)); 161aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 162aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 163aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 164aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 165aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* test with null or empty text */ 166aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int paras; 167aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setPara((String)null, Bidi.LTR, null); 168aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin paras = bidi.countParagraphs(); 169aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("\nInvalid number of paras #1 (should be 0): ", 0, paras); 170aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setPara((char[])null, Bidi.LTR, null); 171aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin paras = bidi.countParagraphs(); 172aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("\nInvalid number of paras #2 (should be 0): ", 0, paras); 173aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setPara("", Bidi.LTR, null); 174aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin paras = bidi.countParagraphs(); 175aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("\nInvalid number of paras #3 (should be 0): ", 0, paras); 176aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin bidi.setPara(new char[0], Bidi.LTR, null); 177aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin paras = bidi.countParagraphs(); 178aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("\nInvalid number of paras #4 (should be 0): ", 0, paras); 179aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 180aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("\nExiting TestReorderRunsOnly\n"); 181aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 182aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 183aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 184aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static void main(String[] args) { 185aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 186aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new TestReorderRunsOnly().run(args); 187aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 188aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin catch (Exception e) { 189aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin System.out.println(e); 190aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 191aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 192aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 193aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 194aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 195