001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.module.chart.rules;
017:
018: import static org.kuali.test.util.KualiTestAssertionUtils.assertGlobalErrorMapEmpty;
019: import static org.kuali.test.util.KualiTestAssertionUtils.assertGlobalErrorMapSize;
020:
021: import java.util.ArrayList;
022: import java.util.List;
023:
024: import org.kuali.module.chart.bo.AccountGlobalDetail;
025: import org.kuali.module.chart.bo.SubObjCdGlobal;
026: import org.kuali.module.chart.bo.SubObjCdGlobalDetail;
027: import org.kuali.test.ConfigureContext;
028:
029: @ConfigureContext
030: public class SubObjCdGlobalRuleTest extends ChartRuleTestBase {
031: private class SOCDocument {
032: private class ChartCode {
033: private static final String GOOD1 = "BL";
034: private static final String BAD1 = "ZZ";
035: }
036:
037: private class FiscalYear {
038: private static final int GOOD1 = 2006;
039: private static final int BAD1 = 0;
040:
041: }
042: }
043:
044: public void testDefaultExistenceChecks_Chart_KnownGood() {
045:
046: // create new SubObjCdGlobal
047: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
048:
049: socChangeDocument
050: .setChartOfAccountsCode(SOCDocument.ChartCode.GOOD1);
051: testDefaultExistenceCheck(socChangeDocument,
052: "chartOfAccountsCode", false);
053: assertGlobalErrorMapEmpty();
054: }
055:
056: public void testDefaultExistenceChecks_Chart_KnownBad() {
057:
058: // create new SubObjCdGlobal
059: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
060:
061: socChangeDocument
062: .setChartOfAccountsCode(SOCDocument.ChartCode.BAD1);
063:
064: // run the test
065: testDefaultExistenceCheck(socChangeDocument,
066: "chartOfAccountsCode", true);
067: assertGlobalErrorMapSize(1);
068: }
069:
070: public void testDefaultExistenceChecks_FiscalYear_KnownGood() {
071:
072: // create new SubObjCdGlobal
073: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
074:
075: socChangeDocument
076: .setUniversityFiscalYear(SOCDocument.FiscalYear.GOOD1);
077: testDefaultExistenceCheck(socChangeDocument,
078: "universityFiscalYear", false);
079: assertGlobalErrorMapEmpty();
080: }
081:
082: public void testDefaultExistenceChecks_FiscalYear_KnownBad() {
083:
084: // create new SubObjCdGlobal
085: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
086:
087: socChangeDocument
088: .setUniversityFiscalYear(SOCDocument.FiscalYear.BAD1);
089:
090: // run the test
091: testDefaultExistenceCheck(socChangeDocument,
092: "universityFiscalYear", true);
093: assertGlobalErrorMapSize(1);
094: }
095:
096: public void testSubObjCdGlobalDetail_InDocument() {
097: boolean result;
098: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
099: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
100:
101: socChangeDocument.setUniversityFiscalYear(2006);
102: socChangeDocument.refreshNonUpdateableReferences();
103:
104: socChangeDetail.setUniversityFiscalYear(2006);
105: socChangeDetail.refreshNonUpdateableReferences();
106:
107: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
108: socDetails.add(socChangeDetail);
109:
110: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
111:
112: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
113: result = rule.checkForSubObjCdGlobalDetails(socChangeDocument
114: .getSubObjCdGlobalDetails());
115:
116: assertTrue("Rule should pass", result);
117: }
118:
119: public void testSubObjCdGlobalDetail_NotInDocument() {
120: boolean result;
121: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
122: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
123:
124: socChangeDocument.setUniversityFiscalYear(2006);
125: socChangeDocument.refreshNonUpdateableReferences();
126:
127: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
128:
129: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
130:
131: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
132: result = rule.checkForSubObjCdGlobalDetails(socChangeDocument
133: .getSubObjCdGlobalDetails());
134:
135: assertFalse("Rule should not pass", result);
136: }
137:
138: public void testAccountGlobalDetail_InDocument() {
139: boolean result;
140: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
141: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
142:
143: socChangeDocument.setUniversityFiscalYear(2006);
144: socChangeDocument.refreshNonUpdateableReferences();
145:
146: AccountGlobalDetail acctDetail = new AccountGlobalDetail();
147: acctDetail.setChartOfAccountsCode("BL");
148: acctDetail.refreshNonUpdateableReferences();
149:
150: List<AccountGlobalDetail> acctDetails = new ArrayList<AccountGlobalDetail>();
151:
152: acctDetails.add(acctDetail);
153:
154: socChangeDocument.setAccountGlobalDetails(acctDetails);
155:
156: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
157: result = rule.checkForAccountGlobalDetails(socChangeDocument
158: .getAccountGlobalDetails());
159:
160: assertTrue("Rule should pass", result);
161: }
162:
163: public void testAccountGlobalDetail_NotInDocument() {
164: boolean result;
165: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
166: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
167:
168: socChangeDocument.setUniversityFiscalYear(2006);
169: socChangeDocument.refreshNonUpdateableReferences();
170:
171: AccountGlobalDetail acctDetail = new AccountGlobalDetail();
172: acctDetail.setChartOfAccountsCode("BL");
173: acctDetail.refreshNonUpdateableReferences();
174:
175: List<AccountGlobalDetail> acctDetails = new ArrayList<AccountGlobalDetail>();
176:
177: socChangeDocument.setAccountGlobalDetails(acctDetails);
178:
179: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
180: result = rule.checkForAccountGlobalDetails(socChangeDocument
181: .getAccountGlobalDetails());
182:
183: assertFalse("Rule should not pass", result);
184: }
185:
186: public void testFiscalYear_SameOnDocAndDetail() {
187: boolean result;
188: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
189: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
190:
191: socChangeDocument.setUniversityFiscalYear(2006);
192: socChangeDocument.refreshNonUpdateableReferences();
193:
194: socChangeDetail.setUniversityFiscalYear(2006);
195: socChangeDetail.refreshNonUpdateableReferences();
196:
197: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
198: socDetails.add(socChangeDetail);
199:
200: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
201:
202: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
203: result = rule.checkFiscalYear(socChangeDocument,
204: socChangeDetail, 0, false);
205: assertTrue("Rules should pass", result);
206:
207: }
208:
209: public void testFiscalYear_NotSameOnDocAndDetail() {
210: boolean result;
211: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
212: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
213:
214: socChangeDocument.setUniversityFiscalYear(2005);
215: socChangeDocument.refreshNonUpdateableReferences();
216:
217: socChangeDetail.setUniversityFiscalYear(2006);
218: socChangeDetail.refreshNonUpdateableReferences();
219:
220: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
221: socDetails.add(socChangeDetail);
222:
223: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
224: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
225: result = rule.checkFiscalYear(socChangeDocument,
226: socChangeDetail, 0, false);
227: assertFalse(result);
228: }
229:
230: public void testFiscalYear_SameOnDocAndDetailMultipleLines() {
231: boolean result;
232: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
233: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
234: SubObjCdGlobalDetail socChangeDetail2 = new SubObjCdGlobalDetail();
235:
236: socChangeDocument.setUniversityFiscalYear(2006);
237: socChangeDocument.refreshNonUpdateableReferences();
238:
239: socChangeDetail.setUniversityFiscalYear(2006);
240: socChangeDetail.refreshNonUpdateableReferences();
241:
242: socChangeDetail2.setUniversityFiscalYear(2006);
243: socChangeDetail2.refreshNonUpdateableReferences();
244:
245: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
246: socDetails.add(socChangeDetail);
247: socDetails.add(socChangeDetail2);
248:
249: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
250:
251: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
252: result = rule.checkFiscalYearAllLines(socChangeDocument);
253: assertTrue("Rules should pass", result);
254:
255: }
256:
257: public void testFiscalYear_NotSameOnDocAndDetailMultipleLines() {
258: boolean result;
259: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
260: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
261: SubObjCdGlobalDetail socChangeDetail2 = new SubObjCdGlobalDetail();
262:
263: socChangeDocument.setUniversityFiscalYear(2006);
264: socChangeDocument.refreshNonUpdateableReferences();
265:
266: socChangeDetail.setUniversityFiscalYear(2006);
267: socChangeDetail.refreshNonUpdateableReferences();
268:
269: socChangeDetail2.setUniversityFiscalYear(2005);
270: socChangeDetail2.refreshNonUpdateableReferences();
271:
272: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
273: socDetails.add(socChangeDetail);
274: socDetails.add(socChangeDetail2);
275:
276: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
277:
278: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
279: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
280: result = rule.checkFiscalYearAllLines(socChangeDocument);
281: assertFalse(result);
282: }
283:
284: public void testChart_SameOnDocAndDetail() {
285: boolean result;
286: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
287: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
288:
289: socChangeDocument.setUniversityFiscalYear(2006);
290: socChangeDocument.setChartOfAccountsCode("BL");
291: socChangeDocument.refreshNonUpdateableReferences();
292:
293: socChangeDetail.setUniversityFiscalYear(2006);
294: socChangeDetail.setChartOfAccountsCode("BL");
295: socChangeDetail.refreshNonUpdateableReferences();
296:
297: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
298: socDetails.add(socChangeDetail);
299:
300: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
301:
302: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
303: result = rule.checkChartOnSubObjCodeDetails(socChangeDocument,
304: socChangeDetail, 0, false);
305: assertTrue("Rules should pass", result);
306: }
307:
308: public void testChart_SameOnDocAndAcctDetail() {
309: boolean result;
310: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
311: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
312:
313: socChangeDocument.setUniversityFiscalYear(2006);
314: socChangeDocument.setChartOfAccountsCode("BL");
315: socChangeDocument.refreshNonUpdateableReferences();
316:
317: socChangeDetail.setUniversityFiscalYear(2006);
318: socChangeDetail.setChartOfAccountsCode("BL");
319: socChangeDetail.refreshNonUpdateableReferences();
320:
321: AccountGlobalDetail acctDetail = new AccountGlobalDetail();
322: acctDetail.setChartOfAccountsCode("BL");
323: acctDetail.refreshNonUpdateableReferences();
324:
325: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
326: List<AccountGlobalDetail> acctDetails = new ArrayList<AccountGlobalDetail>();
327:
328: socDetails.add(socChangeDetail);
329: acctDetails.add(acctDetail);
330:
331: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
332: socChangeDocument.setAccountGlobalDetails(acctDetails);
333:
334: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
335: result = rule.checkChartOnAccountDetails(socChangeDocument,
336: acctDetail, 0, false);
337: assertTrue("Rules should pass", result);
338: }
339:
340: public void testChart_NotSameOnDocAndDetail() {
341: boolean result;
342: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
343: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
344:
345: socChangeDocument.setUniversityFiscalYear(2006);
346: socChangeDocument.setChartOfAccountsCode("BL");
347: socChangeDocument.refreshNonUpdateableReferences();
348:
349: socChangeDetail.setUniversityFiscalYear(2006);
350: socChangeDetail.setChartOfAccountsCode("UA");
351: socChangeDetail.refreshNonUpdateableReferences();
352:
353: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
354: socDetails.add(socChangeDetail);
355:
356: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
357:
358: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
359: result = rule.checkChartOnSubObjCodeDetails(socChangeDocument,
360: socChangeDetail, 0, false);
361: assertFalse("Rules should not pass", result);
362:
363: }
364:
365: public void testChart_NotSameOnDocAndAcctDetail() {
366: boolean result;
367: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
368: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
369:
370: socChangeDocument.setUniversityFiscalYear(2006);
371: socChangeDocument.setChartOfAccountsCode("BL");
372: socChangeDocument.refreshNonUpdateableReferences();
373:
374: socChangeDetail.setUniversityFiscalYear(2006);
375: socChangeDetail.setChartOfAccountsCode("BL");
376: socChangeDetail.refreshNonUpdateableReferences();
377:
378: AccountGlobalDetail acctDetail = new AccountGlobalDetail();
379: acctDetail.setChartOfAccountsCode("UA");
380: acctDetail.refreshNonUpdateableReferences();
381:
382: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
383: List<AccountGlobalDetail> acctDetails = new ArrayList<AccountGlobalDetail>();
384:
385: socDetails.add(socChangeDetail);
386: acctDetails.add(acctDetail);
387:
388: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
389: socChangeDocument.setAccountGlobalDetails(acctDetails);
390:
391: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
392: result = rule.checkChartOnAccountDetails(socChangeDocument,
393: acctDetail, 0, false);
394: assertFalse("Rules should not pass", result);
395: }
396:
397: public void testChart_SameOnDocAndDetailMultipleLines() {
398: boolean result;
399: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
400: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
401: SubObjCdGlobalDetail socChangeDetail2 = new SubObjCdGlobalDetail();
402:
403: socChangeDocument.setUniversityFiscalYear(2006);
404: socChangeDocument.setChartOfAccountsCode("BL");
405: socChangeDocument.refreshNonUpdateableReferences();
406:
407: socChangeDetail.setUniversityFiscalYear(2006);
408: socChangeDetail.setChartOfAccountsCode("BL");
409: socChangeDetail.refreshNonUpdateableReferences();
410:
411: socChangeDetail2.setUniversityFiscalYear(2006);
412: socChangeDetail2.setChartOfAccountsCode("BL");
413: socChangeDetail2.refreshNonUpdateableReferences();
414:
415: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
416: socDetails.add(socChangeDetail);
417: socDetails.add(socChangeDetail2);
418:
419: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
420:
421: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
422: result = rule.checkChartAllLines(socChangeDocument);
423: assertTrue("Rules should pass", result);
424:
425: }
426:
427: public void testChart_NotSameOnDocAndDetailMultipleLines() {
428: boolean result;
429: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
430: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
431: SubObjCdGlobalDetail socChangeDetail2 = new SubObjCdGlobalDetail();
432:
433: socChangeDocument.setUniversityFiscalYear(2006);
434: socChangeDocument.setChartOfAccountsCode("BL");
435: socChangeDocument.refreshNonUpdateableReferences();
436:
437: socChangeDetail.setUniversityFiscalYear(2006);
438: socChangeDetail.setChartOfAccountsCode("BL");
439: socChangeDetail.refreshNonUpdateableReferences();
440:
441: socChangeDetail2.setUniversityFiscalYear(2006);
442: socChangeDetail2.setChartOfAccountsCode("UA");
443: socChangeDetail2.refreshNonUpdateableReferences();
444:
445: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
446: socDetails.add(socChangeDetail);
447: socDetails.add(socChangeDetail2);
448:
449: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
450:
451: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
452: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
453: result = rule.checkChartAllLines(socChangeDocument);
454: assertFalse(result);
455: }
456:
457: public void testChart_SameOnDocAndAcctDetailMultipleLines() {
458: boolean result;
459: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
460: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
461: SubObjCdGlobalDetail socChangeDetail2 = new SubObjCdGlobalDetail();
462:
463: socChangeDocument.setUniversityFiscalYear(2006);
464: socChangeDocument.setChartOfAccountsCode("BL");
465: socChangeDocument.refreshNonUpdateableReferences();
466:
467: socChangeDetail.setUniversityFiscalYear(2006);
468: socChangeDetail.setChartOfAccountsCode("BL");
469: socChangeDetail.refreshNonUpdateableReferences();
470:
471: socChangeDetail2.setUniversityFiscalYear(2006);
472: socChangeDetail2.setChartOfAccountsCode("BL");
473: socChangeDetail2.refreshNonUpdateableReferences();
474:
475: AccountGlobalDetail acctDetail = new AccountGlobalDetail();
476: acctDetail.setChartOfAccountsCode("BL");
477: acctDetail.refreshNonUpdateableReferences();
478:
479: AccountGlobalDetail acctDetail2 = new AccountGlobalDetail();
480: acctDetail2.setChartOfAccountsCode("BL");
481: acctDetail2.refreshNonUpdateableReferences();
482:
483: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
484: List<AccountGlobalDetail> acctDetails = new ArrayList<AccountGlobalDetail>();
485:
486: socDetails.add(socChangeDetail);
487: socDetails.add(socChangeDetail2);
488:
489: acctDetails.add(acctDetail);
490: acctDetails.add(acctDetail2);
491:
492: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
493: socChangeDocument.setAccountGlobalDetails(acctDetails);
494:
495: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
496: result = rule.checkChartAllLines(socChangeDocument);
497: assertTrue("Rules should pass", result);
498:
499: }
500:
501: public void testChart_NotSameOnDocAndAcctDetailMultipleLines() {
502: boolean result;
503: SubObjCdGlobal socChangeDocument = new SubObjCdGlobal();
504: SubObjCdGlobalDetail socChangeDetail = new SubObjCdGlobalDetail();
505: SubObjCdGlobalDetail socChangeDetail2 = new SubObjCdGlobalDetail();
506:
507: socChangeDocument.setUniversityFiscalYear(2006);
508: socChangeDocument.setChartOfAccountsCode("BL");
509: socChangeDocument.refreshNonUpdateableReferences();
510:
511: socChangeDetail.setUniversityFiscalYear(2006);
512: socChangeDetail.setChartOfAccountsCode("BL");
513: socChangeDetail.refreshNonUpdateableReferences();
514:
515: socChangeDetail2.setUniversityFiscalYear(2006);
516: socChangeDetail2.setChartOfAccountsCode("BL");
517: socChangeDetail2.refreshNonUpdateableReferences();
518:
519: AccountGlobalDetail acctDetail = new AccountGlobalDetail();
520: acctDetail.setChartOfAccountsCode("UA");
521: acctDetail.refreshNonUpdateableReferences();
522:
523: AccountGlobalDetail acctDetail2 = new AccountGlobalDetail();
524: acctDetail2.setChartOfAccountsCode("BL");
525: acctDetail2.refreshNonUpdateableReferences();
526:
527: List<SubObjCdGlobalDetail> socDetails = new ArrayList<SubObjCdGlobalDetail>();
528: List<AccountGlobalDetail> acctDetails = new ArrayList<AccountGlobalDetail>();
529:
530: socDetails.add(socChangeDetail);
531: socDetails.add(socChangeDetail2);
532:
533: acctDetails.add(acctDetail);
534: acctDetails.add(acctDetail2);
535:
536: socChangeDocument.setSubObjCdGlobalDetails(socDetails);
537: socChangeDocument.setAccountGlobalDetails(acctDetails);
538:
539: SubObjCdGlobalRule rule = new SubObjCdGlobalRule();
540: result = rule.checkChartAllLines(socChangeDocument);
541: assertFalse(result);
542: }
543:
544: }
|