1<!doctype html>
2<!--
3@license
4Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
5This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
6The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
8Code distributed by Google as part of the polymer project is also
9subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
10-->
11<html>
12<head>
13  <meta charset="UTF-8">
14  <title>iron-range-behavior</title>
15  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
16
17  <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
18  <script src="../../web-component-tester/browser.js"></script>
19  <script src="../../test-fixture/test-fixture-mocha.js"></script>
20
21  <link rel="import" href="x-progressbar.html">
22  <link rel="import" href="../../test-fixture/test-fixture.html">
23</head>
24<body>
25
26  <test-fixture id="trivialRange">
27    <template>
28      <x-progressbar></x-progressbar>
29    </template>
30  </test-fixture>
31
32  <script>
33    suite('<x-progressbar>', function() {
34      var range;
35
36      setup(function() {
37        range = fixture('trivialRange');
38      });
39
40      test('check default', function() {
41        assert.equal(range.min, 0);
42        assert.equal(range.max, 100);
43        assert.equal(range.value, 0);
44      });
45
46      test('set value', function(done) {
47        range.value = 50;
48        flush(function() {
49          assert.equal(range.value, 50);
50          // test clamp value
51          range.value = 60.1;
52          flush(function() {
53            assert.equal(range.value, 60);
54            done();
55          });
56        });
57      });
58
59      test('set max', function(done) {
60        range.max = 10;
61        range.value = 11;
62        flush(function() {
63          assert.equal(range.value, range.max);
64          done();
65        });
66      });
67
68      test('test ratio', function(done) {
69        range.max = 10;
70        range.value = 5;
71        flush(function() {
72          assert.equal(range.ratio, 50);
73          done();
74        });
75      });
76
77      test('set min', function(done) {
78        range.min = 10
79        range.max = 50;
80        range.value = 30;
81        flush(function() {
82          assert.equal(range.ratio, 50);
83          range.value = 0;
84          flush(function() {
85            assert.equal(range.value, range.min);
86            done();
87          });
88        });
89      });
90
91      test('set step', function(done) {
92        range.min = 0;
93        range.max = 10;
94        range.value = 5.1;
95        flush(function() {
96          assert.equal(range.value, 5);
97          range.step = 0.1;
98          range.value = 5.1;
99          flush(function() {
100            assert.equal(range.value, 5.1);
101            done();
102          });
103        });
104      });
105
106      test('set large step', function(done) {
107        // PolymerElements/paper-slider#135
108        range.min = 0;
109        range.max = 2625;
110        range.step = 875;
111        range.value = 875;
112        flush(function() {
113          assert.equal(range.value, 875);
114          done();
115        });
116      });
117
118      test('set step with min', function(done) {
119        range.min = -0.9;
120        range.max = 1.1;
121        range.step = 0.5;
122        range.value = -0.5;
123        flush(function() {
124          assert.equal(range.value, -0.4);
125          range.value = 0.7;
126          flush(function() {
127            assert.equal(range.value, 0.6);
128            done();
129          });
130        });
131      });
132
133      test('odd values', function(done) {
134        range.min = 1;
135        range.max = 7;
136        range.step = 2;
137        range.value = 3;
138
139        flush(function() {
140          assert.equal(range.value, 3);
141
142          range.value += range.step;
143          assert.equal(range.value, 5);
144
145          range.value += range.step;
146          assert.equal(range.value, 7);
147          done();
148        });
149      });
150
151      test('negative values should round up', function(done) {
152        range.min = -10;
153        range.max = 10;
154        range.step = 0.1;
155        range.value = -8.4252;
156
157        flush(function() {
158          assert.equal(range.value, -8.4);
159          done();
160        });
161      });
162
163      test('positive values should round up', function(done) {
164        range.min = 10;
165        range.max = 100;
166        range.step = 0.25;
167        range.value = 19.34567;
168
169        flush(function() {
170          assert.equal(range.value, 19.25);
171          done();
172        });
173      });
174
175    });
176
177  </script>
178
179</body>
180</html>
181