]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / format / IntlTestDateFormatSymbols.java
1 /*****************************************************************************************\r
2  *\r
3  *   Copyright (C) 1996-2010, International Business Machines\r
4  *   Corporation and others.  All Rights Reserved.\r
5  **/\r
6 \r
7 /** \r
8  * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatSymbols\r
9  * Source File: java/text/format/IntlTestDateFormatSymbols.java\r
10  **/\r
11  \r
12 /*\r
13     @test 1.4 98/03/06\r
14     @summary test International Date Format Symbols\r
15 */\r
16 \r
17 package com.ibm.icu.dev.test.format;\r
18 \r
19 import java.util.Locale;\r
20 \r
21 import com.ibm.icu.text.DateFormatSymbols;\r
22 \r
23 public class IntlTestDateFormatSymbols extends com.ibm.icu.dev.test.TestFmwk\r
24 {\r
25     public static void main(String[] args) throws Exception {\r
26         new IntlTestDateFormatSymbols().run(args);\r
27     }\r
28 \r
29     // Test getMonths\r
30     public void TestGetMonths()\r
31     {\r
32         final String[] month;\r
33         DateFormatSymbols symbol;\r
34 \r
35         symbol=new DateFormatSymbols(Locale.getDefault());\r
36 \r
37         month=symbol.getMonths();\r
38         int cnt = month.length;\r
39 \r
40         logln("size = " + cnt);\r
41 \r
42         for (int i=0; i<cnt; ++i)\r
43         {\r
44             logln(month[i]);\r
45         }\r
46     }\r
47 \r
48     public void TestGetMonths2()\r
49     {\r
50         DateFormatSymbols symbol;\r
51         symbol=new DateFormatSymbols(Locale.getDefault());\r
52 \r
53         int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT};\r
54         int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW};\r
55         \r
56         for (int i = 0; i < context.length; i++) {\r
57             for (int j = 0; j < width.length; j++) {\r
58                 String[] month =symbol.getMonths(context[i],width[j]);\r
59                 int cnt = month.length;\r
60 \r
61                 logln("size = " + cnt);\r
62 \r
63                 for (int k = 0; k < month.length; k++) {\r
64                     logln(month[k]);\r
65                 }\r
66             }\r
67         }\r
68     }\r
69     \r
70     public void TestGetWeekdays2(){\r
71         DateFormatSymbols symbol;\r
72         symbol=new DateFormatSymbols(Locale.getDefault());\r
73 \r
74         int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT};\r
75         int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW};\r
76         \r
77         for (int i = 0; i < context.length; i++) {\r
78             for (int j = 0; j < width.length; j++) {\r
79                 String[] wd =symbol.getWeekdays(context[i],width[j]);\r
80                 int cnt = wd.length;\r
81 \r
82                 logln("size = " + cnt);\r
83 \r
84                 for (int k = 0; k < wd.length; k++) {\r
85                     logln(wd[k]);\r
86                 }\r
87             }\r
88         }\r
89         \r
90     }\r
91     \r
92     public void TestGetEraNames(){\r
93         DateFormatSymbols symbol;\r
94         symbol=new DateFormatSymbols(Locale.getDefault());\r
95         String[] s = symbol.getEraNames();\r
96         for (int i = 0; i < s.length; i++) {\r
97             logln(s[i]);\r
98         }\r
99         \r
100     }\r
101 \r
102     // Test the API of DateFormatSymbols; primarily a simple get/set set.\r
103     public void TestSymbols()\r
104     {\r
105         DateFormatSymbols fr = new DateFormatSymbols(Locale.FRENCH);\r
106         DateFormatSymbols fr2 = new DateFormatSymbols(Locale.FRENCH);\r
107 \r
108         DateFormatSymbols en = new DateFormatSymbols(Locale.ENGLISH);\r
109 \r
110         if(en.equals(fr)) {\r
111             errln("ERROR: English DateFormatSymbols equal to French");\r
112         }\r
113 \r
114         // just do some VERY basic tests to make sure that get/set work\r
115 \r
116         long count;\r
117         final String[] eras = en.getEras();\r
118         fr.setEras(eras);\r
119         final String[] eras1 = fr.getEras();\r
120         count = eras.length;\r
121         if( count != eras1.length) {\r
122             errln("ERROR: setEras() failed (different size array)");\r
123         }\r
124         else {\r
125             for(int i = 0; i < count; i++) {\r
126                 if(! eras[i].equals(eras1[i])) {\r
127                     errln("ERROR: setEras() failed (different string values)");\r
128                 }\r
129             }\r
130         }\r
131 \r
132 \r
133         final String[] months = en.getMonths();\r
134         fr.setMonths(months);\r
135         final String[] months1 = fr.getMonths();\r
136         count = months.length;\r
137         if( count != months1.length) {\r
138             errln("ERROR: setMonths() failed (different size array)");\r
139         }\r
140         else {\r
141             for(int i = 0; i < count; i++) {\r
142                 if(! months[i].equals(months1[i])) {\r
143                     errln("ERROR: setMonths() failed (different string values)");\r
144                 }\r
145             }\r
146         }\r
147 \r
148         final String[] shortMonths = en.getShortMonths();\r
149         fr.setShortMonths(shortMonths);\r
150         final String[] shortMonths1 = fr.getShortMonths();\r
151         count = shortMonths.length;\r
152         if( count != shortMonths1.length) {\r
153             errln("ERROR: setShortMonths() failed (different size array)");\r
154         }\r
155         else {\r
156             for(int i = 0; i < count; i++) {\r
157                 if(! shortMonths[i].equals(shortMonths1[i])) {\r
158                     errln("ERROR: setShortMonths() failed (different string values)");\r
159                 }\r
160             }\r
161         }\r
162 \r
163         final String[] wideMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
164         fr2.setMonths(wideMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
165         final String[] wideMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
166         count = wideMonths.length;\r
167         if( count != wideMonths1.length) {\r
168             errln("ERROR: setMonths(FORMAT,WIDE) failed (different size array)");\r
169         }\r
170         else {\r
171             for(int i = 0; i < count; i++) {\r
172                 if(! wideMonths[i].equals(wideMonths1[i])) {\r
173                     errln("ERROR: setMonths(FORMAT,WIDE) failed (different string values)");\r
174                 }\r
175             }\r
176         }\r
177 \r
178         final String[] abbrMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
179         fr2.setMonths(abbrMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
180         final String[] abbrMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
181         count = abbrMonths.length;\r
182         if( count != abbrMonths1.length) {\r
183             errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different size array)");\r
184         }\r
185         else {\r
186             for(int i = 0; i < count; i++) {\r
187                 if(! abbrMonths[i].equals(abbrMonths1[i])) {\r
188                     errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different string values)");\r
189                 }\r
190             }\r
191         }\r
192 \r
193         final String[] narrowMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);\r
194         fr.setMonths(narrowMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);\r
195         final String[] narrowMonths1 = fr.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);\r
196         count = narrowMonths.length;\r
197         if( count != narrowMonths1.length) {\r
198             errln("ERROR: setMonths(FORMAT,NARROW) failed (different size array)");\r
199         }\r
200         else {\r
201             for(int i = 0; i < count; i++) {\r
202                 if(! narrowMonths[i].equals(narrowMonths1[i])) {\r
203                     errln("ERROR: setMonths(FORMAT,NARROW) failed (different string values)");\r
204                 }\r
205             }\r
206         }\r
207 \r
208         final String[] standaloneMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
209         fr.setMonths(standaloneMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
210         final String[] standaloneMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
211         count = standaloneMonths.length;\r
212         if( count != standaloneMonths1.length) {\r
213             errln("ERROR: setMonths(STANDALONE,WIDE) failed (different size array)");\r
214         }\r
215         else {\r
216             for(int i = 0; i < count; i++) {\r
217                 if(! standaloneMonths[i].equals(standaloneMonths1[i])) {\r
218                     errln("ERROR: setMonths(STANDALONE,WIDE) failed (different string values)");\r
219                 }\r
220             }\r
221         }\r
222 \r
223         final String[] standaloneShortMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
224         fr.setMonths(standaloneShortMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
225         final String[] standaloneShortMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
226         count = standaloneShortMonths.length;\r
227         if( count != standaloneShortMonths1.length) {\r
228             errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different size array)");\r
229         }\r
230         else {\r
231             for(int i = 0; i < count; i++) {\r
232                 if(! standaloneShortMonths[i].equals(standaloneShortMonths1[i])) {\r
233                     errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different string values)");\r
234                 }\r
235             }\r
236         }\r
237 \r
238         final String[] standaloneNarrowMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);\r
239         fr.setMonths(standaloneNarrowMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);\r
240         final String[] standaloneNarrowMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);\r
241         count = standaloneNarrowMonths.length;\r
242         if( count != standaloneNarrowMonths1.length) {\r
243             errln("ERROR: setMonths(STANDALONE,NARROW) failed (different size array)");\r
244         }\r
245         else {\r
246             for(int i = 0; i < count; i++) {\r
247                 if(! standaloneNarrowMonths[i].equals(standaloneNarrowMonths1[i])) {\r
248                     errln("ERROR: setMonths(STANDALONE,NARROW) failed (different string values)");\r
249                 }\r
250             }\r
251         }\r
252 \r
253         final String[] weekdays = en.getWeekdays();\r
254         fr.setWeekdays(weekdays);\r
255         final String[] weekdays1 = fr.getWeekdays();\r
256         count = weekdays.length;\r
257         if( count != weekdays1.length) {\r
258             errln("ERROR: setWeekdays() failed (different size array)");\r
259         }\r
260         else {\r
261             for(int i = 0; i < count; i++) {\r
262                 if(! weekdays[i].equals(weekdays1[i])) {\r
263                     errln("ERROR: setWeekdays() failed (different string values)");\r
264                 }\r
265             }\r
266         }\r
267 \r
268         final String[] shortWeekdays = en.getShortWeekdays();\r
269         fr.setShortWeekdays(shortWeekdays);\r
270         final String[] shortWeekdays1 = fr.getShortWeekdays();\r
271         count = shortWeekdays.length;\r
272         if( count != shortWeekdays1.length) {\r
273             errln("ERROR: setShortWeekdays() failed (different size array)");\r
274         }\r
275         else {\r
276             for(int i = 0; i < count; i++) {\r
277                 if(! shortWeekdays[i].equals(shortWeekdays1[i])) {\r
278                     errln("ERROR: setShortWeekdays() failed (different string values)");\r
279                 }\r
280             }\r
281         }\r
282 \r
283         final String[] wideWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
284         fr2.setWeekdays(wideWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
285         final String[] wideWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
286         count = wideWeekdays.length;\r
287         if( count != wideWeekdays1.length) {\r
288             errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different size array)");\r
289         }\r
290         else {\r
291             for(int i = 0; i < count; i++) {\r
292                 if(! wideWeekdays[i].equals(wideWeekdays1[i])) {\r
293                     errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different string values)");\r
294                 }\r
295             }\r
296         }\r
297 \r
298         final String[] abbrWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
299         fr2.setWeekdays(abbrWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
300         final String[] abbrWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
301         count = abbrWeekdays.length;\r
302         if( count != abbrWeekdays1.length) {\r
303             errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different size array)");\r
304         }\r
305         else {\r
306             for(int i = 0; i < count; i++) {\r
307                 if(! abbrWeekdays[i].equals(abbrWeekdays1[i])) {\r
308                     errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different string values)");\r
309                 }\r
310             }\r
311         }\r
312 \r
313         final String[] narrowWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);\r
314         fr.setWeekdays(narrowWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);\r
315         final String[] narrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);\r
316         count = narrowWeekdays.length;\r
317         if( count != narrowWeekdays1.length) {\r
318             errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different size array)");\r
319         }\r
320         else {\r
321             for(int i = 0; i < count; i++) {\r
322                 if(! narrowWeekdays[i].equals(narrowWeekdays1[i])) {\r
323                     errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different string values)");\r
324                 }\r
325             }\r
326         }\r
327 \r
328         final String[] standaloneWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
329         fr.setWeekdays(standaloneWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
330         final String[] standaloneWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
331         count = standaloneWeekdays.length;\r
332         if( count != standaloneWeekdays1.length) {\r
333             errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different size array)");\r
334         }\r
335         else {\r
336             for(int i = 0; i < count; i++) {\r
337                 if(! standaloneWeekdays[i].equals(standaloneWeekdays1[i])) {\r
338                     errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different string values)");\r
339                 }\r
340             }\r
341         }\r
342 \r
343         final String[] standaloneShortWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
344         fr.setWeekdays(standaloneShortWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
345         final String[] standaloneShortWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
346         count = standaloneShortWeekdays.length;\r
347         if( count != standaloneShortWeekdays1.length) {\r
348             errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different size array)");\r
349         }\r
350         else {\r
351             for(int i = 0; i < count; i++) {\r
352                 if(! standaloneShortWeekdays[i].equals(standaloneShortWeekdays1[i])) {\r
353                     errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different string values)");\r
354                 }\r
355             }\r
356         }\r
357 \r
358         final String[] standaloneNarrowWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);\r
359         fr.setWeekdays(standaloneNarrowWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);\r
360         final String[] standaloneNarrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);\r
361         count = standaloneNarrowWeekdays.length;\r
362         if( count != standaloneNarrowWeekdays1.length) {\r
363             errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different size array)");\r
364         }\r
365         else {\r
366             for(int i = 0; i < count; i++) {\r
367                 if(! standaloneNarrowWeekdays[i].equals(standaloneNarrowWeekdays1[i])) {\r
368                     errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different string values)");\r
369                 }\r
370             }\r
371         }\r
372 \r
373         final String[] wideQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
374         fr2.setQuarters(wideQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
375         final String[] wideQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);\r
376         count = wideQuarters.length;\r
377         if( count != wideQuarters1.length) {\r
378             errln("ERROR: setQuarters(FORMAT, WIDE) failed (different size array)");\r
379         }\r
380         else {\r
381             for(int i = 0; i < count; i++) {\r
382                 if(! wideQuarters[i].equals(wideQuarters1[i])) {\r
383                     errln("ERROR: setQuarters(FORMAT, WIDE) failed (different string values)");\r
384                 }\r
385             }\r
386         }\r
387 \r
388         final String[] abbrQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
389         fr2.setQuarters(abbrQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
390         final String[] abbrQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);\r
391         count = abbrQuarters.length;\r
392         if( count != abbrQuarters1.length) {\r
393             errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different size array)");\r
394         }\r
395         else {\r
396             for(int i = 0; i < count; i++) {\r
397                 if(! abbrQuarters[i].equals(abbrQuarters1[i])) {\r
398                     errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different string values)");\r
399                 }\r
400             }\r
401         }\r
402 \r
403         final String[] standaloneQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
404         fr.setQuarters(standaloneQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
405         final String[] standaloneQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);\r
406         count = standaloneQuarters.length;\r
407         if( count != standaloneQuarters1.length) {\r
408             errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different size array)");\r
409         }\r
410         else {\r
411             for(int i = 0; i < count; i++) {\r
412                 if(! standaloneQuarters[i].equals(standaloneQuarters1[i])) {\r
413                     errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different string values)");\r
414                 }\r
415             }\r
416         }\r
417 \r
418         final String[] standaloneShortQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
419         fr.setQuarters(standaloneShortQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
420         final String[] standaloneShortQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);\r
421         count = standaloneShortQuarters.length;\r
422         if( count != standaloneShortQuarters1.length) {\r
423             errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different size array)");\r
424         }\r
425         else {\r
426             for(int i = 0; i < count; i++) {\r
427                 if(! standaloneShortQuarters[i].equals(standaloneShortQuarters1[i])) {\r
428                     errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different string values)");\r
429                 }\r
430             }\r
431         }\r
432 \r
433         final String[] ampms = en.getAmPmStrings();\r
434         fr.setAmPmStrings(ampms);\r
435         final String[] ampms1 = fr.getAmPmStrings();\r
436         count = ampms.length;\r
437         if( count != ampms1.length) {\r
438             errln("ERROR: setAmPmStrings() failed (different size array)");\r
439         }\r
440         else {\r
441             for(int i = 0; i < count; i++) {\r
442                 if(! ampms[i].equals(ampms1[i])) {\r
443                     errln("ERROR: setAmPmStrings() failed (different string values)");\r
444                 }\r
445             }\r
446         }\r
447 \r
448         long rowCount = 0, columnCount = 0;\r
449         final String[][] strings = en.getZoneStrings();\r
450         fr.setZoneStrings(strings);\r
451         final String[][] strings1 = fr.getZoneStrings();\r
452         rowCount = strings.length;\r
453         for(int i = 0; i < rowCount; i++) {\r
454             columnCount = strings[i].length;\r
455             for(int j = 0; j < columnCount; j++) {\r
456                 if( strings[i][j] != strings1[i][j] ) {\r
457                     errln("ERROR: setZoneStrings() failed");\r
458                 }\r
459             }\r
460         }\r
461 \r
462 //        final String pattern = DateFormatSymbols.getPatternChars();\r
463 \r
464         String localPattern; // pat1, pat2; //The variable is never used\r
465         localPattern = en.getLocalPatternChars();\r
466         fr.setLocalPatternChars(localPattern);\r
467         if(! en.getLocalPatternChars().equals(fr.getLocalPatternChars())) {\r
468             errln("ERROR: setLocalPatternChars() failed");\r
469         }\r
470 \r
471 \r
472         //DateFormatSymbols foo = new DateFormatSymbols(); //The variable is never used\r
473 \r
474         en = (DateFormatSymbols) fr.clone();\r
475 \r
476         if(! en.equals(fr)) {\r
477             errln("ERROR: Clone failed");\r
478         }\r
479     }\r
480 }\r