| // Copyright 2012 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.testing.events.OnlineHandlerTest'); |
| goog.setTestOnly('goog.testing.events.OnlineHandlerTest'); |
| |
| goog.require('goog.events'); |
| goog.require('goog.net.NetworkStatusMonitor'); |
| goog.require('goog.testing.events.EventObserver'); |
| goog.require('goog.testing.events.OnlineHandler'); |
| goog.require('goog.testing.jsunit'); |
| |
| var handler; |
| |
| var observer; |
| |
| function tearDown() { |
| handler = null; |
| observer = null; |
| } |
| |
| function testInitialValue() { |
| createHandler(true); |
| assertEquals(true, handler.isOnline()); |
| createHandler(false); |
| assertEquals(false, handler.isOnline()); |
| } |
| |
| function testStateChange() { |
| createHandler(true); |
| assertEventCounts(0 /* expectedOnlineEvents */, |
| 0 /* expectedOfflineEvents */); |
| |
| // Expect no events. |
| handler.setOnline(true); |
| assertEquals(true, handler.isOnline()); |
| assertEventCounts(0 /* expectedOnlineEvents */, |
| 0 /* expectedOfflineEvents */); |
| |
| // Expect one offline event. |
| handler.setOnline(false); |
| assertEquals(false, handler.isOnline()); |
| assertEventCounts(0 /* expectedOnlineEvents */, |
| 1 /* expectedOfflineEvents */); |
| |
| // Expect no events. |
| handler.setOnline(false); |
| assertEquals(false, handler.isOnline()); |
| assertEventCounts(0 /* expectedOnlineEvents */, |
| 1 /* expectedOfflineEvents */); |
| |
| // Expect one online event. |
| handler.setOnline(true); |
| assertEquals(true, handler.isOnline()); |
| assertEventCounts(1 /* expectedOnlineEvents */, |
| 1 /* expectedOfflineEvents */); |
| } |
| |
| function createHandler(initialValue) { |
| handler = new goog.testing.events.OnlineHandler(initialValue); |
| observer = new goog.testing.events.EventObserver(); |
| goog.events.listen(handler, |
| [goog.net.NetworkStatusMonitor.EventType.ONLINE, |
| goog.net.NetworkStatusMonitor.EventType.OFFLINE], |
| observer); |
| } |
| |
| function assertEventCounts(expectedOnlineEvents, expectedOfflineEvents) { |
| assertEquals(expectedOnlineEvents, observer.getEvents( |
| goog.net.NetworkStatusMonitor.EventType.ONLINE).length); |
| assertEquals(expectedOfflineEvents, observer.getEvents( |
| goog.net.NetworkStatusMonitor.EventType.OFFLINE).length); |
| } |