| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <html> | |
| 3 <!-- | |
| 4 Copyright (c) 2010 The Ginsu Authors. All rights reserved. | |
| 5 Use of this source code is governed by a BSD-style license that can be | |
| 6 found in the LICENSE file. | |
| 7 --> | |
| 8 <head> | |
| 9 <title>Ginsu ViewController Tests</title> | |
| 10 <link rel="stylesheet" type="text/css" href="jsunit/css/jsUnitStyle.css"> | |
| 11 <link rel="stylesheet" type="text/css" href="css/ginsu.css"/> | |
| 12 <script src="closure/closure/goog/base.js"></script> | |
| 13 <script src="jsunit/app/jsUnitCore.js"></script> | |
| 14 <script type="text/javascript"> | |
| 15 goog.require('goog.dom'); | |
| 16 goog.require('goog.math'); | |
| 17 goog.require('goog.events.EventTarget'); | |
| 18 goog.require('goog.functions'); | |
| 19 goog.require('goog.fx.Dragger'); | |
| 20 goog.require('goog.fx.DragEvent'); | |
| 21 goog.require('goog.testing.MockControl'); | |
| 22 goog.require('goog.testing.events'); | |
| 23 goog.require('goog.testing.jsunit'); | |
| 24 </script> | |
| 25 <script type="text/javascript" src="events/dragger.js"></script> | |
| 26 <script type="text/javascript" src="events/event.js"></script> | |
| 27 <script type="text/javascript" src="events/eventtype.js"></script> | |
| 28 <script type="text/javascript" src="tools/tool.js"></script> | |
| 29 <script type="text/javascript" src="tools/orbittool.js"></script> | |
| 30 <script type="text/javascript" src="controllers/viewcontroller.js"> </script> | |
| 31 <script type="text/javascript"> | |
| 32 goog.require('ginsu.events.Dragger'); | |
| 33 goog.require('ginsu.tools.Tool'); | |
| 34 goog.require('ginsu.controllers.ViewController'); | |
| 35 </script> | |
| 36 | |
| 37 <script type="text/javascript"> | |
| 38 /** | |
| 39 * @fileoverview These unit tests are for the Ginsu ViewController | |
| 40 */ | |
| 41 | |
| 42 /** | |
| 43 * The global mock controller. Instanced in setUp(). | |
| 44 */ | |
| 45 var mockControl_; | |
| 46 | |
| 47 /** | |
| 48 * Set function for each test, called by the testing framework at the | |
| 49 * start of each test. Creates the 'gs_container' div and mocks the | |
| 50 * GSPlugin API. | |
| 51 */ | |
| 52 function setUp() { | |
| 53 mockControl_ = new goog.testing.MockControl(); | |
| 54 createTestingDivs(); | |
| 55 createGinsuMocks(); | |
| 56 } | |
| 57 | |
| 58 function tearDown() { | |
| 59 mockControl_.$tearDown(); | |
| 60 deleteTestingDivs(); | |
| 61 } | |
| 62 | |
| 63 /** | |
| 64 * Test the ViewController empty constructor, this should throw an error. | |
| 65 */ | |
| 66 function testEmptyConstructor() { | |
| 67 var viewController = null; | |
| 68 var caughtException = false; | |
| 69 try { | |
| 70 viewController = new ginsu.controllers.ViewController(); | |
| 71 } catch(e) { | |
| 72 // This is correct behavior. | |
| 73 caughtException = true; | |
| 74 } | |
| 75 assertTrue('ViewController empty constructor', caughtException); | |
| 76 assertNull(viewController); | |
| 77 } | |
| 78 | |
| 79 /** | |
| 80 * Test the ViewController constructor, passing in a valid DOM element. | |
| 81 */ | |
| 82 function testConstructor() { | |
| 83 var gsViewElement = goog.dom.getElement('ginsu_view'); | |
| 84 assertNotNull(gsViewElement); | |
| 85 | |
| 86 var gsView = null; | |
| 87 try { | |
| 88 gsView = new ginsu.controllers.ViewController(gsViewElement); | |
| 89 } catch(e) { | |
| 90 fail('ViewController constructor'); | |
| 91 } | |
| 92 assertNotNull(gsView); | |
| 93 assertNotNull(gsView.dragListener_); | |
| 94 assertTrue('ViewController must listen for start-drag events', | |
| 95 goog.events.hasListener(gsView.dragListener_, | |
| 96 goog.fx.Dragger.EventType.START, false)); | |
| 97 assertTrue('ViewController must listen for drag events', | |
| 98 goog.events.hasListener(gsView.dragListener_, | |
| 99 goog.fx.Dragger.EventType.DRAG, false)); | |
| 100 assertTrue('ViewController must listen for end-drag events', | |
| 101 goog.events.hasListener(gsView.dragListener_, | |
| 102 goog.fx.Dragger.EventType.END, false)); | |
| 103 } | |
| 104 | |
| 105 /** | |
| 106 * Test the frame function. | |
| 107 */ | |
| 108 function testFrame() { | |
| 109 var gsViewElement = goog.dom.getElement('ginsu_view'); | |
| 110 assertNotNull(gsViewElement); | |
| 111 var gsView = new ginsu.controllers.ViewController(gsViewElement); | |
| 112 var frame = gsView.frame(); | |
| 113 assertEquals(0, frame.x); | |
| 114 assertEquals(0, frame.y); | |
| 115 assertEquals(gsViewElement.clientWidth, frame.width); | |
| 116 assertEquals(gsViewElement.clientHeight, frame.height); | |
| 117 } | |
| 118 | |
| 119 /** | |
| 120 * Build the div elements used by the application. | |
| 121 */ | |
| 122 function createTestingDivs() { | |
| 123 var backgroundDiv = goog.dom.createDom('div', { | |
| 124 'id': 'background', | |
| 125 'style': 'position:absolute; top:0; left:0; height:200; width:200;' | |
| 126 }); | |
| 127 goog.dom.appendChild(document.body, backgroundDiv); | |
| 128 goog.dom.appendChild(backgroundDiv, goog.dom.createDom('div', { | |
| 129 'id': 'ginsu_toolbar', 'class': 'goog-toolbar' | |
| 130 })); | |
| 131 goog.dom.appendChild(backgroundDiv, goog.dom.createDom('div', { | |
| 132 'id': 'ginsu_view', 'class': 'ginsu_view' | |
| 133 })); | |
| 134 } | |
| 135 | |
| 136 /** | |
| 137 * Remove all the div elements created during setup, so that later test | |
| 138 * runs don't have duplicate elements. | |
| 139 */ | |
| 140 function deleteTestingDivs() { | |
| 141 var backgroundDiv = goog.dom.$('background'); | |
| 142 goog.dom.removeChildren(backgroundDiv); | |
| 143 goog.dom.removeNode(backgroundDiv); | |
| 144 } | |
| 145 | |
| 146 /** | |
| 147 * Attach mock functions to the |ginsu_view| element that mimic the | |
| 148 * Ginsu API. There are only three entry points, and they | |
| 149 * don't get tested here (they are tested in the client code) so it's | |
| 150 * best to just stub them out. | |
| 151 */ | |
| 152 function createGinsuMocks() { | |
| 153 var gsMockDiv = goog.dom.getElement('ginsu_view'); | |
| 154 gsMockDiv.valueForKey = goog.functions.constant([0, 0, 0, 1]); | |
| 155 gsMockDiv.setValueForKey = function(mockOrientation) {}; | |
| 156 gsMockDiv.logMessage = function(message) { | |
| 157 top.console.log(message); | |
| 158 }; | |
| 159 } | |
| 160 | |
| 161 </script> | |
| 162 </head> | |
| 163 </html> | |
| OLD | NEW |