UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

131 lines (116 loc) 4.11 kB
<!DOCTYPE html> <html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Unit Tests - goog.locale.timeZoneDetection</title> <script src='../base.js'> </script> <script> goog.require('goog.locale.TimeZoneFingerprint'); goog.require('goog.locale.timeZoneDetection'); goog.require('goog.testing.jsunit'); </script> </head> <body> <script> /** * Mock date class with simplified properties of Date class for testing. * @constructor */ function MockDate() { /** * Time zone offset. For time zones with daylight saving, the different * offsets are represented as array of offsets. * @type {Array.<number>} * @private */ this.timezoneOffset_ = []; /** * Counter storing the index of next offset value to be returned from the * array of offset values. * @type {number} * @private */ this.offsetArrayCounter_ = 0; } /** * Does nothing because setting the time to calculate offset is not needed * in the mock class. * @param {number} ms Ignored. */ MockDate.prototype.setTime = function(ms) { // Do nothing. }; /** * Sets the time zone offset. * @param {Array.<number>} offset Time zone offset. */ MockDate.prototype.setTimezoneOffset = function(offset) { this.timezoneOffset_ = offset; }; /** * Returns consecutive offsets from array of time zone offsets on each call. * @return {number} Time zone offset. */ MockDate.prototype.getTimezoneOffset = function() { return this.timezoneOffset_.length > 1 ? this.timezoneOffset_[this.offsetArrayCounter_++] : this.timezoneOffset_[0]; }; function testGetFingerprint() { var mockDate = new MockDate(); mockDate.setTimezoneOffset([-480]); var fingerprint = goog.locale.timeZoneDetection.getFingerprint(mockDate); assertEquals(32, fingerprint); mockDate = new MockDate(); mockDate.setTimezoneOffset( [480, 420, 420, 480, 480, 420, 420, 420, 420, 420, 420, 420, 420]); fingerprint = goog.locale.timeZoneDetection.getFingerprint(mockDate); assertEquals(1294772902, fingerprint); } function testDetectTimeZone() { var mockDate = new MockDate(); mockDate.setTimezoneOffset([-480]); var timeZoneId = goog.locale.timeZoneDetection.detectTimeZone(undefined, mockDate); assertEquals('Asia/Hong_Kong', timeZoneId); mockDate = new MockDate(); mockDate.setTimezoneOffset( [480, 420, 420, 480, 480, 420, 420, 420, 420, 420, 420, 420, 420]); timeZoneId = goog.locale.timeZoneDetection.detectTimeZone('US', mockDate); assertEquals('America/Los_Angeles', timeZoneId); mockDate = new MockDate(); mockDate.setTimezoneOffset( [480, 420, 420, 480, 480, 420, 420, 420, 420, 420, 420, 420, 420]); timeZoneId = goog.locale.timeZoneDetection.detectTimeZone('CA', mockDate); assertEquals('America/Dawson', timeZoneId); } function testGetTimeZoneList() { var mockDate = new MockDate(); mockDate.setTimezoneOffset( [480, 420, 420, 480, 480, 420, 420, 420, 420, 420, 420, 420, 420]); var timeZoneList = goog.locale.timeZoneDetection.getTimeZoneList(undefined, mockDate); assertEquals('America/Los_Angeles', timeZoneList[0]); assertEquals('America/Whitehorse', timeZoneList[4]); assertEquals(5, timeZoneList.length); mockDate = new MockDate(); mockDate.setTimezoneOffset([-480]); timeZoneList = goog.locale.timeZoneDetection.getTimeZoneList(undefined, mockDate); assertEquals('Asia/Hong_Kong', timeZoneList[0]); assertEquals('Asia/Chongqing', timeZoneList[7]); assertEquals(16, timeZoneList.length); timeZoneList = goog.locale.timeZoneDetection.getTimeZoneList('AU', mockDate); assertEquals(1, timeZoneList.length); assertEquals('Australia/Perth', timeZoneList[0]); } </script> </body> </html>