headless-squirrel 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +55 -0
- data/Rakefile +27 -0
- data/bin/jstest +10 -0
- data/lib/headless_squirrel.rb +2 -0
- data/lib/headless_squirrel/console.rb +24 -0
- data/lib/headless_squirrel/runner.rb +70 -0
- data/lib/headless_squirrel/test.rb +17 -0
- data/lib/headless_squirrel/test_case.rb +158 -0
- data/test/fixtures/a_unit_test.html +27 -0
- data/test/fixtures/a_unit_test.js +22 -0
- data/test/fixtures/syntax_error.html +27 -0
- data/test/fixtures/syntax_error.js +5 -0
- data/test/fixtures/type_error.html +27 -0
- data/test/fixtures/type_error.js +1 -0
- data/test/regression/prototype/unit/ajax_test.html +29 -0
- data/test/regression/prototype/unit/array_test.html +28 -0
- data/test/regression/prototype/unit/assets/prototype.js +4900 -0
- data/test/regression/prototype/unit/assets/unittest.css +50 -0
- data/test/regression/prototype/unit/assets/unittest.js +615 -0
- data/test/regression/prototype/unit/assets/unittest_transport.js +1 -0
- data/test/regression/prototype/unit/base_test.html +27 -0
- data/test/regression/prototype/unit/class_test.html +27 -0
- data/test/regression/prototype/unit/date_test.html +27 -0
- data/test/regression/prototype/unit/dom_test.html +304 -0
- data/test/regression/prototype/unit/element_mixins_test.html +30 -0
- data/test/regression/prototype/unit/enumerable_test.html +35 -0
- data/test/regression/prototype/unit/event_test.html +31 -0
- data/test/regression/prototype/unit/fixtures/ajax.html +2 -0
- data/test/regression/prototype/unit/fixtures/ajax.js +42 -0
- data/test/regression/prototype/unit/fixtures/array.html +1 -0
- data/test/regression/prototype/unit/fixtures/class.js +83 -0
- data/test/regression/prototype/unit/fixtures/content.html +1 -0
- data/test/regression/prototype/unit/fixtures/data.json +1 -0
- data/test/regression/prototype/unit/fixtures/dom.css +84 -0
- data/test/regression/prototype/unit/fixtures/dom.html +278 -0
- data/test/regression/prototype/unit/fixtures/dom.js +17 -0
- data/test/regression/prototype/unit/fixtures/element_mixins.html +4 -0
- data/test/regression/prototype/unit/fixtures/element_mixins.js +2 -0
- data/test/regression/prototype/unit/fixtures/empty.html +0 -0
- data/test/regression/prototype/unit/fixtures/empty.js +1 -0
- data/test/regression/prototype/unit/fixtures/enumerable.html +8 -0
- data/test/regression/prototype/unit/fixtures/enumerable.js +23 -0
- data/test/regression/prototype/unit/fixtures/event.html +4 -0
- data/test/regression/prototype/unit/fixtures/form.html +108 -0
- data/test/regression/prototype/unit/fixtures/function.js +13 -0
- data/test/regression/prototype/unit/fixtures/hash.js +25 -0
- data/test/regression/prototype/unit/fixtures/hello.js +1 -0
- data/test/regression/prototype/unit/fixtures/logo.gif +0 -0
- data/test/regression/prototype/unit/fixtures/object.html +6 -0
- data/test/regression/prototype/unit/fixtures/object.js +7 -0
- data/test/regression/prototype/unit/fixtures/position.html +9 -0
- data/test/regression/prototype/unit/fixtures/selector.html +71 -0
- data/test/regression/prototype/unit/fixtures/string.js +8 -0
- data/test/regression/prototype/unit/fixtures/unittest.html +18 -0
- data/test/regression/prototype/unit/form_test.html +135 -0
- data/test/regression/prototype/unit/function_test.html +27 -0
- data/test/regression/prototype/unit/hash_test.html +27 -0
- data/test/regression/prototype/unit/number_test.html +27 -0
- data/test/regression/prototype/unit/object_test.html +32 -0
- data/test/regression/prototype/unit/periodical_executer_test.html +27 -0
- data/test/regression/prototype/unit/position_test.html +36 -0
- data/test/regression/prototype/unit/prototype_test.html +27 -0
- data/test/regression/prototype/unit/range_test.html +27 -0
- data/test/regression/prototype/unit/regexp_test.html +27 -0
- data/test/regression/prototype/unit/selector_test.html +98 -0
- data/test/regression/prototype/unit/string_test.html +27 -0
- data/test/regression/prototype/unit/tests/ajax_test.js +379 -0
- data/test/regression/prototype/unit/tests/array_test.js +186 -0
- data/test/regression/prototype/unit/tests/base_test.js +43 -0
- data/test/regression/prototype/unit/tests/class_test.js +136 -0
- data/test/regression/prototype/unit/tests/date_test.js +5 -0
- data/test/regression/prototype/unit/tests/dom_test.js +1493 -0
- data/test/regression/prototype/unit/tests/element_mixins_test.js +32 -0
- data/test/regression/prototype/unit/tests/enumerable_test.js +271 -0
- data/test/regression/prototype/unit/tests/event_test.js +235 -0
- data/test/regression/prototype/unit/tests/form_test.js +382 -0
- data/test/regression/prototype/unit/tests/function_test.js +133 -0
- data/test/regression/prototype/unit/tests/hash_test.js +178 -0
- data/test/regression/prototype/unit/tests/number_test.js +44 -0
- data/test/regression/prototype/unit/tests/object_test.js +180 -0
- data/test/regression/prototype/unit/tests/periodical_executer_test.js +15 -0
- data/test/regression/prototype/unit/tests/position_test.js +44 -0
- data/test/regression/prototype/unit/tests/prototype_test.js +43 -0
- data/test/regression/prototype/unit/tests/range_test.js +58 -0
- data/test/regression/prototype/unit/tests/regexp_test.js +42 -0
- data/test/regression/prototype/unit/tests/selector_test.js +408 -0
- data/test/regression/prototype/unit/tests/string_test.js +548 -0
- data/test/regression/prototype/unit/tests/unittest_test.js +148 -0
- data/test/regression/prototype/unit/unittest_test.html +45 -0
- data/test/regression/prototype/upstream +1 -0
- data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_ipce_alt_text.html +1 -0
- data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_ipce_collection.js +1 -0
- data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_result.html +1 -0
- data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_result2.html +1 -0
- data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_tagged.html +1 -0
- data/test/regression/scriptaculous/unit/_ajax_inplaceeditor_text.html +1 -0
- data/test/regression/scriptaculous/unit/_ajax_updater_result.html +20 -0
- data/test/regression/scriptaculous/unit/_autocomplete_result.html +11 -0
- data/test/regression/scriptaculous/unit/_autocomplete_result_nobr.html +1 -0
- data/test/regression/scriptaculous/unit/ajax_autocompleter_test.html +243 -0
- data/test/regression/scriptaculous/unit/ajax_inplaceeditor_test.html +895 -0
- data/test/regression/scriptaculous/unit/assets/builder.js +134 -0
- data/test/regression/scriptaculous/unit/assets/controls.js +963 -0
- data/test/regression/scriptaculous/unit/assets/dragdrop.js +973 -0
- data/test/regression/scriptaculous/unit/assets/effects.js +1122 -0
- data/test/regression/scriptaculous/unit/assets/javascripttest.rb +203 -0
- data/test/regression/scriptaculous/unit/assets/prototype.js +4320 -0
- data/test/regression/scriptaculous/unit/assets/scriptaculous.js +66 -0
- data/test/regression/scriptaculous/unit/assets/slider.js +273 -0
- data/test/regression/scriptaculous/unit/assets/sound.js +57 -0
- data/test/regression/scriptaculous/unit/assets/unittest.js +566 -0
- data/test/regression/scriptaculous/unit/bdd_test.html +150 -0
- data/test/regression/scriptaculous/unit/builder_test.html +262 -0
- data/test/regression/scriptaculous/unit/dragdrop_test.html +131 -0
- data/test/regression/scriptaculous/unit/effects_test.html +547 -0
- data/test/regression/scriptaculous/unit/element_test.html +116 -0
- data/test/regression/scriptaculous/unit/icon.png +0 -0
- data/test/regression/scriptaculous/unit/index.html +70 -0
- data/test/regression/scriptaculous/unit/loading_test.html +41 -0
- data/test/regression/scriptaculous/unit/position_clone_test.html +312 -0
- data/test/regression/scriptaculous/unit/slider_test.html +437 -0
- data/test/regression/scriptaculous/unit/sortable_test.html +205 -0
- data/test/regression/scriptaculous/unit/string_test.html +71 -0
- data/test/regression/scriptaculous/unit/unittest_test.html +154 -0
- data/test/regression/scriptaculous/upstream +1 -0
- data/test/test_helper.rb +20 -0
- data/test/unit/runner_test.rb +165 -0
- data/test/unit/test_case_test.rb +207 -0
- data/test/unit/test_test.rb +24 -0
- metadata +209 -0
@@ -0,0 +1,547 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<title>script.aculo.us Unit test file</title>
|
6
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
7
|
+
<script src="assets/prototype.js" type="text/javascript"></script>
|
8
|
+
<script src="assets/scriptaculous.js" type="text/javascript"></script>
|
9
|
+
<script src="assets/unittest.js" type="text/javascript"></script>
|
10
|
+
<link rel="stylesheet" href="../test.css" type="text/css" />
|
11
|
+
<style type="text/css" media="screen">
|
12
|
+
#rotfl {
|
13
|
+
color: red;
|
14
|
+
font-family: serif;
|
15
|
+
font-style: italic;
|
16
|
+
font-size: 40px;
|
17
|
+
background: #fed;
|
18
|
+
padding: 1em;
|
19
|
+
width: 400px;
|
20
|
+
}
|
21
|
+
.final {
|
22
|
+
color: #fff;
|
23
|
+
font-style: italic;
|
24
|
+
background: #000;
|
25
|
+
opacity: 0.5;
|
26
|
+
}
|
27
|
+
body div.final {
|
28
|
+
font-size: 20px;
|
29
|
+
}
|
30
|
+
</style>
|
31
|
+
</head>
|
32
|
+
<body>
|
33
|
+
<h1>script.aculo.us Unit test file</h1>
|
34
|
+
<p>
|
35
|
+
Tests for effects.js
|
36
|
+
</p>
|
37
|
+
|
38
|
+
<!-- generated elements go in here -->
|
39
|
+
<div id="sandbox"></div>
|
40
|
+
|
41
|
+
<!-- Log output -->
|
42
|
+
<div id="testlog"> </div>
|
43
|
+
|
44
|
+
<div class="morphing blub" style="font-size:25px;color:#f00">Well</div>
|
45
|
+
<div class="morphing">You know</div>
|
46
|
+
<div id="blah" style="border:1px solid black;width:100px">Whoo-hoo!</div>
|
47
|
+
|
48
|
+
<div id="error_message">ERROR MESSAGE</div>
|
49
|
+
<div id="error_message_2">SECOND ERROR MESSAGE</div>
|
50
|
+
<div id="error_message_3" style="border:1px solid red; width:100px; color: #f00">THIRD ERROR MESSAGE</div>
|
51
|
+
|
52
|
+
<ul class="error-list" id="error_test_ul">
|
53
|
+
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit,</li>
|
54
|
+
<li>sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
|
55
|
+
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris</li>
|
56
|
+
<li>nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in</li>
|
57
|
+
<li>reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</li>
|
58
|
+
</ul>
|
59
|
+
|
60
|
+
<div id="rotfl">ROTFL</div>
|
61
|
+
|
62
|
+
<div id="tween">foo!</div>
|
63
|
+
|
64
|
+
<!-- Tests follow -->
|
65
|
+
<script type="text/javascript" language="javascript" charset="utf-8">
|
66
|
+
// <![CDATA[
|
67
|
+
|
68
|
+
var TAGS =
|
69
|
+
['div','span','ol','ul','table','p','h1','h2','h3','h4','h5','h6'];
|
70
|
+
|
71
|
+
var COMBINED_EFFECTS =
|
72
|
+
['Fade','Appear','BlindUp','BlindDown','Puff','SwitchOff','DropOut','Shake',
|
73
|
+
'SlideUp','SlideDown','Pulsate','Squish','Fold','Grow','Shrink'];
|
74
|
+
|
75
|
+
var COMBINED_RJS_EFFECTS = $w('fade appear blind_up blind_down puff switch_off '+
|
76
|
+
'drop_out shake slide_up slide_down pulsate squish fold grow shrink');
|
77
|
+
|
78
|
+
var tmp, tmp2;
|
79
|
+
|
80
|
+
new Test.Unit.Runner({
|
81
|
+
|
82
|
+
setup: function() { with (this) {
|
83
|
+
$('sandbox').innerHTML = "";
|
84
|
+
}},
|
85
|
+
|
86
|
+
teardown: function() { with(this) {
|
87
|
+
// remove all queued effects
|
88
|
+
Effect.Queue.each(function(e) { e.cancel() });
|
89
|
+
}},
|
90
|
+
|
91
|
+
testExceptionOnNonExistingElement: function() { with(this) {
|
92
|
+
assertRaise('ElementDoesNotExistError',
|
93
|
+
function(){new Effect.Opacity('nothing-to-see-here')});
|
94
|
+
assertRaise('ElementDoesNotExistError',
|
95
|
+
function(){new Effect.Move('nothing-to-see-here')});
|
96
|
+
assertRaise('ElementDoesNotExistError',
|
97
|
+
function(){new Effect.Scale('nothing-to-see-here')});
|
98
|
+
assertRaise('ElementDoesNotExistError',
|
99
|
+
function(){new Effect.Highlight('nothing-to-see-here')});
|
100
|
+
}},
|
101
|
+
|
102
|
+
testCallbacks: function() { with(this) {
|
103
|
+
tmp = tmp2 = 0;
|
104
|
+
var e1 = new Effect.Opacity('sandbox',{from:1.0,to:0.5,duration:0.5,
|
105
|
+
beforeStart: function() { tmp++ },
|
106
|
+
beforeStartInternal: function() { tmp++ },
|
107
|
+
beforeSetup: function() { tmp++ },
|
108
|
+
beforeSetupInternal: function() { tmp++ },
|
109
|
+
afterSetup: function() { tmp++ },
|
110
|
+
afterSetupInternal: function() { tmp++ },
|
111
|
+
beforeUpdate: function() { tmp2++ },
|
112
|
+
beforeUpdateInternal: function() { tmp2++ },
|
113
|
+
beforeFinish: function() { tmp++ },
|
114
|
+
beforeFinishInternal: function() { tmp++ },
|
115
|
+
afterFinish: function() { tmp++ },
|
116
|
+
afterFinishInternal: function() { tmp++ }
|
117
|
+
});
|
118
|
+
wait(1000, function() {
|
119
|
+
assertEqual(10, tmp);
|
120
|
+
assert(tmp2 > 0);
|
121
|
+
});
|
122
|
+
}},
|
123
|
+
|
124
|
+
testEvent: function() { with(this) {
|
125
|
+
tmp = 0;
|
126
|
+
new Effect.Event({ afterFinish:function(){ tmp++ }, position:'end'});
|
127
|
+
wait(100, function() {
|
128
|
+
assertEqual(1, tmp);
|
129
|
+
});
|
130
|
+
}},
|
131
|
+
|
132
|
+
testTransition: function() { with(this) {
|
133
|
+
// false implies linear
|
134
|
+
var e = new Effect.Opacity('sandbox',{transition:false,from:0.0,to:0.25,duration:0.5});
|
135
|
+
assert(e.options.transition == Effect.Transitions.linear);
|
136
|
+
|
137
|
+
wait(1000, function() {
|
138
|
+
assertEqual(0.25, $('sandbox').getStyle('opacity'));
|
139
|
+
// default to sinoidal
|
140
|
+
var e = new Effect.Opacity('sandbox',{from:0.0,to:0.25,duration:0.5});
|
141
|
+
assert(e.options.transition == Effect.Transitions.sinoidal);
|
142
|
+
wait(1000, function() {
|
143
|
+
assertEqual(0.25, $('sandbox').getStyle('opacity'));
|
144
|
+
|
145
|
+
var transitions = [
|
146
|
+
{ transition: Effect.Transitions.linear, expected: 1 },
|
147
|
+
{ transition: Effect.Transitions.sinoidal, expected: 1 },
|
148
|
+
{ transition: Effect.Transitions.reverse, expected: 0 },
|
149
|
+
{ transition: Effect.Transitions.flicker, expected: 1 },
|
150
|
+
{ transition: Effect.Transitions.wobble, expected: 1 },
|
151
|
+
{ transition: Effect.Transitions.pulse, expected: 1 },
|
152
|
+
{ transition: Effect.Transitions.none, expected: 0 }
|
153
|
+
];
|
154
|
+
|
155
|
+
transitions.each(function(t){
|
156
|
+
var e = new Effect.Opacity('sandbox',{sync:true, from:0, to: 1, transition:t.transition});
|
157
|
+
assert(e.options.transition == t.transition);
|
158
|
+
e.render(1.0);
|
159
|
+
assertEqual(t.expected, e.position, t.transition);
|
160
|
+
});
|
161
|
+
|
162
|
+
});
|
163
|
+
});
|
164
|
+
}},
|
165
|
+
|
166
|
+
testInspect: function() { with(this) {
|
167
|
+
var e1 = new Effect.Opacity('sandbox',{from:1.0,to:0.5,duration:0.5});
|
168
|
+
info( e1.inspect() );
|
169
|
+
assertEqual(0, e1.inspect().indexOf('#<Effect:'));
|
170
|
+
assert(e1.inspect().indexOf('idle')>0);
|
171
|
+
wait(1000, function() {
|
172
|
+
assert(e1.inspect().indexOf('finished')>0);
|
173
|
+
});
|
174
|
+
}},
|
175
|
+
|
176
|
+
testDefaultOptions: function() { with(this) {
|
177
|
+
var oldDefaultOptions = Object.extend({},Effect.DefaultOptions);
|
178
|
+
|
179
|
+
assertEqual(1.0, Effect.DefaultOptions.duration);
|
180
|
+
Effect.DefaultOptions.duration = 0.5;
|
181
|
+
var e1 = new Effect.Opacity('sandbox');
|
182
|
+
assertEqual(0.5, e1.options.duration);
|
183
|
+
|
184
|
+
wait(750, function() {
|
185
|
+
assertEqual('finished', e1.state);
|
186
|
+
Effect.DefaultOptions = oldDefaultOptions;
|
187
|
+
});
|
188
|
+
}},
|
189
|
+
|
190
|
+
testEffectsQueue: function() { with(this) {
|
191
|
+
var e1 = new Effect.Highlight('sandbox');
|
192
|
+
var e2 = new Effect.Appear('sandbox');
|
193
|
+
|
194
|
+
assertEqual(2, Effect.Queue.effects.length);
|
195
|
+
|
196
|
+
tmp = 0;
|
197
|
+
Effect.Queue.each(function(e) { tmp++ });
|
198
|
+
assertEqual(2, tmp);
|
199
|
+
|
200
|
+
// the internal interval timer should be active
|
201
|
+
assertNotNull(Effect.Queue.interval);
|
202
|
+
e1.cancel();
|
203
|
+
e2.cancel();
|
204
|
+
assertEqual(0, Effect.Queue.effects.length);
|
205
|
+
|
206
|
+
// should be inactive after all effects are removed from queue
|
207
|
+
assertNull(Effect.Queue.interval);
|
208
|
+
|
209
|
+
// should be in e3,e1,e2 order
|
210
|
+
var e1 = new Effect.Highlight('sandbox');
|
211
|
+
var e2 = new Effect.Appear('sandbox',{queue:'end'});
|
212
|
+
var e3 = new Effect.Fade('sandbox',{queue:'front'});
|
213
|
+
assert(e2.startOn > e1.startOn);
|
214
|
+
assert(e3.startOn < e1.startOn);
|
215
|
+
assert(e3.startOn < e2.startOn);
|
216
|
+
assertEqual(3, Effect.Queue.effects.length);
|
217
|
+
|
218
|
+
Effect.Queue.each(function(e) { e.cancel() });
|
219
|
+
assertEqual(0, Effect.Queue.effects.length);
|
220
|
+
}},
|
221
|
+
|
222
|
+
testScopedEffectsQueue: function() { with(this) {
|
223
|
+
var e1 = new Effect.Highlight('sandbox', {queue: {scope:'myscope'} } );
|
224
|
+
var e2 = new Effect.Appear('sandbox', {queue: {scope:'myscope'} } );
|
225
|
+
var e3 = new Effect.Highlight('sandbox', {queue: {scope:'secondscope'} } );
|
226
|
+
var e4 = new Effect.Appear('sandbox');
|
227
|
+
|
228
|
+
assertEqual(2, Effect.Queues.get('myscope').effects.length);
|
229
|
+
assertEqual(1, Effect.Queues.get('secondscope').effects.length);
|
230
|
+
assertEqual(1, Effect.Queues.get('global').effects.length);
|
231
|
+
assertEqual(Effect.Queue.effects.length, Effect.Queues.get('global').effects.length);
|
232
|
+
|
233
|
+
var tmp = 0;
|
234
|
+
Effect.Queues.get('myscope').effects.each(function(e) { tmp++ });
|
235
|
+
assertEqual(2, tmp);
|
236
|
+
|
237
|
+
// the internal interval timer should be active
|
238
|
+
assertNotNull(Effect.Queues.get('myscope').interval);
|
239
|
+
assertNotNull(Effect.Queues.get('secondscope').interval);
|
240
|
+
assertNotNull(Effect.Queues.get('global').interval);
|
241
|
+
|
242
|
+
e1.cancel(); e2.cancel(); e3.cancel(); e4.cancel();
|
243
|
+
|
244
|
+
assertEqual(0, Effect.Queues.get('myscope').effects.length);
|
245
|
+
assertEqual(0, Effect.Queues.get('secondscope').effects.length);
|
246
|
+
assertEqual(0, Effect.Queues.get('global').effects.length);
|
247
|
+
|
248
|
+
// should be inactive after all effects are removed from queues
|
249
|
+
assertNull(Effect.Queues.get('myscope').interval);
|
250
|
+
assertNull(Effect.Queues.get('secondscope').interval);
|
251
|
+
assertNull(Effect.Queues.get('global').interval);
|
252
|
+
|
253
|
+
// should be in e3 and e4 together and then e1,e2 order
|
254
|
+
var e1 = new Effect.Highlight('sandbox', {queue: {scope:'myscope'} } );
|
255
|
+
var e2 = new Effect.Appear('sandbox', {queue: {position: 'end', scope:'myscope'} } );
|
256
|
+
var e3 = new Effect.Fade('sandbox', {queue: {position: 'front', scope:'myscope'} } );
|
257
|
+
var e4 = new Effect.Appear('sandbox');
|
258
|
+
assert(e2.startOn > e1.startOn);
|
259
|
+
assert(e3.startOn < e1.startOn);
|
260
|
+
assert(e3.startOn < e2.startOn);
|
261
|
+
assert(e3.startOn = e4.startOn);
|
262
|
+
assertEqual(3, Effect.Queues.get('myscope').effects.length);
|
263
|
+
|
264
|
+
Effect.Queues.get('myscope').each(function(e) { e.cancel() });
|
265
|
+
assertEqual(0, Effect.Queues.get('myscope').effects.length);
|
266
|
+
|
267
|
+
Effect.Queues.get('global').each(function(e) { e.cancel() });
|
268
|
+
assertEqual(0, Effect.Queues.get('global').effects.length);
|
269
|
+
|
270
|
+
// should only allow the first two effects and ignore the third
|
271
|
+
var e1 = new Effect.Highlight('sandbox', {queue: {scope:'myscope', limit: 2} } );
|
272
|
+
var e2 = new Effect.Appear('sandbox', {queue: {position: 'end', scope:'myscope', limit: 2} } );
|
273
|
+
var e3 = new Effect.Fade('sandbox', {queue: {position: 'front', scope:'myscope', limit: 2} } );
|
274
|
+
|
275
|
+
assertEqual(2, Effect.Queues.get('myscope').effects.length);
|
276
|
+
}},
|
277
|
+
|
278
|
+
testEffectMultiple: function() { with(this) {
|
279
|
+
$('sandbox').appendChild(Builder.node('div',{id:'test_1'}));
|
280
|
+
$('sandbox').appendChild(Builder.node('div',{id:'test_2'},[Builder.node('div',{id:'test_2a'})]));
|
281
|
+
$('sandbox').appendChild(Builder.node('div',{id:'test_3'}));
|
282
|
+
|
283
|
+
// only direct child elements
|
284
|
+
Effect.multiple('sandbox',Effect.Fade);
|
285
|
+
assertEqual(3, Effect.Queue.effects.length);
|
286
|
+
|
287
|
+
Effect.Queue.each(function(e) { e.cancel() });
|
288
|
+
assertEqual(0, Effect.Queue.effects.length);
|
289
|
+
|
290
|
+
// call with array
|
291
|
+
Effect.multiple(['test_1','test_3'],Effect.Puff);
|
292
|
+
assertEqual(2, Effect.Queue.effects.length);
|
293
|
+
}},
|
294
|
+
|
295
|
+
testEffectTagifyText: function() { with(this) {
|
296
|
+
$('sandbox').innerHTML = "Blah<strong>bleb</strong> Blub";
|
297
|
+
assertEqual(3, $('sandbox').childNodes.length);
|
298
|
+
Effect.tagifyText('sandbox');
|
299
|
+
assertEqual(10, $('sandbox').childNodes.length);
|
300
|
+
|
301
|
+
Effect.multiple('sandbox', Effect.Fade);
|
302
|
+
assertEqual(10, Effect.Queue.effects.length);
|
303
|
+
}},
|
304
|
+
|
305
|
+
testEffectParallel: function() { with(this) {
|
306
|
+
assert( new Effect.Parallel() );
|
307
|
+
assert( new Effect.Parallel([]) );
|
308
|
+
assert( new Effect.Parallel([],{}) );
|
309
|
+
assert( new Effect.Parallel([
|
310
|
+
new Effect.Event({sync:true})
|
311
|
+
],{ duration: 2}) );
|
312
|
+
}},
|
313
|
+
|
314
|
+
testEffectTween: function() { with(this) {
|
315
|
+
// basic initialization
|
316
|
+
assert(new Effect.Tween(null,0,0,function(){}));
|
317
|
+
assert(new Effect.Tween(null,0,0,{duration:0.1},function(){}));
|
318
|
+
|
319
|
+
// fun with objects
|
320
|
+
var object = {
|
321
|
+
blech: 2,
|
322
|
+
foo: function(p){
|
323
|
+
this.bar = p;
|
324
|
+
}
|
325
|
+
};
|
326
|
+
assert(new Effect.Tween(object,0,1,{transition:Effect.Transitions.reverse},'blech'));
|
327
|
+
assert(new Effect.Tween(object,0,1,'foo'));
|
328
|
+
|
329
|
+
// fun with elements
|
330
|
+
assert(new Effect.Tween('tween',50,1,'update'));
|
331
|
+
|
332
|
+
wait(1500, function(){
|
333
|
+
assertEqual(0, object.blech);
|
334
|
+
assertEqual(1, object.bar);
|
335
|
+
assertEqual('1', $('tween').innerHTML);
|
336
|
+
});
|
337
|
+
}},
|
338
|
+
|
339
|
+
// test if all combined effects correctly initialize themselves
|
340
|
+
testCombinedEffectsInitialize: function() { with(this) {
|
341
|
+
COMBINED_EFFECTS.each(function(fx,idx){
|
342
|
+
info('Effect.'+fx);
|
343
|
+
$('sandbox').innerHTML = "";
|
344
|
+
$('sandbox').appendChild(
|
345
|
+
Builder.node('div',{id:'test_element'},
|
346
|
+
Builder.node('span','test'))); //some effects require a child element
|
347
|
+
|
348
|
+
// should work with new Effect.Blah syntax
|
349
|
+
var effect = new Effect[fx]('test_element');
|
350
|
+
assertEqual(0, effect.currentFrame);
|
351
|
+
|
352
|
+
// and without the 'new'
|
353
|
+
var effect = Effect[fx]('test_element');
|
354
|
+
assertEqual(0, effect.currentFrame);
|
355
|
+
|
356
|
+
// visualEffect
|
357
|
+
assert($('test_element') == $('test_element').visualEffect(COMBINED_RJS_EFFECTS[idx]));
|
358
|
+
|
359
|
+
// direct element extension
|
360
|
+
var method = COMBINED_EFFECTS[idx].charAt(0).toLowerCase() + COMBINED_EFFECTS[idx].substring(1)
|
361
|
+
assert($('test_element') == $('test_element')[method]());
|
362
|
+
|
363
|
+
// options parsing (shake, squish and grow are special here)
|
364
|
+
if(!['Shake','Squish','Grow'].include(fx)) {
|
365
|
+
var effect = Effect[fx]('test_element',{duration:2.0});
|
366
|
+
assertEqual(2.0, effect.options.duration, fx);
|
367
|
+
}
|
368
|
+
});
|
369
|
+
}},
|
370
|
+
|
371
|
+
testSynchronizedEffects: function() { with(this) {
|
372
|
+
var e1 = new Effect.Fade('sandbox',{sync:true});
|
373
|
+
wait(250, function() {
|
374
|
+
// effect should still be at frame 0
|
375
|
+
assertEqual(0, e1.currentFrame);
|
376
|
+
assertEqual('idle', e1.state);
|
377
|
+
e1.render(0.01);
|
378
|
+
|
379
|
+
// no frame count for sync effects
|
380
|
+
assertEqual(0, e1.currentFrame);
|
381
|
+
assertEqual('running', e1.state);
|
382
|
+
});
|
383
|
+
}},
|
384
|
+
|
385
|
+
testEffectPosition: function() { with(this) {
|
386
|
+
var testeffect = new Effect.Opacity('sandbox',{
|
387
|
+
afterSetup: function(effect) { effect.frames = 0; },
|
388
|
+
afterUpdate: function(effect) { effect.frames++; $('sandbox').update(effect.position); },
|
389
|
+
duration: 0.5, from: 1.0, to: 0.5
|
390
|
+
});
|
391
|
+
assertNull(testeffect.position);
|
392
|
+
assertEqual('idle', testeffect.state);
|
393
|
+
wait(1000, function() {
|
394
|
+
info('Rendered ' + testeffect.frames + ' frames in .5 seconds ' +
|
395
|
+
'(~' + (testeffect.frames/0.5) + 'fps of a possible 60fps, ' +
|
396
|
+
'note that this can exceed 60fps because of additional last frame rendering)');
|
397
|
+
assertEqual('0.5', $('sandbox').innerHTML);
|
398
|
+
assertEqual(0.5, testeffect.position);
|
399
|
+
assertEqual('finished', testeffect.state);
|
400
|
+
});
|
401
|
+
}},
|
402
|
+
|
403
|
+
testRenderPerformance: function() { with(this) {
|
404
|
+
info('The render() method is generated on a per-effect basis')
|
405
|
+
var e = new Effect.Opacity('sandbox',{sync:true});
|
406
|
+
benchmark(function(){
|
407
|
+
e.render(0.5);
|
408
|
+
},1000, 'Without events');
|
409
|
+
var e = new Effect.Opacity('sandbox',{sync:true,afterUpdate:function(){return}});
|
410
|
+
benchmark(function(){
|
411
|
+
e.render(0.5);
|
412
|
+
},1000, 'With afterUpdate event');
|
413
|
+
}},
|
414
|
+
|
415
|
+
testElementMorph: function() { with(this) {
|
416
|
+
$('error_test_ul').morph('font-size:40px', {duration: 0.5}).setStyle({marginRight:'17px'});
|
417
|
+
$('error_message_2').morph({
|
418
|
+
fontSize: '20px',
|
419
|
+
color: '#f00',
|
420
|
+
backgroundColor: '#ffffff'
|
421
|
+
},
|
422
|
+
{
|
423
|
+
duration:0.5
|
424
|
+
});
|
425
|
+
$('error_message_3').morph('final', {duration:0.5});
|
426
|
+
wait(1000,function(){
|
427
|
+
assertEqual('17px', $('error_test_ul').getStyle('margin-right'));
|
428
|
+
assertEqual('40px', $('error_test_ul').getStyle('font-size'));
|
429
|
+
assertEqual('#ffffff', $('error_message_2').getStyle('background-color').parseColor());
|
430
|
+
assertEqual('20px', $('error_message_2').getStyle('font-size'));
|
431
|
+
assertEqual('italic', $('error_message_3').getStyle('font-style'));
|
432
|
+
assertEqual('20px', $('error_message_3').getStyle('font-size'));
|
433
|
+
assertEqual(.5, $('error_message_3').getStyle('opacity'));
|
434
|
+
assertEqual('', $('error_message_3').style.fontSize);
|
435
|
+
});
|
436
|
+
}},
|
437
|
+
|
438
|
+
testElementMorphChaining: function() { with(this) {
|
439
|
+
$('error_message').morph('font-size:17px').morph('opacity:0',{delay:2});
|
440
|
+
wait(3100,function(){ // 2000ms delay + 1000ms default duration
|
441
|
+
assertEqual(0, $('error_message').getStyle('opacity'));
|
442
|
+
});
|
443
|
+
}},
|
444
|
+
|
445
|
+
testTransformBySelector: function() { with(this) {
|
446
|
+
new Effect.Transform([
|
447
|
+
{ 'ul.error-list li': 'font-size:20px;text-indent:40pt' }
|
448
|
+
],{ duration: 0.5 }).play();
|
449
|
+
|
450
|
+
wait(700,function(){
|
451
|
+
var idx = 0;
|
452
|
+
$A($('error_test_ul').cleanWhitespace().childNodes).each(function(node){
|
453
|
+
assertEqual('20px', $(node).getStyle('font-size'));
|
454
|
+
assertEqual('40pt', $(node).getStyle('text-indent'));
|
455
|
+
idx++;
|
456
|
+
});
|
457
|
+
assertEqual(5, idx);
|
458
|
+
});
|
459
|
+
}},
|
460
|
+
|
461
|
+
testTransformUsesCSSClassPresets: function() { with(this) {
|
462
|
+
assertEqual('40px', $('rotfl').getStyle('font-size'));
|
463
|
+
|
464
|
+
// Render the effect at half-way through, font-size should be
|
465
|
+
// exactly half-way between original and target
|
466
|
+
new Effect.Transform([
|
467
|
+
{ 'rotfl': 'font-size:20px;text-indent:40pt;background-color:#888' }
|
468
|
+
],{ sync:true }).play().render(0.5);
|
469
|
+
|
470
|
+
wait(1100,function(){
|
471
|
+
// should be 30px = 40px + (20px-40px)/2
|
472
|
+
assertEqual('30px', $('rotfl').getStyle('font-size'));
|
473
|
+
});
|
474
|
+
}},
|
475
|
+
|
476
|
+
testTransformMultiple: function() { with(this) {
|
477
|
+
var transformation = new Effect.Transform([
|
478
|
+
{ 'div.morphing': 'font-size:20px;padding-left:40em;opacity:0.5' },
|
479
|
+
{ 'blah' :
|
480
|
+
'width:480px;border-width:10px;border-right-width:20px;' +
|
481
|
+
'margin:20px;margin-bottom:-20px;font-size:30px;' +
|
482
|
+
'background:#954' }
|
483
|
+
],{ duration: 0.5 });
|
484
|
+
|
485
|
+
var generatedEffect = transformation.play();
|
486
|
+
|
487
|
+
assertEqual(3, generatedEffect.effects.length);
|
488
|
+
|
489
|
+
wait(700, function(){
|
490
|
+
// have a look at the generated color transforms for the 3rd found element
|
491
|
+
// which is the "blah" div
|
492
|
+
assertEqual('blah', generatedEffect.effects[2].element.id);
|
493
|
+
assertEnumEqual([255,255,255],
|
494
|
+
generatedEffect.effects[2].transforms.detect( function(transform){
|
495
|
+
return (transform.style == 'backgroundColor')
|
496
|
+
}).originalValue);
|
497
|
+
assertEnumEqual([153,85,68],
|
498
|
+
generatedEffect.effects[2].transforms.detect( function(transform){
|
499
|
+
return (transform.style == 'backgroundColor')
|
500
|
+
}).targetValue);
|
501
|
+
|
502
|
+
assertEqual('20px', $$('div.morphing').first().getStyle('font-size'));
|
503
|
+
assertEqual('20px', $$('div.morphing').last().getStyle('font-size'));
|
504
|
+
assertEqual('30px', $('blah').getStyle('font-size'));
|
505
|
+
|
506
|
+
// border-width/border-right-width should be set independently
|
507
|
+
assertEqual('10px', $('blah').getStyle('border-top-width'));
|
508
|
+
assertEqual('10px', $('blah').getStyle('border-bottom-width'));
|
509
|
+
assertEqual('10px', $('blah').getStyle('border-left-width'));
|
510
|
+
assertEqual('20px', $('blah').getStyle('border-right-width'));
|
511
|
+
|
512
|
+
// colors should assume transition from
|
513
|
+
// #ffffff (white) if original was transparent
|
514
|
+
// we now should have arrived at the given color
|
515
|
+
assertEqual('#995544', $('blah').getStyle('background-color').parseColor());
|
516
|
+
|
517
|
+
// play again = should have same values
|
518
|
+
transformation.play();
|
519
|
+
wait(700, function(){
|
520
|
+
assertEqual('20px', $$('div.morphing').first().getStyle('font-size'));
|
521
|
+
assertEqual('20px', $$('div.morphing').last().getStyle('font-size'));
|
522
|
+
assertEqual('30px', $('blah').getStyle('font-size'));
|
523
|
+
|
524
|
+
$('blah').setStyle({fontSize:'100px'});
|
525
|
+
assertEqual('100px', $('blah').getStyle('font-size'));
|
526
|
+
transformation.play();
|
527
|
+
wait(700, function(){
|
528
|
+
assertEqual('30px', $('blah').getStyle('font-size'));
|
529
|
+
|
530
|
+
new Effect.Transform([
|
531
|
+
{ 'blah': 'color: #80d980; background: #208020' }
|
532
|
+
],{ duration: 1.1 }).play();
|
533
|
+
wait(1500, function(){
|
534
|
+
assertEqual('#80d980', $('blah').getStyle('color').parseColor());
|
535
|
+
assertEqual('#208020', $('blah').getStyle('background-color').parseColor());
|
536
|
+
});
|
537
|
+
});
|
538
|
+
});
|
539
|
+
});
|
540
|
+
}}
|
541
|
+
|
542
|
+
});
|
543
|
+
|
544
|
+
// ]]>
|
545
|
+
</script>
|
546
|
+
</body>
|
547
|
+
</html>
|