1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 package fvt.gui.sc.validity;
23 
24 import static org.junit.Assert.*;
25 import static testlib.gui.AppTool.*;
26 import static testlib.gui.UIMap.*;
27 
28 import org.junit.After;
29 import org.junit.Before;
30 import org.junit.Ignore;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.openoffice.test.common.Logger;
34 
35 import testlib.gui.AppTool;
36 import testlib.gui.SCTool;
37 
38 public class ValidityDialogSetting {
39 
40 	@Before
41 	public void setUp() throws Exception {
42 		app.start(true);
43 		AppTool.newSpreadsheet();
44 		SCTool.selectRange("A1:C5");
45 		app.dispatch(".uno:Validation");
46 	}
47 
48 	@After
49 	public void tearDown() throws Exception {
50 		app.stop();
51 	}
52 
53 	/**
54 	 * test Allow not between Date type in Validity.
55 	 */
56 	@Test
57 	public void testAllowDateNotBetween() {
58 		scValidityCriteriaTabpage.select();
59 		scValidityCriteriaAllowList.select(3); // "Date"
60 		scValidityDecimalCompareOperator.select(7); // "not between"
61 		scValiditySourceInput.setText("01/01/08");
62 		scValidityMaxValueInput.setText("03/01/08");
63 		scValidityErrorAlertTabPage.select();
64 		scValidityShowErrorMessage.check();
65 		scValidityErrorMessageTitle.setText("Stop to enter");
66 		scValidityErrorMessage.setText("Invalid value");
67 		scValidityErrorAlertTabPage.ok();
68 
69 		SCTool.selectRange("A1");
70 		scInputBarInput.activate();
71 		typeKeys("12/31/07");
72 		typeKeys("<enter>");
73 		assertEquals("12/31/07", SCTool.getCellText("A1"));
74 
75 		SCTool.selectRange("A2");
76 		scInputBarInput.activate();
77 		typeKeys("03/02/08");
78 		typeKeys("<enter>");
79 		assertEquals("03/02/08", SCTool.getCellText("A2"));
80 
81 		SCTool.selectRange("A3");
82 		scInputBarInput.activate();
83 		typeKeys("01/01/08");
84 		typeKeys("<enter>");
85 		assertEquals("Invalid value", activeMsgBox.getMessage());
86 		activeMsgBox.ok();
87 		assertEquals("", SCTool.getCellText("A3"));
88 
89 		SCTool.selectRange("A4");
90 		scInputBarInput.activate();
91 		typeKeys("03/01/08");
92 		typeKeys("<enter>");
93 		assertEquals("Invalid value", activeMsgBox.getMessage());
94 		activeMsgBox.ok();
95 		assertEquals("", SCTool.getCellText("A4"));
96 
97 		SCTool.selectRange("A5");
98 		scInputBarInput.activate();
99 		typeKeys("01/02/08");
100 		typeKeys("<enter>");
101 		assertEquals("Invalid value", activeMsgBox.getMessage());
102 		activeMsgBox.ok();
103 		assertEquals("", SCTool.getCellText("A5"));
104 
105 		SCTool.selectRange("B1");
106 		scInputBarInput.activate();
107 		typeKeys("02/29/08");
108 		typeKeys("<enter>");
109 		assertEquals("Invalid value", activeMsgBox.getMessage());
110 		activeMsgBox.ok();
111 		assertEquals("", SCTool.getCellText("B1"));
112 
113 		SCTool.selectRange("B2");
114 		scInputBarInput.activate();
115 		typeKeys("test");
116 		typeKeys("<enter>");
117 		assertEquals("Invalid value", activeMsgBox.getMessage());
118 		activeMsgBox.ok();
119 		assertEquals("", SCTool.getCellText("B2"));
120 
121 		SCTool.selectRange("B3");
122 		scInputBarInput.activate();
123 		typeKeys("39448");
124 		typeKeys("<enter>");
125 		assertEquals("Invalid value", activeMsgBox.getMessage());
126 		activeMsgBox.ok();
127 		assertEquals("", SCTool.getCellText("B3"));
128 	}
129 
130 	/**
131 	 * test Allow Decimal equal in Validity.
132 	 */
133 	@Test
134 	public void testAllowDecimalEqual() {
135 
136 		scValidityCriteriaTabpage.select();
137 		scValidityCriteriaAllowList.select(2); // "Decimal"
138 		scValidityDecimalCompareOperator.select(0); // "equal"
139 		scValiditySourceInput.setText("0.33333333");
140 		scValidityErrorAlertTabPage.select();
141 		scValidityShowErrorMessage.check();
142 		scValidityErrorMessageTitle.setText("Stop to enter");
143 		scValidityErrorMessage.setText("Invalid value");
144 		scValidityErrorAlertTabPage.ok();
145 
146 		SCTool.selectRange("A1");
147 		scInputBarInput.activate();
148 		typeKeys("0.33333333");
149 		typeKeys("<enter>");
150 		assertEquals("0.33333333", SCTool.getCellText("A1"));
151 
152 		SCTool.selectRange("A2");
153 		scInputBarInput.activate();
154 		typeKeys("=1/3");
155 		typeKeys("<enter>");
156 		assertEquals("Invalid value", activeMsgBox.getMessage());
157 		activeMsgBox.ok();
158 		assertEquals("", SCTool.getCellText("A2"));
159 
160 		SCTool.selectRange("A3");
161 		scInputBarInput.activate();
162 		typeKeys("0.3");
163 		typeKeys("<enter>");
164 		assertEquals("Invalid value", activeMsgBox.getMessage());
165 		activeMsgBox.ok();
166 		assertEquals("", SCTool.getCellText("A3"));
167 
168 		SCTool.selectRange("A4");
169 		scInputBarInput.activate();
170 		typeKeys("0.333333333");
171 		typeKeys("<enter>");
172 		assertEquals("Invalid value", activeMsgBox.getMessage());
173 		activeMsgBox.ok();
174 		assertEquals("", SCTool.getCellText("A4"));
175 
176 		SCTool.selectRange("B2");
177 		scInputBarInput.activate();
178 		typeKeys("test");
179 		typeKeys("<enter>");
180 		assertEquals("Invalid value", activeMsgBox.getMessage());
181 		activeMsgBox.ok();
182 		assertEquals("", SCTool.getCellText("B2"));
183 	}
184 
185 	/**
186 	 * test Allow Text length, greater than or equal to in Validity.
187 	 */
188 	@Test
189 	public void testAllowGreaterTextLength() {
190 
191 		scValidityCriteriaTabpage.select();
192 		scValidityCriteriaAllowList.select(7); // "Text length"
193 		scValidityDecimalCompareOperator.select(4); // "greater than or equal to"
194 		scValiditySourceInput.setText("10");
195 		scValidityErrorAlertTabPage.select();
196 		scValidityShowErrorMessage.check();
197 		scValidityErrorMessageTitle.setText("Stop to enter");
198 		scValidityErrorMessage.setText("Invalid value");
199 		scValidityErrorAlertTabPage.ok();
200 
201 		SCTool.selectRange("A1");
202 		scInputBarInput.activate();
203 		typeKeys("testtesttesttest");
204 		typeKeys("<enter>");
205 		assertEquals("testtesttesttest", SCTool.getCellText("A1"));
206 
207 		SCTool.selectRange("A2");
208 		scInputBarInput.activate();
209 		typeKeys("test test ");
210 		typeKeys("<enter>");
211 		assertEquals("test test ", SCTool.getCellText("A2"));
212 
213 		SCTool.selectRange("A4");
214 		scInputBarInput.activate();
215 		typeKeys(" ");
216 		typeKeys("<enter>");
217 		assertEquals("Invalid value", activeMsgBox.getMessage());
218 		activeMsgBox.ok();
219 		assertEquals("", SCTool.getCellText("A4"));
220 
221 		SCTool.selectRange("A3");
222 		scInputBarInput.activate();
223 		typeKeys("Testatest");
224 		typeKeys("<enter>");
225 		assertEquals("Invalid value", activeMsgBox.getMessage());
226 		activeMsgBox.ok();
227 		assertEquals("", SCTool.getCellText("A3"));
228 	}
229 
230 	/**
231 	 * test Allow Text length, less than in Validity.
232 	 */
233 	@Test
234 	public void testAllowLessThanTextLength() {
235 
236 		scValidityCriteriaTabpage.select();
237 		scValidityCriteriaAllowList.select(7); // "Text length"
238 		scValidityDecimalCompareOperator.select(1); // "less than"
239 		scValiditySourceInput.setText("10");
240 
241 		scValidityInputHelpTabPage.select();
242 		scValidityInputHelpCheckbox.check();
243 		scValidityInputHelpTitle.setText("Help Info Title");
244 		scValidityHelpMessage.setText("help info");
245 
246 		scValidityErrorAlertTabPage.select();
247 		scValidityShowErrorMessage.check();
248 		scValidityErrorAlertActionList.select("Information");
249 		scValidityErrorMessageTitle.setText("Notes to enter");
250 		scValidityErrorMessage.setText("Invalid value");
251 		scValidityErrorAlertTabPage.ok();
252 
253 		SCTool.selectRange("A1");
254 		scInputBarInput.activate();
255 		typeKeys("testtesttesttest<enter>");
256 		activeMsgBox.ok();
257 		assertEquals("testtesttesttest", SCTool.getCellText("A1"));
258 
259 		SCTool.selectRange("A2");
260 		scInputBarInput.activate();
261 		typeKeys("sfsafsddddddd<enter>");
262 		activeMsgBox.cancel();
263 		assertEquals("", SCTool.getCellText("A2"));
264 
265 		SCTool.selectRange("A2");
266 		scInputBarInput.activate();
267 		typeKeys("10<enter>");
268 		assertEquals("10", SCTool.getCellText("A2"));
269 
270 		SCTool.selectRange("A3");
271 		scInputBarInput.activate();
272 		typeKeys("ok<enter>");
273 		assertEquals("ok", SCTool.getCellText("A3"));
274 	}
275 
276 	/**
277 	 * test Allow list.
278 	 */
279 	@Test
280 	public void testAllowListSpecialChar() {
281 
282 		scValidityCriteriaTabpage.select();
283 		scValidityCriteriaAllowList.select(6); // "List"
284 		scValidityEntries.focus();
285 		typeKeys("a");
286 		typeKeys("<enter>");
287 		typeKeys("b");
288 		scValidityErrorAlertTabPage.select();
289 		scValidityShowErrorMessage.check();
290 		scValidityErrorMessageTitle.setText("Stop to enter");
291 		scValidityErrorMessage.setText("Invalid value");
292 		scValidityCriteriaTabpage.select();
293 		scValidityCriteriaTabpage.ok();
294 
295 		// These codes are not stable: start
296 		// calc.rightClick(1, 1);
297 		// typeKeys("<shift s>");
298 		// typeKeys("<down><enter>"); // Choose a
299 		// sleep(2); // if no sleep, error occur
300 		// These codes are not stable: end
301 		SCTool.selectRange("A1");
302 		scInputBarInput.activate();
303 		typeKeys("a<enter>");
304 		assertEquals("a", SCTool.getCellText("A1"));
305 
306 		SCTool.selectRange("B2");
307 		scInputBarInput.activate();
308 		typeKeys("test");
309 		typeKeys("<enter>");
310 		assertEquals("Invalid value", activeMsgBox.getMessage());
311 		activeMsgBox.ok();
312 		assertEquals("", SCTool.getCellText("B2"));
313 	}
314 
315 	/**
316 	 * test Allow time between in Validity.
317 	 */
318 	@Test
319 	public void testAllowTimeBetween() {
320 
321 		scValidityCriteriaTabpage.select();
322 		scValidityCriteriaAllowList.select(4); // "Time"
323 		scValidityDecimalCompareOperator.select(6); // "between"
324 		scValiditySourceInput.setText("27:00");
325 		scValidityMaxValueInput.setText("21:00");
326 		scValidityErrorAlertTabPage.select();
327 		scValidityShowErrorMessage.check();
328 		scValidityErrorMessageTitle.setText("Stop to enter");
329 		scValidityErrorMessage.setText("Invalid value");
330 		scValidityErrorAlertTabPage.ok();
331 
332 		SCTool.selectRange("A1");
333 		scInputBarInput.activate();
334 		typeKeys("21:00");
335 		typeKeys("<enter>");
336 		assertEquals("09:00:00 PM", SCTool.getCellText("A1"));
337 
338 		SCTool.selectRange("A2");
339 		scInputBarInput.activate();
340 		typeKeys("27:00");
341 		typeKeys("<enter>");
342 		assertEquals("27:00:00", SCTool.getCellText("A2"));
343 
344 		SCTool.selectRange("A3");
345 		scInputBarInput.activate();
346 		typeKeys("1.125");
347 		typeKeys("<enter>");
348 		assertEquals("1.125", SCTool.getCellText("A3"));
349 
350 		SCTool.selectRange("A4");
351 		scInputBarInput.activate();
352 		typeKeys("0.875");
353 		typeKeys("<enter>");
354 		assertEquals("0.875", SCTool.getCellText("A4"));
355 
356 		SCTool.selectRange("B1");
357 		scInputBarInput.activate();
358 		typeKeys("03:00:01");
359 		typeKeys("<enter>");
360 		assertEquals("Invalid value", activeMsgBox.getMessage());
361 		activeMsgBox.ok();
362 		assertEquals("", SCTool.getCellText("B1"));
363 
364 		SCTool.selectRange("B2");
365 		scInputBarInput.activate();
366 		typeKeys("20:59:59");
367 		typeKeys("<enter>");
368 		assertEquals("Invalid value", activeMsgBox.getMessage());
369 		activeMsgBox.ok();
370 		assertEquals("", SCTool.getCellText("B2"));
371 
372 		SCTool.selectRange("B3");
373 		scInputBarInput.activate();
374 		typeKeys("1.126");
375 		typeKeys("<enter>");
376 		assertEquals("Invalid value", activeMsgBox.getMessage());
377 		activeMsgBox.ok();
378 		assertEquals("", SCTool.getCellText("B3"));
379 
380 		SCTool.selectRange("B4");
381 		scInputBarInput.activate();
382 		typeKeys("0.874");
383 		typeKeys("<enter>");
384 		assertEquals("Invalid value", activeMsgBox.getMessage());
385 		activeMsgBox.ok();
386 		assertEquals("", SCTool.getCellText("B4"));
387 
388 		SCTool.selectRange("C1");
389 		scInputBarInput.activate();
390 		typeKeys("test");
391 		typeKeys("<enter>");
392 		assertEquals("Invalid value", activeMsgBox.getMessage());
393 		activeMsgBox.ok();
394 		assertEquals("", SCTool.getCellText("C1"));
395 
396 		SCTool.selectRange("C2");
397 		scInputBarInput.activate();
398 		typeKeys("24:00");
399 		typeKeys("<enter>");
400 		assertEquals("24:00:00", SCTool.getCellText("C2"));
401 
402 		SCTool.selectRange("C3");
403 		scInputBarInput.activate();
404 		typeKeys("12:00");
405 		typeKeys("<enter>");
406 		assertEquals("Invalid value", activeMsgBox.getMessage());
407 		activeMsgBox.ok();
408 		assertEquals("", SCTool.getCellText("C3"));
409 	}
410 
411 	/**
412 	 * test Allow time Greater than and equal to in Validity.
413 	 */
414 	@Test
415 	public void testAllowTimeGreaterThan() {
416 
417 		scValidityCriteriaTabpage.select();
418 		scValidityCriteriaAllowList.select(4); // "Time"
419 		scValidityDecimalCompareOperator.select(4); // "greater than or equal to"
420 		scValiditySourceInput.setText("8:00");
421 
422 		scValidityErrorAlertTabPage.select();
423 		scValidityShowErrorMessage.check();
424 		scValidityErrorAlertActionList.select(1); // "Warning"
425 
426 		scValidityErrorMessageTitle.setText("warning to enter");
427 		scValidityErrorMessage.setText("Invalid value");
428 		scValidityErrorAlertTabPage.ok();
429 
430 		SCTool.selectRange("A1");
431 		scInputBarInput.activate();
432 		typeKeys("7:30");
433 		typeKeys("<enter>");
434 		assertEquals("Invalid value", activeMsgBox.getMessage());
435 		activeMsgBox.ok();
436 		assertEquals("07:30:00 AM", SCTool.getCellText("A1"));
437 
438 		SCTool.selectRange("A2");
439 		scInputBarInput.activate();
440 		typeKeys("6:00");
441 		typeKeys("<enter>");
442 		assertEquals("Invalid value", activeMsgBox.getMessage());
443 		activeMsgBox.cancel();
444 		assertEquals("", SCTool.getCellText("A2"));
445 
446 		SCTool.selectRange("A3");
447 		scInputBarInput.activate();
448 		typeKeys("8:00");
449 		typeKeys("<enter>");
450 		assertEquals("08:00:00 AM", SCTool.getCellText("A3"));
451 	}
452 
453 	/**
454 	 * test Allow whole number, less than or equal to in Validity.
455 	 */
456 	@Test
457 	public void testAllowWholeNumLessThan() {
458 
459 		scValidityCriteriaTabpage.select();
460 		scValidityCriteriaAllowList.select(1); // "Whole Numbers"
461 		scValidityDecimalCompareOperator.select(3); // "less than or equal"
462 		scValiditySourceInput.setText("100");
463 		scValidityErrorAlertTabPage.select();
464 		scValidityShowErrorMessage.check();
465 		scValidityErrorMessageTitle.setText("Stop to enter");
466 		scValidityErrorMessage.setText("Invalid value");
467 		scValidityErrorAlertTabPage.ok();
468 
469 		SCTool.selectRange("A1");
470 		scInputBarInput.activate();
471 		typeKeys("99");
472 		typeKeys("<enter>");
473 		assertEquals("99", SCTool.getCellText("A1"));
474 
475 		SCTool.selectRange("A2");
476 		scInputBarInput.activate();
477 		typeKeys("100");
478 		typeKeys("<enter>");
479 		assertEquals("100", SCTool.getCellText("A2"));
480 
481 		SCTool.selectRange("B1");
482 		scInputBarInput.activate();
483 		typeKeys("101");
484 		typeKeys("<enter>");
485 		assertEquals("Invalid value", activeMsgBox.getMessage());
486 		activeMsgBox.ok();
487 		assertEquals("", SCTool.getCellText("B1"));
488 
489 		SCTool.selectRange("B2");
490 		scInputBarInput.activate();
491 		typeKeys("45.5");
492 		typeKeys("<enter>");
493 		assertEquals("Invalid value", activeMsgBox.getMessage());
494 		activeMsgBox.ok();
495 		assertEquals("", SCTool.getCellText("B2"));
496 
497 		SCTool.selectRange("C1");
498 		scInputBarInput.activate();
499 		typeKeys("test");
500 		typeKeys("<enter>");
501 		assertEquals("Invalid value", activeMsgBox.getMessage());
502 		activeMsgBox.ok();
503 		assertEquals("", SCTool.getCellText("C1"));
504 	}
505 
506 	/**
507 	 * test default message of Error Alert in Validity.
508 	 */
509 	@Test
510 	public void testDefaultErrorAlertMessage() {
511 
512 		scValidityCriteriaTabpage.select();
513 		scValidityCriteriaAllowList.select(2); // "Decimal"
514 		scValidityDecimalCompareOperator.select(0); // "equal"
515 		scValiditySourceInput.setText("1");
516 
517 		scValidityErrorAlertTabPage.select();
518 		scValidityShowErrorMessage.check();
519 		scValidityErrorAlertActionList.select(0); // "Stop"
520 		scValidityErrorAlertTabPage.ok();
521 
522 		SCTool.selectRange("A1");
523 		scInputBarInput.activate();
524 		typeKeys("13");
525 		typeKeys("<enter>");
526 		assertEquals("OpenOffice.org Calc", activeMsgBox.getCaption());
527 		// assertEquals("Invalid value.",ActiveMsgBox.getMessage()); // Can not
528 		// verify in multi-language
529 		activeMsgBox.ok();
530 		assertEquals("", SCTool.getCellText("A1"));
531 	}
532 
533 	/**
534 	 * test uncheck Error Alert in Validity.
535 	 */
536 	@Test
537 	public void testUncheckErrorAlert() {
538 
539 		scValidityCriteriaTabpage.select();
540 		scValidityCriteriaAllowList.select(2); // "Decimal"
541 		scValidityDecimalCompareOperator.select(0); // "equal"
542 		scValiditySourceInput.setText("1");
543 
544 		scValidityErrorAlertTabPage.select();
545 		scValidityShowErrorMessage.uncheck();
546 		scValidityErrorAlertActionList.select(0); // "Stop"
547 		scValidityErrorAlertTabPage.ok();
548 
549 		SCTool.selectRange("A1");
550 		typeKeys("13");
551 		typeKeys("<enter>");
552 		assertEquals("13", SCTool.getCellText("A1"));
553 	}
554 
555 	/**
556 	 * test Cell range source picker in Validity. Input from Edit Box.
557 	 */
558 	@Test
559 	public void testValidityCellRangeSourcePicker() {
560 
561 		scValidityCriteriaTabpage.select();
562 		scValidityCriteriaAllowList.select(5); // "Cell range"
563 		scValiditySourcePicker.click();
564 		assertEquals(false, scValidityCriteriaAllowList.exists());
565 		scValiditySourceInput.setText("$E$2:$G$5");
566 		scValiditySourcePicker.click();
567 		assertEquals(true, scValidityCriteriaAllowList.exists());
568 
569 		scValidityErrorAlertTabPage.select();
570 		scValidityShowErrorMessage.check();
571 		scValidityErrorAlertActionList.select(0); // "Stop"
572 		scValidityErrorMessageTitle.setText("Stop to enter");
573 		scValidityErrorMessage.setText("Invalid value.");
574 		scValidityErrorAlertTabPage.ok();
575 
576 		// calc.focus();
577 		SCTool.selectRange("E2");
578 		scInputBarInput.activate();
579 		typeKeys("test");
580 		typeKeys("<enter>");
581 
582 		SCTool.selectRange("A1");
583 		scInputBarInput.activate();
584 		typeKeys("test32");
585 		typeKeys("<enter>");
586 		assertEquals("Invalid value.", activeMsgBox.getMessage());
587 		activeMsgBox.ok();
588 		assertEquals("", SCTool.getCellText("A1"));
589 
590 		SCTool.selectRange("B1");
591 		scInputBarInput.activate();
592 		typeKeys("test");
593 		typeKeys("<enter>");
594 		assertEquals("test", SCTool.getCellText("B1"));
595 	}
596 
597 	/**
598 	 * test Allow Blank cell Checkbox in Validity.
599 	 */
600 	@Test
601 	public void testAllowBlankCells() {
602 		scValidityCriteriaTabpage.select();
603 		scValidityCriteriaAllowList.select(5); // "Cell range"
604 		scValiditySourceInput.setText("$E$1:$E$5");
605 		scValidityAllowBlankCells.check();
606 		scValidityCriteriaTabpage.ok();
607 
608 		SCTool.selectRange("E1");
609 		typeKeys("A<enter>A<enter>A<enter>A<enter>A<enter>");
610 
611 		SCTool.selectRange("A1");
612 		typeKeys("A<enter>");
613 		SCTool.selectRange("D1");
614 		scInputBarInput.activate();
615 		typeKeys("<backspace><enter>");
616 		assertEquals("", SCTool.getCellText("D1"));
617 
618 		SCTool.selectRange("B1");
619 		app.dispatch(".uno:Validation");
620 		scValidityCriteriaTabpage.select();
621 		scValidityAllowBlankCells.uncheck();
622 		typeKeys("<enter>");
623 
624 		SCTool.selectRange("B1");
625 		scInputBarInput.activate();
626 		typeKeys("<backspace><enter>");
627 		typeKeys("<enter>");
628 	}
629 }
630