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