aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/ui/dimensionpicker_test.html
blob: 178822ada3db1ee7fff3fb3b589e62c2f55ea443 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<!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.
-->
<!--
  Author: robbyw@google.com (Robby Walker)
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Closure Unit Tests - goog.ui.DimensionPicker</title>
  <script src="../base.js"></script>
  <script>
    goog.require('goog.dom');
    goog.require('goog.dom.TagName');
    goog.require('goog.math.Size');
    goog.require('goog.testing.jsunit');
    goog.require('goog.testing.events');
    goog.require('goog.testing.ui.rendererasserts');
    goog.require('goog.ui.DimensionPicker');
    goog.require('goog.ui.DimensionPickerRenderer');
  </script>
</head>
<body>
  <div id="render"></div>
  <div id="decorate"></div>
  <script>
    var picker;
    var render = goog.dom.getElement('render');
    var decorate = goog.dom.getElement('decorate');

    function setUp() {
      picker = new goog.ui.DimensionPicker();
      render.innerHTML = '';
      decorate.innerHTML = '';
    }

    function tearDown() {
      picker.dispose();
    }

    function testConstructor() {
      assertNotNull('Should have successful construction', picker);
      assertNull('Should not be in document', picker.getElement());
    }

    function testRender() {
      picker.render(render);

      assertEquals('Should create 1 child', 1, render.childNodes.length);
      assertEquals('Should be a div', goog.dom.TagName.DIV,
          render.firstChild.tagName);
    }

    function testDecorate() {
      picker.decorate(decorate);

      assertNotEquals('Should add several children', decorate.firstChild,
          decorate.lastChild);
    }

    function testHighlightedSize() {
      picker.render(render);

      var size = picker.getValue();
      assertEquals('Should have 0 columns highlighted', 0, size.width);
      assertEquals('Should have 0 rows highlighted', 0, size.height);

      picker.setValue(1, 2);

      size = picker.getValue();
      assertEquals('Should have 1 column highlighted', 1, size.width);
      assertEquals('Should have 2 rows highlighted', 2, size.height);

      picker.setValue(new goog.math.Size(3, 4));
      size = picker.getValue();
      assertEquals('Should have 3 columns highlighted', 3, size.width);
      assertEquals('Should have 4 rows highlighted', 4, size.height);
    }

    function testSizeShown() {
      picker.render(render);

      var size = picker.getSize();
      assertEquals('Should have 5 columns visible', 5, size.width);
      assertEquals('Should have 5 rows visible', 5, size.height);

      picker.setValue(4, 4);
      size = picker.getSize();
      assertEquals('Should have 5 columns visible', 5, size.width);
      assertEquals('Should have 5 rows visible', 5, size.height);

      picker.setValue(12, 13);
      size = picker.getSize();
      assertEquals('Should have 13 columns visible', 13, size.width);
      assertEquals('Should have 14 rows visible', 14, size.height);

      picker.setValue(20, 20);
      size = picker.getSize();
      assertEquals('Should have 20 columns visible', 20, size.width);
      assertEquals('Should have 20 rows visible', 20, size.height);

      picker.setValue(2, 3);
      size = picker.getSize();
      assertEquals('Should have 5 columns visible', 5, size.width);
      assertEquals('Should have 5 rows visible', 5, size.height);
    }

    function testHandleMove() {
      picker.render(render);
      var renderer = picker.getRenderer();
      var mouseMoveElem = renderer.getMouseMoveElement(picker);

      picker.rightToLeft_ = false;
      var e = {
        target: mouseMoveElem,
        offsetX: 18, // Each grid square currently a magic 18px.
        offsetY: 36
      };

      picker.handleMouseMove(e);
      var size = picker.getValue();
      assertEquals('Should have 1 column highlighted', 1, size.width);
      assertEquals('Should have 2 rows highlighted', 2, size.height);

      picker.rightToLeft_ = true;

      picker.handleMouseMove(e);
      var size = picker.getValue();
      // In RTL we pick from the right side of the picker, so an offsetX of 0
      // would actually mean select all columns.
      assertEquals('Should have columns to the right of the mouse highlighted',
          Math.ceil((mouseMoveElem.offsetWidth - e.offsetX) / 18), size.width);
      assertEquals('Should have 2 rows highlighted', 2, size.height);
    }

    function testDispose() {
      var element = picker.getElement();
      picker.render(render);
      picker.dispose();
      assertTrue('Picker should have been disposed of', picker.isDisposed());
      assertNull('Picker element reference should have been nulled out',
          picker.getElement());
    }

    function testRendererDoesntCallGetCssClassInConstructor() {
      goog.testing.ui.rendererasserts.
          assertNoGetCssClassCallsInConstructor(
              goog.ui.DimensionPickerRenderer);
    }
  </script>
</body>
</html>