Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,362 @@
|
||||
// Copyright 2008 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.ui.DatePickerTest');
|
||||
goog.setTestOnly('goog.ui.DatePickerTest');
|
||||
|
||||
goog.require('goog.a11y.aria');
|
||||
goog.require('goog.a11y.aria.Role');
|
||||
goog.require('goog.date.Date');
|
||||
goog.require('goog.date.DateRange');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.dom.classlist');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.i18n.DateTimeSymbols');
|
||||
goog.require('goog.i18n.DateTimeSymbols_en_US');
|
||||
goog.require('goog.i18n.DateTimeSymbols_zh_HK');
|
||||
goog.require('goog.style');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.ui.DatePicker');
|
||||
|
||||
var picker;
|
||||
var $$ = goog.dom.getElementsByTagNameAndClass;
|
||||
var sandbox;
|
||||
|
||||
function setUpPage() {
|
||||
sandbox = goog.dom.getElement('sandbox');
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
picker.dispose();
|
||||
goog.dom.removeChildren(sandbox);
|
||||
}
|
||||
|
||||
function testIsMonthOnLeft() {
|
||||
goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_US;
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
var head = $$('tr', 'goog-date-picker-head')[0];
|
||||
var month = $$('button', 'goog-date-picker-month',
|
||||
head.firstChild)[0];
|
||||
assertSameElements(
|
||||
'Button element must have expected class names',
|
||||
['goog-date-picker-btn', 'goog-date-picker-month'],
|
||||
goog.dom.classlist.get(month)
|
||||
);
|
||||
}
|
||||
|
||||
function testIsYearOnLeft() {
|
||||
goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh_HK;
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
var head = $$('tr', 'goog-date-picker-head')[0];
|
||||
var year = $$('button', 'goog-date-picker-year',
|
||||
head.firstChild)[0];
|
||||
assertSameElements(
|
||||
'Button element must have expected class names',
|
||||
['goog-date-picker-btn', 'goog-date-picker-year'],
|
||||
goog.dom.classlist.get(year)
|
||||
);
|
||||
}
|
||||
|
||||
function testHidingOfTableFoot0() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.setAllowNone(false);
|
||||
picker.setShowToday(false);
|
||||
picker.create(sandbox);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertFalse(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFoot1() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.setAllowNone(false);
|
||||
picker.setShowToday(true);
|
||||
picker.create(sandbox);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertTrue(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFoot2() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.setAllowNone(true);
|
||||
picker.setShowToday(false);
|
||||
picker.create(sandbox);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertTrue(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFoot3() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.setAllowNone(true);
|
||||
picker.setShowToday(true);
|
||||
picker.create(sandbox);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertTrue(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFootAfterCreate0() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setAllowNone(false);
|
||||
picker.setShowToday(false);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertFalse(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFootAfterCreate1() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setAllowNone(false);
|
||||
picker.setShowToday(true);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertTrue(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFootAfterCreate2() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setAllowNone(true);
|
||||
picker.setShowToday(false);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertTrue(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testHidingOfTableFootAfterCreate3() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setAllowNone(true);
|
||||
picker.setShowToday(true);
|
||||
var tFoot = $$('tfoot')[0];
|
||||
assertTrue(goog.style.isElementShown(tFoot));
|
||||
}
|
||||
|
||||
function testLongDateFormat() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setLongDateFormat(true);
|
||||
var dates = $$('td', 'goog-date-picker-date');
|
||||
for (var i = 0; i < dates.length; i++) {
|
||||
assertEquals(2, goog.dom.getTextContent(dates[i]).length);
|
||||
}
|
||||
}
|
||||
|
||||
function testGetActiveMonth() {
|
||||
picker = new goog.ui.DatePicker(new Date(2000, 5, 5));
|
||||
var month = picker.getActiveMonth();
|
||||
assertObjectEquals(new goog.date.Date(2000, 5, 1), month);
|
||||
|
||||
month.setMonth(10);
|
||||
assertObjectEquals('modifying the returned object is safe',
|
||||
new goog.date.Date(2000, 5, 1), picker.getActiveMonth());
|
||||
}
|
||||
|
||||
function testGetDate() {
|
||||
picker = new goog.ui.DatePicker(new Date(2000, 0, 1));
|
||||
var date = picker.getDate();
|
||||
assertObjectEquals(new goog.date.Date(2000, 0, 1), date);
|
||||
|
||||
date.setMonth(1);
|
||||
assertObjectEquals('modifying the returned date is safe',
|
||||
new goog.date.Date(2000, 0, 1), picker.getDate());
|
||||
|
||||
picker.setDate(null);
|
||||
assertNull('no date is selected', picker.getDate());
|
||||
}
|
||||
|
||||
function testGetDateAt() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setDate(new Date(2000, 5, 5));
|
||||
var date = picker.getDateAt(0, 0);
|
||||
assertTrue(date.equals(picker.grid_[0][0]));
|
||||
|
||||
date.setMonth(1);
|
||||
assertFalse(date.equals(picker.grid_[0][0]));
|
||||
}
|
||||
|
||||
function testGetDateAt_NotInGrid() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setDate(new Date(2000, 5, 5));
|
||||
var date = picker.getDateAt(-1, 0);
|
||||
assertNull(date);
|
||||
|
||||
date = picker.getDateAt(0, -1);
|
||||
assertNull(date);
|
||||
}
|
||||
|
||||
function testGetDateElementAt() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setDate(new Date(2000, 5, 5));
|
||||
var element = picker.getDateElementAt(0, 0);
|
||||
assertEquals('td', element.tagName.toLowerCase());
|
||||
assertObjectEquals(element, picker.elTable_[1][1]);
|
||||
}
|
||||
|
||||
function testGetDateElementAt_NotInTable() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.create(sandbox);
|
||||
picker.setDate(new Date(2000, 5, 5));
|
||||
var element = picker.getDateElementAt(-1, 0);
|
||||
assertNull(element);
|
||||
|
||||
element = picker.getDateElementAt(0, -1);
|
||||
assertNull(element);
|
||||
|
||||
element = picker.getDateElementAt(picker.elTable_.length - 1, 0);
|
||||
assertNull(element);
|
||||
|
||||
element = picker.getDateElementAt(0, picker.elTable_[0].length - 1);
|
||||
assertNull(element);
|
||||
}
|
||||
|
||||
function testSetDate() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.createDom();
|
||||
picker.enterDocument();
|
||||
var selectEvents = 0;
|
||||
var changeEvents = 0;
|
||||
var changeActiveMonthEvents = 0;
|
||||
goog.events.listen(picker, goog.ui.DatePicker.Events.SELECT,
|
||||
function() {
|
||||
selectEvents++;
|
||||
});
|
||||
goog.events.listen(picker, goog.ui.DatePicker.Events.CHANGE,
|
||||
function() {
|
||||
changeEvents++;
|
||||
});
|
||||
goog.events.listen(picker, goog.ui.DatePicker.Events.CHANGE_ACTIVE_MONTH,
|
||||
function() {
|
||||
changeActiveMonthEvents++;
|
||||
});
|
||||
|
||||
// Set date.
|
||||
picker.setDate(new Date(2010, 1, 26));
|
||||
assertEquals('no select event dispatched', 1, selectEvents);
|
||||
assertEquals('no change event dispatched', 1, changeEvents);
|
||||
assertEquals('no change active month event dispatched',
|
||||
1, changeActiveMonthEvents);
|
||||
assertTrue('date is set',
|
||||
new goog.date.Date(2010, 1, 26).equals(picker.getDate()));
|
||||
|
||||
// Set date to same date.
|
||||
picker.setDate(new Date(2010, 1, 26));
|
||||
assertEquals('1 select event dispatched', 2, selectEvents);
|
||||
assertEquals('no change event dispatched', 1, changeEvents);
|
||||
assertEquals('no change active month event dispatched',
|
||||
1, changeActiveMonthEvents);
|
||||
|
||||
// Set date to different date.
|
||||
picker.setDate(new Date(2010, 1, 27));
|
||||
assertEquals('another select event dispatched', 3, selectEvents);
|
||||
assertEquals('1 change event dispatched', 2, changeEvents);
|
||||
assertEquals('2 change active month events dispatched',
|
||||
1, changeActiveMonthEvents);
|
||||
|
||||
// Set date to a date in a different month.
|
||||
picker.setDate(new Date(2010, 2, 27));
|
||||
assertEquals('another select event dispatched', 4, selectEvents);
|
||||
assertEquals('another change event dispatched', 3, changeEvents);
|
||||
assertEquals('3 change active month event dispatched',
|
||||
2, changeActiveMonthEvents);
|
||||
|
||||
// Set date to none.
|
||||
picker.setDate(null);
|
||||
assertEquals('another select event dispatched', 5, selectEvents);
|
||||
assertEquals('another change event dispatched', 4, changeEvents);
|
||||
assertNull('date cleared', picker.getDate());
|
||||
}
|
||||
|
||||
function testChangeActiveMonth() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
var changeActiveMonthEvents = 0;
|
||||
goog.events.listen(picker, goog.ui.DatePicker.Events.CHANGE_ACTIVE_MONTH,
|
||||
function() {
|
||||
changeActiveMonthEvents++;
|
||||
});
|
||||
|
||||
// Set date.
|
||||
picker.setDate(new Date(2010, 1, 26));
|
||||
assertEquals('no change active month event dispatched',
|
||||
1, changeActiveMonthEvents);
|
||||
assertTrue('date is set',
|
||||
new goog.date.Date(2010, 1, 26).equals(picker.getDate()));
|
||||
|
||||
// Change to next month.
|
||||
picker.nextMonth();
|
||||
assertEquals('1 change active month event dispatched',
|
||||
2, changeActiveMonthEvents);
|
||||
assertTrue('date should still be the same',
|
||||
new goog.date.Date(2010, 1, 26).equals(picker.getDate()));
|
||||
|
||||
// Change to next year.
|
||||
picker.nextYear();
|
||||
assertEquals('2 change active month events dispatched',
|
||||
3, changeActiveMonthEvents);
|
||||
|
||||
// Change to previous month.
|
||||
picker.previousMonth();
|
||||
assertEquals('3 change active month events dispatched',
|
||||
4, changeActiveMonthEvents);
|
||||
|
||||
// Change to previous year.
|
||||
picker.previousYear();
|
||||
assertEquals('4 change active month events dispatched',
|
||||
5, changeActiveMonthEvents);
|
||||
}
|
||||
|
||||
function testUserSelectableDates() {
|
||||
var dateRange = new goog.date.DateRange(
|
||||
new goog.date.Date(2010, 1, 25), new goog.date.Date(2010, 1, 27));
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.setUserSelectableDateRange(dateRange);
|
||||
assertFalse('should not be selectable date',
|
||||
picker.isUserSelectableDate_(new goog.date.Date(2010, 1, 24)));
|
||||
assertTrue('should be a selectable date',
|
||||
picker.isUserSelectableDate_(new goog.date.Date(2010, 1, 25)));
|
||||
assertTrue('should be a selectable date',
|
||||
picker.isUserSelectableDate_(new goog.date.Date(2010, 1, 26)));
|
||||
assertTrue('should be a selectable date',
|
||||
picker.isUserSelectableDate_(new goog.date.Date(2010, 1, 27)));
|
||||
assertFalse('should not be selectable date',
|
||||
picker.isUserSelectableDate_(new goog.date.Date(2010, 1, 28)));
|
||||
}
|
||||
|
||||
function testUniqueCellIds() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
picker.render();
|
||||
var cells = goog.dom.getElementsByTagNameAndClass('td', undefined,
|
||||
picker.getElement());
|
||||
var existingIds = {};
|
||||
var numCells = cells.length;
|
||||
for (var i = 0; i < numCells; i++) {
|
||||
assertNotNull(cells[i]);
|
||||
if (goog.a11y.aria.getRole(cells[i]) == goog.a11y.aria.Role.GRIDCELL) {
|
||||
assertNonEmptyString('cell id is non empty', cells[i].id);
|
||||
assertUndefined('cell id is not unique',
|
||||
existingIds[cells[i].id]);
|
||||
existingIds[cells[i].id] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function testDecoratePreservesClasses() {
|
||||
picker = new goog.ui.DatePicker();
|
||||
var div = goog.dom.createDom('div', 'existing-class');
|
||||
picker.decorate(div);
|
||||
assertTrue(goog.dom.classlist.contains(div, picker.getBaseCssClass()));
|
||||
assertTrue(goog.dom.classlist.contains(div, 'existing-class'));
|
||||
}
|
||||
Reference in New Issue
Block a user