| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <html> | |
| 3 <head> | |
| 4 <script src="../../../../../fast/js/resources/js-test-pre.js"></script> | |
| 5 <script src="../../../../../fast/forms/resources/picker-common.js"></script> | |
| 6 <script src="resources/calendar-picker-common.js"></script> | |
| 7 </head> | |
| 8 <body> | |
| 9 <p id="description"></p> | |
| 10 <div id="console"></div> | |
| 11 <input type=date id=date value="2000-01-02"> | |
| 12 <script> | |
| 13 description("Tests if calendar picker key bindings work as expected."); | |
| 14 | |
| 15 debug('Check that page popup doesn\'t exist at first.'); | |
| 16 shouldBeNull('document.getElementById("mock-page-popup")'); | |
| 17 | |
| 18 openPicker(document.getElementById('date'), test1); | |
| 19 | |
| 20 function test1() { | |
| 21 debug('Check that page popup exists.'); | |
| 22 shouldBe('popupWindow.pagePopupController.toString()', '"[object PagePopupCo
ntroller]"'); | |
| 23 | |
| 24 shouldBeFalse('isCalendarTableScrollingWithAnimation()'); | |
| 25 shouldBeEqualToString('currentMonth()', '2000-01'); | |
| 26 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 27 shouldBeEqualToString('selectedDayCells()', '2000-01-02'); | |
| 28 shouldBeEqualToString('highlightedValue()', '2000-01-02'); | |
| 29 shouldBeEqualToString('highlightedDayCells()', '2000-01-02'); | |
| 30 | |
| 31 debug('Check that arrow keys work properly even when going between weeks and
months.'); | |
| 32 | |
| 33 debug('press up'); | |
| 34 eventSender.keyDown('upArrow'); | |
| 35 shouldBeEqualToString('currentMonth()', '2000-01'); | |
| 36 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 37 shouldBeEqualToString('selectedDayCells()', '2000-01-02'); | |
| 38 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 39 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 40 | |
| 41 debug('press up'); | |
| 42 eventSender.keyDown('upArrow'); | |
| 43 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 44 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 45 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 46 shouldBeEqualToString('selectedDayCells()', ''); | |
| 47 shouldBeEqualToString('highlightedValue()', '1999-12-19'); | |
| 48 shouldBeEqualToString('highlightedDayCells()', '1999-12-19'); | |
| 49 | |
| 50 debug('press down'); | |
| 51 eventSender.keyDown('downArrow'); | |
| 52 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 53 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 54 shouldBeEqualToString('selectedDayCells()', ''); | |
| 55 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 56 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 57 | |
| 58 debug('press down'); | |
| 59 eventSender.keyDown('downArrow'); | |
| 60 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 61 shouldBeEqualToString('currentMonth()', '2000-01'); | |
| 62 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 63 shouldBeEqualToString('selectedDayCells()', '2000-01-02'); | |
| 64 shouldBeEqualToString('highlightedValue()', '2000-01-02'); | |
| 65 shouldBeEqualToString('highlightedDayCells()', '2000-01-02'); | |
| 66 | |
| 67 debug('press up'); | |
| 68 eventSender.keyDown('upArrow'); | |
| 69 shouldBeEqualToString('currentMonth()', '2000-01'); | |
| 70 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 71 shouldBeEqualToString('selectedDayCells()', '2000-01-02'); | |
| 72 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 73 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 74 | |
| 75 // Move from top left of January 2000 to bottom right of December 1999. | |
| 76 debug('press left'); | |
| 77 eventSender.keyDown('leftArrow'); | |
| 78 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 79 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 80 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 81 shouldBeEqualToString('selectedDayCells()', ''); | |
| 82 shouldBeEqualToString('highlightedValue()', '1999-12-25'); | |
| 83 shouldBeEqualToString('highlightedDayCells()', '1999-12-25'); | |
| 84 | |
| 85 debug('press right'); | |
| 86 eventSender.keyDown('rightArrow'); | |
| 87 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 88 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 89 shouldBeEqualToString('selectedDayCells()', ''); | |
| 90 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 91 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 92 | |
| 93 debug("press pageDown"); | |
| 94 eventSender.keyDown('pageDown'); | |
| 95 shouldBeEqualToString('currentMonth()', '2000-01'); | |
| 96 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 97 shouldBeEqualToString('selectedDayCells()', '2000-01-02'); | |
| 98 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 99 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 100 | |
| 101 debug("press pageUp"); | |
| 102 eventSender.keyDown('pageUp'); | |
| 103 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 104 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 105 shouldBeEqualToString('selectedDayCells()', ''); | |
| 106 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 107 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 108 | |
| 109 debug("press m"); | |
| 110 eventSender.keyDown('m'); | |
| 111 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 112 shouldBeEqualToString('currentMonth()', '2000-01'); | |
| 113 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 114 shouldBeEqualToString('selectedDayCells()', '2000-01-02'); | |
| 115 shouldBeEqualToString('highlightedValue()', '2000-01-23'); | |
| 116 shouldBeEqualToString('highlightedDayCells()', '2000-01-23'); | |
| 117 | |
| 118 debug("press shift + m"); | |
| 119 eventSender.keyDown('M'); | |
| 120 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 121 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 122 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 123 shouldBeEqualToString('selectedDayCells()', ''); | |
| 124 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 125 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 126 | |
| 127 debug("press y"); | |
| 128 eventSender.keyDown('y'); | |
| 129 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 130 shouldBeEqualToString('currentMonth()', '2000-12'); | |
| 131 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 132 shouldBeEqualToString('selectedDayCells()', ''); | |
| 133 shouldBeEqualToString('highlightedValue()', '2000-12-24'); | |
| 134 shouldBeEqualToString('highlightedDayCells()', '2000-12-24'); | |
| 135 | |
| 136 debug("press shift + y"); | |
| 137 eventSender.keyDown('Y'); | |
| 138 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 139 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 140 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 141 shouldBeEqualToString('selectedDayCells()', ''); | |
| 142 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 143 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 144 | |
| 145 debug("press d"); | |
| 146 eventSender.keyDown('d'); | |
| 147 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 148 shouldBeEqualToString('currentMonth()', '2009-12'); | |
| 149 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 150 shouldBeEqualToString('selectedDayCells()', ''); | |
| 151 shouldBeEqualToString('highlightedValue()', '2009-12-27'); | |
| 152 shouldBeEqualToString('highlightedDayCells()', '2009-12-27'); | |
| 153 | |
| 154 debug("press shift + d"); | |
| 155 eventSender.keyDown('D'); | |
| 156 shouldBeTrue('isCalendarTableScrollingWithAnimation()'); | |
| 157 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 158 shouldBeEqualToString('selectedValue()', '2000-01-02'); | |
| 159 shouldBeEqualToString('selectedDayCells()', ''); | |
| 160 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 161 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 162 | |
| 163 debug("press enter"); | |
| 164 eventSender.keyDown('\n'); | |
| 165 shouldBeEqualToString('currentMonth()', '1999-12'); | |
| 166 shouldBeEqualToString('selectedValue()', '1999-12-26'); | |
| 167 shouldBeEqualToString('selectedDayCells()', '1999-12-26'); | |
| 168 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 169 shouldBeEqualToString('highlightedDayCells()', '1999-12-26'); | |
| 170 shouldBeEqualToString('document.getElementById("date").value', '1999-12-26')
; | |
| 171 | |
| 172 debug('Check if tabbing works.'); | |
| 173 shouldBeEqualToString('focusedElement()', '.list-view calendar-table-view'); | |
| 174 eventSender.keyDown('\t', ['shiftKey']); | |
| 175 shouldBeEqualToString('focusedElement()', '.calendar-navigation-button'); | |
| 176 eventSender.keyDown('\t', ['shiftKey']); | |
| 177 shouldBeEqualToString('focusedElement()', '.calendar-navigation-button today
-button'); | |
| 178 eventSender.keyDown('\t', ['shiftKey']); | |
| 179 shouldBeEqualToString('focusedElement()', '.calendar-navigation-button'); | |
| 180 eventSender.keyDown('\t', ['shiftKey']); | |
| 181 shouldBeEqualToString('focusedElement()', '.month-popup-button'); | |
| 182 | |
| 183 debug('open the month popup'); | |
| 184 eventSender.keyDown('\n'); | |
| 185 shouldBeTrue('popupWindow.global.picker.monthPopupView.isVisible'); | |
| 186 shouldBeEqualToString('highlightedMonthButton()', '1999-12'); | |
| 187 | |
| 188 debug("press down"); | |
| 189 eventSender.keyDown('downArrow'); | |
| 190 shouldBeEqualToString('highlightedMonthButton()', '2000-04'); | |
| 191 | |
| 192 debug("press right"); | |
| 193 eventSender.keyDown('rightArrow'); | |
| 194 shouldBeEqualToString('highlightedMonthButton()', '2000-05'); | |
| 195 | |
| 196 debug("press right"); | |
| 197 eventSender.keyDown('rightArrow'); | |
| 198 shouldBeEqualToString('highlightedMonthButton()', '2000-06'); | |
| 199 | |
| 200 debug("press right"); | |
| 201 eventSender.keyDown('rightArrow'); | |
| 202 shouldBeEqualToString('highlightedMonthButton()', '2000-07'); | |
| 203 | |
| 204 debug("press right"); | |
| 205 eventSender.keyDown('rightArrow'); | |
| 206 shouldBeEqualToString('highlightedMonthButton()', '2000-08'); | |
| 207 | |
| 208 debug("press right"); | |
| 209 eventSender.keyDown('rightArrow'); | |
| 210 shouldBeEqualToString('highlightedMonthButton()', '2000-09'); | |
| 211 | |
| 212 debug("press left"); | |
| 213 eventSender.keyDown('leftArrow'); | |
| 214 shouldBeEqualToString('highlightedMonthButton()', '2000-08'); | |
| 215 | |
| 216 debug("press up"); | |
| 217 eventSender.keyDown('upArrow'); | |
| 218 shouldBeEqualToString('highlightedMonthButton()', '2000-04'); | |
| 219 | |
| 220 debug("press pageDown"); | |
| 221 eventSender.keyDown('pageDown'); | |
| 222 shouldBeEqualToString('highlightedMonthButton()', '2001-04'); | |
| 223 | |
| 224 debug("press pageUp"); | |
| 225 eventSender.keyDown('pageUp'); | |
| 226 shouldBeEqualToString('highlightedMonthButton()', '2000-04'); | |
| 227 | |
| 228 debug('select month in the month popup'); | |
| 229 eventSender.keyDown('\n'); | |
| 230 shouldBeFalse('popupWindow.global.picker.monthPopupView.isVisible'); | |
| 231 shouldBeEqualToString('currentMonth()', '2000-04'); | |
| 232 shouldBeEqualToString('selectedValue()', '1999-12-26'); | |
| 233 shouldBeEqualToString('selectedDayCells()', ''); | |
| 234 shouldBeEqualToString('highlightedValue()', '1999-12-26'); | |
| 235 shouldBeEqualToString('highlightedDayCells()', ''); | |
| 236 | |
| 237 debug("focus calendar table"); | |
| 238 popupWindow.global.picker.calendarTableView.element.focus(); | |
| 239 | |
| 240 // Test twice in case midnight. | |
| 241 debug("press t"); | |
| 242 shouldBeTrue('testToday() || testToday()'); | |
| 243 | |
| 244 debug("press esc"); | |
| 245 eventSender.keyDown('\x1B'); | |
| 246 waitUntilClosing(test2AfterClosing); | |
| 247 } | |
| 248 | |
| 249 function test2AfterClosing() { | |
| 250 shouldBeNull('document.getElementById("mock-page-popup")'); | |
| 251 | |
| 252 finishJSTest(); | |
| 253 } | |
| 254 | |
| 255 function testToday() { | |
| 256 eventSender.keyDown('t'); | |
| 257 shouldBeTrue('isCalendarTableScrollingWithAnimation()', true /* quiet */); | |
| 258 var now = new Date(); | |
| 259 var expectedDate = serializeDate(now.getFullYear(), now.getMonth(), now.getD
ate()); | |
| 260 var expectedMonth = (new popupWindow.Month(now.getFullYear(), now.getMonth()
)).toString(); | |
| 261 return selectedValue() === expectedDate && | |
| 262 highlightedValue() === expectedDate && | |
| 263 currentMonth() === expectedMonth && | |
| 264 document.getElementById("date").value === expectedDate; | |
| 265 } | |
| 266 | |
| 267 function serializeDate(year, month, day) { | |
| 268 var yearString = String(year); | |
| 269 if (yearString.length < 4) | |
| 270 yearString = ("000" + yearString).substr(-4, 4); | |
| 271 return yearString + "-" + ("0" + (month + 1)).substr(-2, 2) + "-" + ("0" + d
ay).substr(-2, 2); | |
| 272 } | |
| 273 | |
| 274 function focusedElement() { | |
| 275 var element = popupWindow.document.activeElement; | |
| 276 if (!element) | |
| 277 return null; | |
| 278 var identifier = "." + element.className; | |
| 279 if (element.value) | |
| 280 identifier += "[value=" + element.value + "]"; | |
| 281 return identifier; | |
| 282 } | |
| 283 | |
| 284 </script> | |
| 285 <script src="../../../../../fast/js/resources/js-test-post.js"></script> | |
| 286 </body> | |
| 287 </html> | |
| OLD | NEW |