Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #9960: index.html

File index.html, 27.7 kB (added by noremember, 2 years ago)

Units tests.

Line 
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
4   <head>
5     <title>Selection :: Tests</title>
6     <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
7     <script src="prototype.js" type="text/javascript"></script>
8     <script src="jsUnitCore.js" type="text/javascript"></script>
9     <script src="array.extend.js" type="text/javascript"></script>
10     <script src="selection.class.js" type="text/javascript"></script>
11     <script type="text/javascript">
12       Event.observe(window, 'load', initialize);
13
14       function initialize() {
15         Event.observe($('input_button'), 'click', i);
16         Event.observe($('textarea_button'), 'click', t);
17       }
18
19       function i() {
20         var s = new Selection('input_content');
21         alert(s.getText());
22       }
23
24       function t() {
25         var t = new Selection('textarea_content');
26         alert(t.getText());
27       }
28     </script>
29
30     <script type="text/javascript">
31       // utils methods
32       function getValidInput() {
33         var s       = new Selection('input_content');
34         s._startAt  = 0;
35         s._endAt    = 9;
36         return s;
37       }
38
39       function getValidTextarea() {
40         var s       = new Selection('textarea_content');
41         s._startAt  = 0;
42         s._endAt    = 9;
43         return s;
44       }
45
46       function setDefaultValue() {
47         $('input_content').value    = "selection";
48         $('textarea_content').value = "selection";
49       }
50
51       // constructor
52       function testSelectionConstructor1() {
53         var validInputSelection = new Selection('input_content');
54         assertNotNull(validInputSelection.input());
55
56         var validTextareaSelection = new Selection('textarea_content');
57         assertNotNull(validTextareaSelection.input());
58       }
59
60       function testSelectionConstructor2() {
61         var wrongInputSelection = new Selection('wrong');
62         assertNull(wrongInputSelection.input());
63       }
64
65       function testSelectionConstructor3() {
66         var validInput          = $('input_content');
67         var validInputSelection = new Selection(validInput);
68         assertNotNull(validInputSelection.input());
69
70         var validTextarea           = $('textarea_content');
71         var validTextareaSelection  = new Selection(validTextarea);
72         assertNotNull(validTextareaSelection.input());
73       }
74
75       function testSelectionConstructor4() {
76         var wrongInput          = $('wrong');
77         var wrongInputSelection = new Selection(wrongInput);
78         assertNull(wrongInputSelection.input());
79       }
80
81       // methods
82       // charAt
83       function testCharAt1() {
84         var s = getValidInput();
85         assertEquals("s", s.charAt(0));
86
87         var t = getValidTextarea();
88         t.inputValue();
89         assertEquals("s", t.charAt(0));
90       }
91
92       function testCharAt2() {
93         var s = getValidInput();
94         assertEquals("n", s.charAt(8));
95
96         var t = getValidTextarea();
97         assertEquals("n", t.charAt(8));
98       }
99
100       function testCharAt3() {
101         var s = getValidInput();
102         assertFalse(s.charAt(9));
103
104         var t = getValidTextarea();
105         assertFalse(t.charAt(9));
106       }
107
108       // cut
109       function testCut1() {
110         var s = getValidInput();
111         s.cut();
112         assertEquals("", s.inputValue());
113
114         var t = getValidTextarea();
115         t.cut();
116         assertEquals("", t.inputValue());
117
118         setDefaultValue();
119       }
120
121       function testCut2() {
122         var s = getValidInput();
123         s.setStartAt(3);
124         s.setEndAt(4);
125         s.cut();
126         assertEquals("selction", s.inputValue());
127
128         var t = getValidTextarea();
129         t.setStartAt(3);
130         t.setEndAt(4);
131         t.cut();
132         assertEquals("selction", t.inputValue());
133
134         setDefaultValue();
135       }
136
137       function testCut3() {
138         var s = getValidInput();
139         s.setStartAt(3);
140         s.setEndAt(-1);
141         s.cut();
142         assertEquals("sel", s.inputValue());
143
144         var t = getValidTextarea();
145         t.setStartAt(3);
146         t.setEndAt(-1);
147         t.cut();
148         assertEquals("sel", t.inputValue());
149
150         setDefaultValue();
151       }
152
153       // endAt
154       function testEndAt1() {
155         var s = getValidInput();
156         assertEquals(9, s.endAt());
157
158         var t = getValidTextarea();
159         assertEquals(9, t.endAt());
160       }
161
162       function testEndAt2() {
163         var s = getValidInput();
164         s.setEndAt(5);
165         assertEquals(5, s.endAt());
166
167         var t = getValidTextarea();
168         t.setEndAt(5);
169         assertEquals(5, t.endAt());
170       }
171
172       function testEndAt3() {
173         var s = getValidInput();
174         s.setEndAt(-1);
175         assertEquals(9, s.endAt());
176
177         var t = getValidTextarea();
178         t.setEndAt(-1);
179         assertEquals(9, t.endAt());
180       }
181
182       function testEndAt4() {
183         var s = getValidInput();
184         s.setEndAt(10);
185         assertEquals(9, s.endAt());
186
187         var t = getValidTextarea();
188         t.setEndAt(10);
189         assertEquals(9, t.endAt());
190       }
191
192       function testEndAt5() {
193         var s = getValidInput();
194         s.setStartAt(3);
195         s.setEndAt(2);
196         assertEquals(9, s.endAt());
197
198         var t = getValidTextarea();
199         t.setStartAt(3);
200         t.setEndAt(2);
201         assertEquals(9, t.endAt());
202       }
203
204       function testEndAt6() {
205         var s = getValidInput();
206         s.setStartAt(3);
207         s.setEndAt(3);
208         assertEquals(9, s.endAt());
209
210         var t = getValidTextarea();
211         t.setStartAt(3);
212         t.setEndAt(3);
213         assertEquals(9, t.endAt());
214       }
215
216       // getText
217       function testGetText1() {
218         var s = getValidInput();
219         assertEquals(s.getText(), "selection");
220
221         var t = getValidTextarea();
222         assertEquals(t.getText(), "selection");
223       }
224
225       function testGetText2() {
226         var s = getValidInput();
227         s.setStartAt(3);
228         s.setEndAt(3);
229         assertEquals(s.getText(), "ection");
230
231         var t = getValidTextarea();
232         t.setStartAt(3);
233         t.setEndAt(3);
234         assertEquals(t.getText(), "ection");
235       }
236
237       function testGetText3() {
238         var s = getValidInput();
239         s.setStartAt(3);
240         s.setEndAt(4);
241         assertEquals(s.getText(), "e");
242
243         var t = getValidTextarea();
244         t.setStartAt(3);
245         t.setEndAt(4);
246         assertEquals(t.getText(), "e");
247       }
248
249       function testGetText4() {
250         var s = getValidInput();
251         s.setEndAt(4);
252         s.setStartAt(3);
253         assertEquals(s.getText(), "e");
254
255         var t = getValidTextarea();
256         t.setEndAt(4);
257         t.setStartAt(3);
258         assertEquals(t.getText(), "e");
259       }
260
261       function testGetText5() {
262         var s = getValidInput();
263         s.setEndAt(4);
264         s.setStartAt(4);
265         assertEquals(s.getText(), "sele");
266
267         var t = getValidTextarea();
268         t.setEndAt(4);
269         t.setStartAt(4);
270         assertEquals(t.getText(), "sele");
271       }
272
273       // inputNodeName
274       function testInputNodeName1() {
275         var s = getValidInput();
276         assertEquals("INPUT", s.inputNodeName());
277
278         var t = getValidTextarea();
279         assertEquals("TEXTAREA", t.inputNodeName());
280       }
281
282       function testInputNodeName2() {
283         var s = new Selection($('wrong'));
284         assertEquals("", s.inputNodeName());
285       }
286
287       // inputValue
288       function testInputValue1() {
289         var s = getValidInput();
290         assertEquals("selection", s.inputValue());
291
292         var t = getValidTextarea();
293         assertEquals("selection", t.inputValue());
294       }
295
296       function testInputValue2() {
297         var s = new Selection($('wrong'));
298         assertEquals("", s.inputValue());
299       }
300
301       function testInputValue3() {
302         var s = getValidInput();
303         s.input().value = "foo";
304         assertEquals("foo", s.inputValue());
305
306         var t = getValidTextarea();
307         t.input().value = "foo";
308         assertEquals("foo", t.inputValue());
309
310         setDefaultValue();
311       }
312
313       // insertAfter
314       function testInsertAfter1() {
315         var s = getValidInput();
316         s.insertAfter("</strong>");
317         assertEquals("selection</strong>", s.inputValue());
318
319         var t = getValidTextarea();
320         t.insertAfter("</strong>");
321         assertEquals("selection</strong>", t.inputValue());
322
323         setDefaultValue();
324       }
325
326       function testInsertAfter2() {
327         var s = getValidInput();
328         s.insertAfter("<p>");
329         s.insertAfter("<strong>");
330         assertEquals("selection<strong><p>", s.inputValue());
331
332         var t = getValidTextarea();
333         t.insertAfter("<p>");
334         t.insertAfter("<strong>");
335         assertEquals("selection<strong><p>", t.inputValue());
336
337         setDefaultValue();
338       }
339
340       function testInsertAfter3() {
341         var s = getValidInput();
342         s.insertAfter("</strong>");
343         assertEquals(9, s.length());
344
345         var t = getValidTextarea();
346         t.insertAfter("</strong>");
347         assertEquals(9, t.length());
348
349         setDefaultValue();
350       }
351
352       function testInsertAfter4() {
353         var s = getValidInput();
354         s.insertAfter("</strong>");
355         assertEquals(0, s.startAt());
356
357         var t = getValidTextarea();
358         t.insertAfter("</strong>");
359         assertEquals(0, t.startAt());
360
361         setDefaultValue();
362       }
363
364       function testInsertAfter5() {
365         var s = getValidInput();
366         s.insertAfter("</strong>");
367         assertEquals(9, s.endAt());
368
369         var t = getValidTextarea();
370         t.insertAfter("</strong>");
371         assertEquals(9, t.endAt());
372
373         setDefaultValue();
374       }
375
376       // insertAt
377       function testInsertAt1() {
378         var s = getValidInput();
379         s.insertAt('foo');
380         assertEquals("selection", s.inputValue());
381
382         var t = getValidTextarea();
383         t.insertAt('foo');
384         assertEquals("selection", t.inputValue());
385
386         setDefaultValue();
387       }
388
389       function testInsertAt2() {
390         var s = getValidInput();
391         s.insertAt('foo', -1);
392         assertEquals("selection", s.inputValue());
393
394         var t = getValidTextarea();
395         t.insertAt('foo', -1);
396         assertEquals("selection", t.inputValue());
397
398         setDefaultValue();
399       }
400
401       function testInsertAt3() {
402         var s = getValidInput();
403         s.insertAt('foo', 10);
404         assertEquals("selection", s.inputValue());
405
406         var t = getValidTextarea();
407         t.insertAt('foo', 10);
408         assertEquals("selection", t.inputValue());
409
410         setDefaultValue();
411       }
412
413       function testInsertAt4() {
414         var s = getValidInput();
415         s.insertAt('foo', 1);
416         s = getValidInput();
417         assertEquals("sfooelection", s.inputValue());
418
419         var t = getValidTextarea();
420         t.insertAt('foo', 1);
421         t = getValidInput();
422         assertEquals("sfooelection", t.inputValue());
423
424         setDefaultValue();
425       }
426
427       function testInsertAt5() {
428         var s = getValidInput();
429         s.insertAt('foo', 8);
430         s = getValidInput();
431         assertEquals("selectiofoon", s.inputValue());
432
433         var t = getValidTextarea();
434         t.insertAt('foo', 8);
435         t = getValidInput();
436         assertEquals("selectiofoon", t.inputValue());
437
438         setDefaultValue();
439       }
440
441       function testInsertAt6() {
442         var s = getValidInput();
443         s.insertAt('foo', 8);
444         assertFalse(s.isValid());
445
446         var t = getValidTextarea();
447         t.insertAt('foo', 8);
448         assertFalse(t.isValid());
449
450         setDefaultValue();
451       }
452
453       // insertBefore
454       function testInsertBefore1() {
455         var s = getValidInput();
456         s.insertBefore("<strong>");
457         assertEquals("<strong>selection", s.inputValue());
458
459         var t = getValidTextarea();
460         t.insertBefore("<strong>");
461         assertEquals("<strong>selection", t.inputValue());
462
463         setDefaultValue();
464       }
465
466       function testInsertBefore2() {
467         var s = getValidInput();
468         s.insertBefore("<strong>");
469         s.insertBefore("<p>");
470         assertEquals("<strong><p>selection", s.inputValue());
471
472         var t = getValidTextarea();
473         t.insertBefore("<strong>");
474         t.insertBefore("<p>");
475         assertEquals("<strong><p>selection", t.inputValue());
476
477         setDefaultValue();
478       }
479
480       function testInsertBefore3() {
481         var s = getValidInput();
482         s.insertBefore("<strong>");
483         assertEquals(9, s.length());
484
485         var t = getValidTextarea();
486         t.insertBefore("<strong>");
487         assertEquals(9, t.length());
488
489         setDefaultValue();
490       }
491
492       function testInsertBefore4() {
493         var s = getValidInput();
494         s.insertBefore("<strong>");
495         assertEquals(8, s.startAt());
496
497         var t = getValidTextarea();
498         t.insertBefore("<strong>");
499         assertEquals(8, t.startAt());
500
501         setDefaultValue();
502       }
503
504       function testInsertBefore5() {
505         var s = getValidInput();
506         s.insertBefore("<strong>");
507         assertEquals(17, s.endAt());
508
509         var t = getValidTextarea();
510         t.insertBefore("<strong>");
511         assertEquals(17, t.endAt());
512
513         setDefaultValue();
514       }
515
516       // isValidInput
517       function testIsValidInput1() {
518         var s = getValidInput();
519         assertTrue(s.isValidInput());
520
521         var t = getValidTextarea();
522         assertTrue(t.isValidInput());
523       }
524
525       function testIsValidInput1() {
526         var s = new Selection('wrong');
527         assertFalse(s.isValidInput());
528       }
529
530       // isValid
531       function textIsValid1() {
532         var s = getValidInput();
533         // endAt == startAt => length = 0
534         assertFalse(s.isValid());
535
536         var t = getValidTextarea();
537         // endAt == startAt => length = 0
538         assertFalse(t.isValid());
539       }
540
541       function textIsValid2() {
542         var s = getValidInput();
543         s._startAt = 0;
544         assertTrue(s.isValid());
545
546         var t = getValidTextarea();
547         t._startAt = 0;
548         assertTrue(t.isValid());
549       }
550
551       function textIsValid3() {
552         var s = getValidInput();
553         s._startAt = 0;
554         s._endAt = 0;
555         assertFalse(s.isValid());
556
557         var t = getValidTextarea();
558         t._startAt = 0;
559         t._endAt = 0;
560         assertFalse(t.isValid());
561       }
562
563       function textIsValid4() {
564         var s = getValidInput();
565         s._startAt = -1;
566         assertFalse(s.isValid());
567
568         var t = getValidTextarea();
569         t._startAt = -1;
570         assertFalse(t.isValid());
571       }
572
573       function textIsValid5() {
574         var s = getValidInput();
575         s._endAt = -1;
576         assertFalse(s.isValid());
577
578         var t = getValidTextarea();
579         t._endAt = -1;
580         assertFalse(t.isValid());
581       }
582
583       function textIsValid6() {
584         var s = getValidInput();
585         s._startAt = 0;
586         s._endAt = 9;
587         assertTrue(s.isValid());
588
589         var t = getValidTextarea();
590         t._startAt = 0;
591         t._endAt = 9;
592         assertTrue(t.isValid());
593       }
594
595       function textIsValid7() {
596         var s = getValidInput();
597         s._startAt = 3;
598         s._endAt = 4;
599         assertTrue(s.isValid());
600
601         var t = getValidTextarea();
602         t._startAt = 3;
603         t._endAt = 4;
604         assertTrue(t.isValid());
605       }
606
607       function textIsValid8() {
608         var s = getValidInput();
609         s._startAt = 4;
610         s._endAt = 3;
611         assertFalse(s.isValid());
612
613         var t = getValidTextarea();
614         t._startAt = 4;
615         t._endAt = 3;
616         assertFalse(t.isValid());
617       }
618
619       function textIsValid9() {
620         var s = getValidInput();
621         s._startAt = 0;
622         s._endAt = 10;
623         assertFalse(s.isValid());
624
625         var t = getValidTextarea();
626         t._startAt = 0;
627         t._endAt = 10;
628         assertFalse(t.isValid());
629       }
630
631       function textIsValid10() {
632         var s = getValidInput();
633         s._startAt = 0;
634         s._endAt = 9;
635         assertTrue(s.isValid());
636
637         var t = getValidTextarea();
638         t._startAt = 0;
639         t._endAt = 9;
640         assertTrue(t.isValid());
641       }
642
643       // length
644       function testLength1() {
645         var s = getValidInput();
646         assertEquals(9, s.length());
647
648         var t = getValidTextarea();
649         assertEquals(9, t.length());
650       }
651
652       function testLength2() {
653         var s = getValidInput();
654         assertEquals(s.length(), s.endAt() - s.startAt());
655
656         var t = getValidTextarea();
657         assertEquals(t.length(), t.endAt() - t.startAt());
658       }
659
660       function testLength3() {
661         var s = getValidInput();
662         s._startAt = 3;
663         s._endAt = 2;
664         assertEquals(0, s.length());
665
666         var t = getValidTextarea();
667         t._startAt = 3;
668         t._endAt = 2;
669         assertEquals(0, t.length());
670       }
671
672       function testLength4() {
673         var s = getValidInput();
674         s._startAt = 3;
675         s._endAt = 3;
676         assertEquals(0, s.length());
677
678         var t = getValidTextarea();
679         t._startAt = 3;
680         t._endAt = 3;
681         assertEquals(0, t.length());
682       }
683
684       function testLength5() {
685         var s = getValidInput();
686         s._endAt = 10;
687         assertEquals(0, s.length());
688
689         var t = getValidTextarea();
690         t._endAt = 10;
691         assertEquals(0, t.length());
692       }
693
694       function testLength6() {
695         var s = getValidInput();
696         s._startAt = -1;
697         assertEquals(0, s.length());
698
699         var t = getValidTextarea();
700         t._startAt = -1;
701         assertEquals(0, t.length());
702       }
703
704       // setEndAt
705       function testSetEndAt1() {
706         var s = getValidInput();
707         s.setEndAt(-1);
708         assertNotEquals(-1, s.endAt());
709
710         var t = getValidTextarea();
711         t.setEndAt(-1);
712         assertNotEquals(-1, t.endAt());
713       }
714
715       function testSetEndAt2() {
716         var s = getValidInput();
717         s.setEndAt(10);
718         assertNotEquals(10, s.endAt());
719
720         var t = getValidTextarea();
721         t.setEndAt(10);
722         assertNotEquals(10, t.endAt());
723       }
724
725       function testSetEndAt3() {
726         var s = getValidInput();
727         s.setEndAt(3);
728         assertEquals(3, s.endAt());
729
730         var t = getValidTextarea();
731         t.setEndAt(3);
732         assertEquals(3, t.endAt());
733       }
734
735       function testSetEndAt4() {
736         var s = getValidInput();
737         assertFalse(s.setEndAt(-1));
738
739         var t = getValidTextarea();
740         assertFalse(t.setEndAt(-1));
741       }
742
743       function testSetEndAt5() {
744         var s = getValidInput();
745         assertEquals(9, s.setEndAt(3));
746
747         var t = getValidTextarea();
748         assertEquals(9, t.setEndAt(3));
749       }
750
751       // setStartAt
752       function testSetStartAt1() {
753         var s = getValidInput();
754         s.setStartAt(-1);
755         assertNotEquals(-1, s.startAt());
756
757         var t = getValidTextarea();
758         t.setStartAt(-1);
759         assertNotEquals(-1, t.startAt());
760       }
761
762       function testSetStartAt2() {
763         var s = getValidInput();
764         s.setStartAt(9);
765         assertNotEquals(9, s.startAt());
766
767         var t = getValidTextarea();
768         t.setStartAt(9);
769         assertNotEquals(9, t.startAt());
770       }
771
772       function testSetStartAt3() {
773         var s = getValidInput();
774         s.setStartAt(4);
775         assertEquals(4, s.startAt());
776
777         var t = getValidTextarea();
778         t.setStartAt(4);
779         assertEquals(4, t.startAt());
780       }
781
782       function testSetStartAt4() {
783         var s = getValidInput();
784         assertFalse(s.setStartAt(-1));
785
786         var t = getValidTextarea();
787         assertFalse(t.setStartAt(-1));
788       }
789
790       function testSetStartAt5() {
791         var s = getValidInput();
792         assertEquals(0, s.setStartAt(3));
793
794         var t = getValidTextarea();
795         assertEquals(0, t.setStartAt(3));
796       }
797
798       // setText
799       function testSetText1() {
800         var s       = getValidInput();
801         s._startAt  = 2;
802         s._endAt    = 3;
803         s.setText("foo");
804         assertEquals("sefooection", s.inputValue());
805
806         var t       = getValidTextarea();
807         t._startAt  = 2;
808         t._endAt    = 3;
809         t.setText("foo");
810         assertEquals("sefooection", t.inputValue());
811
812         setDefaultValue();
813       }
814
815       function testSetText2() {
816         var s       = getValidInput();
817         s._startAt  = 2;
818         s._endAt    = 3;
819         s.setText("foo");
820         assertEquals("foo", s.getText());
821
822         var t       = getValidTextarea();
823         t._startAt  = 2;
824         t._endAt    = 3;
825         t.setText("foo");
826         assertEquals("foo", t.getText());
827
828         setDefaultValue();
829       }
830
831       function testSetText3() {
832         var s       = getValidInput();
833         s._startAt  = 2;
834         s._endAt    = 3;
835         s.setText("foo");
836         assertEquals(2, s.startAt());
837
838         var t       = getValidTextarea();
839         t._startAt  = 2;
840         t._endAt    = 3;
841         t.setText("foo");
842         assertEquals(2, t.startAt());
843
844         setDefaultValue();
845       }
846
847       function testSetText4() {
848         var s       = getValidInput();
849         s._startAt  = 2;
850         s._endAt    = 3;
851         s.setText("foo");
852         assertEquals(5, s.endAt());
853
854         var t       = getValidTextarea();
855         t._startAt  = 2;
856         t._endAt    = 3;
857         t.setText("foo");
858         assertEquals(5, t.endAt());
859
860         setDefaultValue();
861       }
862
863       function testSetText5() {
864         var s = getValidInput();
865         s.setText("foo");
866         assertEquals("foo", s.inputValue());
867
868         var t = getValidTextarea();
869         t.setText("foo");
870         assertEquals("foo", t.inputValue());
871
872         setDefaultValue();
873       }
874
875       function testSetText6() {
876         var s = getValidInput();
877         s.setText("foo");
878         assertEquals("foo", s.getText());
879
880         var t = getValidTextarea();
881         t.setText("foo");
882         assertEquals("foo", t.getText());
883
884         setDefaultValue();
885       }
886
887       function testSetText7() {
888         var s = getValidInput();
889         s.setText("foo");
890         assertEquals(0, s.startAt());
891
892         var t = getValidTextarea();
893         t.setText("foo");
894         assertEquals(0, t.startAt());
895
896         setDefaultValue();
897       }
898
899       function testSetText8() {
900         var s = getValidInput();
901         s.setText("foo");
902         assertEquals(3, s.endAt());
903
904         var t = getValidTextarea();
905         t.setText("foo");
906         assertEquals(3, t.endAt());
907
908         setDefaultValue();
909       }
910
911       // startAt
912       function testStartAt1() {
913         var s = getValidInput();
914         assertEquals(0, s.startAt());
915
916         var t = getValidTextarea();
917         assertEquals(0, t.startAt());
918       }
919
920       function testStartAt2() {
921         var s = getValidInput();
922         s.setStartAt(5);
923         assertEquals(5, s.startAt());
924
925         var t = getValidTextarea();
926         t.setStartAt(5);
927         assertEquals(5, t.startAt());
928       }
929
930       function testStartAt3() {
931         var s = getValidInput();
932         s.setStartAt(-1);
933         assertEquals(0, s.startAt());
934
935         var t = getValidTextarea();
936         t.setStartAt(-1);
937         assertEquals(0, t.startAt());
938       }
939
940       function testStartAt4() {
941         var s = getValidInput();
942         s.setStartAt(8);
943         assertEquals(8, s.startAt());
944
945         var t = getValidTextarea();
946         t.setStartAt(8);
947         assertEquals(8, t.startAt());
948       }
949
950       function testStartAt5() {
951         var s = getValidInput();
952         s.setStartAt(9);
953         assertEquals(0, s.startAt());
954
955         var t = getValidTextarea();
956         t.setStartAt(9);
957         assertEquals(0, t.startAt());
958       }
959
960       function testStartAt6() {
961         var s = getValidInput();
962         s.setEndAt(2);
963         s.setStartAt(3);
964         assertEquals(0, s.startAt());
965
966         var t = getValidTextarea();
967         t.setEndAt(2);
968         t.setStartAt(3);
969         assertEquals(0, t.startAt());
970       }
971
972       function testStartAt7() {
973         var s = getValidInput();
974         s.setEndAt(3);
975         s.setStartAt(3);
976         assertEquals(0, s.startAt());
977
978         var t = getValidTextarea();
979         t.setEndAt(3);
980         t.setStartAt(3);
981         assertEquals(0, t.startAt());
982       }
983
984       // unvalidate
985       function testUnvalidate3() {
986         var s = getValidInput();
987         s.unvalidate();
988         assertFalse(s.isValidInput());
989
990         var t = getValidTextarea();
991         t.unvalidate();
992         assertFalse(t.isValidInput());
993       }
994
995       function testUnvalidate2() {
996         var s = getValidInput();
997         assertTrue(s.isValidInput());
998
999         var t = getValidTextarea();
1000         assertTrue(t.isValidInput());
1001       }
1002
1003       // others
1004       function testSetStartAndEnd1() {
1005         var s = getValidInput();
1006         s.setStartAt(3);
1007         s.setEndAt(3);
1008         assertNotEquals(3, s.endAt());
1009
1010         var t = getValidTextarea();
1011         t.setStartAt(3);
1012         t.setEndAt(3);
1013         assertNotEquals(3, t.endAt());
1014       }
1015
1016       function testSetStartAndEnd2() {
1017         var s = getValidInput();
1018         s.setEndAt(3);
1019         s.setStartAt(3);
1020         assertNotEquals(3, s.startAt());
1021
1022         var t = getValidTextarea();
1023         t.setEndAt(3);
1024         t.setStartAt(3);
1025         assertNotEquals(3, t.startAt());
1026       }
1027
1028       function testInsertBeforeAndAfter1() {
1029         var s = getValidInput();
1030         s.insertBefore("<strong>");
1031         s.insertAfter("</strong>");
1032         assertEquals("<strong>selection</strong>", s.inputValue());
1033
1034         var t = getValidTextarea();
1035         t.insertBefore("<strong>");
1036         t.insertAfter("</strong>");
1037         assertEquals("<strong>selection</strong>", t.inputValue());
1038
1039         setDefaultValue();
1040       }
1041
1042       function testInsertBeforeAndAfter2() {
1043         var s = getValidInput();
1044         s.insertBefore("<strong>");
1045         s.insertAfter("</strong>");
1046         assertEquals("selection", s.getText());
1047
1048         var t = getValidTextarea();
1049         t.insertBefore("<strong>");
1050         t.insertAfter("</strong>");
1051         assertEquals("selection", t.getText());
1052
1053         setDefaultValue();
1054       }
1055
1056       function testInsertBeforeAndAfter3() {
1057         var s = getValidInput();
1058         s.insertBefore("<strong>");
1059         s.insertAfter("</strong>");
1060         assertEquals(8, s.startAt());
1061
1062         var t = getValidTextarea();
1063         t.insertBefore("<strong>");
1064         t.insertAfter("</strong>");
1065         assertEquals(8, t.startAt());
1066
1067         setDefaultValue();
1068       }
1069
1070       function testInsertBeforeAndAfter4() {
1071         var s = getValidInput();
1072         s.insertBefore("<strong>");
1073         s.insertAfter("</strong>");
1074         assertEquals(17, s.endAt());
1075
1076         var t = getValidTextarea();
1077         t.insertBefore("<strong>");
1078         t.insertAfter("</strong>");
1079         assertEquals(17, t.endAt());
1080
1081         setDefaultValue();
1082       }
1083     </script>
1084   </head>
1085
1086   <body>
1087     <input type="text" id="input_content" value="selection" />
1088     <textarea id="textarea_content">selection</textarea>
1089     <input type="button" id="input_button" value="Input's selection" />
1090     <input type="button" id="textarea_button" value="Textarea's selection" />
1091   </body>
1092
1093 </html>