| // Copyright 2013 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.LOCALE = 'en_US'; |
| goog.provide('goog.date.durationTest'); |
| goog.setTestOnly('goog.date.durationTest'); |
| |
| goog.require('goog.date.duration'); |
| goog.require('goog.i18n.DateTimeFormat'); |
| goog.require('goog.i18n.DateTimeSymbols'); |
| goog.require('goog.i18n.DateTimeSymbols_bn'); // Bengali |
| goog.require('goog.i18n.DateTimeSymbols_en'); |
| goog.require('goog.i18n.DateTimeSymbols_fa'); // Persian |
| goog.require('goog.testing.jsunit'); |
| |
| var MINUTE_MS = 60000; |
| var HOUR_MS = 60 * MINUTE_MS; |
| var DAY_MS = 24 * HOUR_MS; |
| |
| var duration = goog.date.duration.format; |
| |
| function testFormatDurationZeroMinutes() { |
| assertEquals('0 minutes', duration(0)); |
| assertEquals('0 minutes', duration(MINUTE_MS - 1)); |
| } |
| |
| function testFormatDurationMinutes() { |
| assertEquals('1 minute', duration(MINUTE_MS)); |
| assertEquals('1 minute', duration(MINUTE_MS + 1)); |
| assertEquals('5 minutes', duration(5 * MINUTE_MS)); |
| assertEquals('45 minutes', duration(45 * MINUTE_MS)); |
| } |
| |
| function testFormatDurationHours() { |
| assertEquals('1 hour', duration(HOUR_MS)); |
| assertEquals('1 hour', duration(HOUR_MS + 1)); |
| assertEquals('1 hour 1 minute', duration(HOUR_MS + MINUTE_MS)); |
| assertEquals('1 hour 45 minutes', duration(HOUR_MS + 45 * MINUTE_MS)); |
| |
| assertEquals('5 hours', duration(5 * HOUR_MS)); |
| assertEquals('5 hours', duration(5 * HOUR_MS + 1)); |
| assertEquals('5 hours 1 minute', duration(5 * HOUR_MS + MINUTE_MS)); |
| assertEquals('5 hours 45 minutes', duration(5 * HOUR_MS + 45 * MINUTE_MS)); |
| |
| assertEquals('11 hours', duration(11 * HOUR_MS)); |
| assertEquals('11 hours', duration(11 * HOUR_MS + 1)); |
| assertEquals('11 hours 1 minute', duration(11 * HOUR_MS + MINUTE_MS)); |
| assertEquals('11 hours 45 minutes', |
| duration(11 * HOUR_MS + 45 * MINUTE_MS)); |
| } |
| |
| function testFormatDurationDays() { |
| assertEquals('1 day', duration(DAY_MS)); |
| assertEquals('1 day', duration(DAY_MS + 1)); |
| assertEquals('1 day 1 minute', duration(DAY_MS + MINUTE_MS)); |
| assertEquals('1 day 45 minutes', duration(DAY_MS + 45 * MINUTE_MS)); |
| assertEquals('1 day 1 hour', duration(DAY_MS + HOUR_MS)); |
| assertEquals('1 day 11 hours', duration(DAY_MS + 11 * HOUR_MS)); |
| assertEquals('1 day 1 hour 1 minute', |
| duration(DAY_MS + HOUR_MS + MINUTE_MS)); |
| assertEquals('1 day 1 hour 45 minutes', |
| duration(DAY_MS + HOUR_MS + 45 * MINUTE_MS)); |
| assertEquals('1 day 11 hours 1 minute', |
| duration(DAY_MS + 11 * HOUR_MS + MINUTE_MS)); |
| assertEquals('1 day 11 hours 45 minutes', |
| duration(DAY_MS + 11 * HOUR_MS + 45 * MINUTE_MS)); |
| |
| assertEquals('11 days', duration(11 * DAY_MS)); |
| assertEquals('11 days', duration(11 * DAY_MS + 1)); |
| assertEquals('11 days 1 minute', duration(11 * DAY_MS + MINUTE_MS)); |
| assertEquals('11 days 45 minutes', duration(11 * DAY_MS + 45 * MINUTE_MS)); |
| assertEquals('11 days 1 hour', duration(11 * DAY_MS + HOUR_MS)); |
| assertEquals('11 days 11 hours', duration(11 * DAY_MS + 11 * HOUR_MS)); |
| assertEquals('11 days 1 hour 1 minute', |
| duration(11 * DAY_MS + HOUR_MS + MINUTE_MS)); |
| assertEquals('11 days 1 hour 45 minutes', |
| duration(11 * DAY_MS + HOUR_MS + 45 * MINUTE_MS)); |
| assertEquals('11 days 11 hours 1 minute', |
| duration(11 * DAY_MS + 11 * HOUR_MS + MINUTE_MS)); |
| assertEquals('11 days 11 hours 45 minutes', |
| duration(11 * DAY_MS + 11 * HOUR_MS + 45 * MINUTE_MS)); |
| } |
| |
| function testFormatDurationPersianDigits() { |
| goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fa; |
| |
| // ۱ minute |
| assertEquals(localizeNumber(1) + ' minute', duration(MINUTE_MS)); |
| // ۲ minutes |
| assertEquals(localizeNumber(2) + ' minutes', duration(2 * MINUTE_MS)); |
| // ۱۰ hours |
| assertEquals(localizeNumber(10) + ' hours', duration(10 * HOUR_MS)); |
| // ۲۳ days |
| assertEquals(localizeNumber(23) + ' days', duration(23 * DAY_MS)); |
| |
| // Restore to English, to make sure we don't mess up other tests |
| goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; |
| } |
| |
| function testFormatDurationBengaliDigits() { |
| goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_bn; |
| |
| // ১ minute |
| assertEquals(localizeNumber(1) + ' minute', duration(MINUTE_MS)); |
| // ২ minutes |
| assertEquals(localizeNumber(2) + ' minutes', duration(2 * MINUTE_MS)); |
| // ১০ hours |
| assertEquals(localizeNumber(10) + ' hours', duration(10 * HOUR_MS)); |
| // ২৩ days |
| assertEquals(localizeNumber(23) + ' days', duration(23 * DAY_MS)); |
| |
| // Restore to English, to make sure we don't mess up other tests |
| goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en; |
| } |
| |
| function localizeNumber(value) { |
| // Quick conversion to national digits, to increase readability of the |
| // tests above. |
| return goog.i18n.DateTimeFormat.localizeNumbers(value); |
| } |