diff --git a/Makefile b/Makefile
index ad7171ff..75180277 100644
--- a/Makefile
+++ b/Makefile
@@ -118,8 +118,6 @@ test: ${JQ}
@@echo " - Copying over script files."
@@cp -fR ${BUILD_DIR}/test/data ${TEST_DIR}/data
@@cp -f ${BUILD_DIR}/test/index.html ${TEST_DIR}
- @@cp -f ${BUILD_DIR}/test/fx.html ${TEST_DIR}
- @@cp -f ${BUILD_DIR}/test/cow.jpg ${TEST_DIR}
@@echo " - Compiling Test Cases"
@@${JAR} ${BUILD_DIR}/test/test.js ${JQ} ${TEST_DIR}
diff --git a/build.xml b/build.xml
index 7f0a18ed..1b17822b 100644
--- a/build.xml
+++ b/build.xml
@@ -110,8 +110,6 @@
-
-
diff --git a/build/test/cow.jpg b/build/test/data/cow.jpg
similarity index 100%
rename from build/test/cow.jpg
rename to build/test/data/cow.jpg
diff --git a/build/test/data/testsuite.css b/build/test/data/testsuite.css
index 76319d87..b9d487bc 100644
--- a/build/test/data/testsuite.css
+++ b/build/test/data/testsuite.css
@@ -9,4 +9,105 @@ p.result { margin-left: 1em; }
#banner { height: 2em; border-bottom: 1px solid white; }
h2.pass { background-color: green; }
-h2.fail { background-color: red; }
\ No newline at end of file
+h2.fail { background-color: red; }
+
+div#fx-tests h4 {
+ background: red;
+}
+
+div#fx-tests h4.pass {
+ background: green;
+}
+
+div#fx-tests div.box {
+ background: red url(data/cow.jpg) no-repeat;
+ overflow: hidden;
+ border: 2px solid #000;
+}
+
+div#fx-tests div.overflow {
+ overflow: visible;
+}
+
+div.inline {
+ display: inline;
+}
+
+div.autoheight {
+ height: auto;
+}
+
+div.autowidth {
+ width: auto;
+}
+
+div.autoopacity {
+ opacity: auto;
+}
+
+div.largewidth {
+ width: 100px;
+}
+
+div.largeheight {
+ height: 100px;
+}
+
+div.largeopacity {
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
+}
+
+div.medwidth {
+ width: 50px;
+}
+
+div.medheight {
+ height: 50px;
+}
+
+div.medopacity {
+ opacity: 0.5;
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
+}
+
+div.nowidth {
+ width: 0px;
+}
+
+div.noheight {
+ height: 0px;
+}
+
+div.noopacity {
+ opacity: 0;
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
+}
+
+div.hidden {
+ display: none;
+}
+
+div#fx-tests div.widewidth {
+ background-repeat: repeat-x;
+}
+
+div#fx-tests div.wideheight {
+ background-repeat: repeat-y;
+}
+
+div#fx-tests div.widewidth.wideheight {
+ background-repeat: repeat;
+}
+
+div#fx-tests div.noback {
+ background-image: none;
+}
+
+div.chain, div.chain div { width: 100px; height: 20px; position: relative; float: left; }
+div.chain div { position: absolute; top: 0px; left: 0px; }
+
+div.chain.test { background: red; }
+div.chain.test div { background: green; }
+
+div.chain.out { background: green; }
+div.chain.out div { background: red; display: none; }
diff --git a/build/test/fx.html b/build/test/fx.html
deleted file mode 100644
index 07b60f97..00000000
--- a/build/test/fx.html
+++ /dev/null
@@ -1,350 +0,0 @@
-
-
-
-
- Animation Test Suite
-
-
-
-
-
-Chain Tests:
-
-
-
-
-
-
-
-
-
-
-
-
-
-slideToggleIn
slideToggleIn
-slideToggleOut
slideToggleOut
-
-
-
-
-
diff --git a/build/test/index.html b/build/test/index.html
index 756e2a5e..4021d330 100644
--- a/build/test/index.html
+++ b/build/test/index.html
@@ -1,6 +1,7 @@
-
+
+
-
+
jQuery Test Suite
@@ -95,6 +96,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
slideToggleIn
slideToggleIn
+
slideToggleOut
slideToggleOut
+
+
+
diff --git a/src/fx/fxTest.js b/src/fx/fxTest.js
index f7fb865f..dfb9157b 100644
--- a/src/fx/fxTest.js
+++ b/src/fx/fxTest.js
@@ -19,4 +19,266 @@ test("toggle()", function() {
ok( x.is(":hidden") );
x.toggle();
ok( x.is(":visible") );
-});
\ No newline at end of file
+});
+
+var visible = {
+ Normal: function(elem){},
+ "CSS Hidden": function(elem){
+ $(this).addClass("hidden");
+ },
+ "JS Hidden": function(elem){
+ $(this).hide();
+ }
+};
+
+var from = {
+ "CSS Auto": function(elem,prop){
+ $(elem).addClass("auto" + prop)
+ .text("This is a long string of text.");
+ return "";
+ },
+ "JS Auto": function(elem,prop){
+ $(elem).css(prop,"auto")
+ .text("This is a long string of text.");
+ return "";
+ },
+ "CSS 100": function(elem,prop){
+ $(elem).addClass("large" + prop);
+ return "";
+ },
+ "JS 100": function(elem,prop){
+ $(elem).css(prop,prop == "opacity" ? 1 : "100px");
+ return prop == "opacity" ? 1 : 100;
+ },
+ "CSS 50": function(elem,prop){
+ $(elem).addClass("med" + prop);
+ return "";
+ },
+ "JS 50": function(elem,prop){
+ $(elem).css(prop,prop == "opacity" ? 0.50 : "50px");
+ return prop == "opacity" ? 0.5 : 50;
+ },
+ "CSS 0": function(elem,prop){
+ $(elem).addClass("no" + prop);
+ return "";
+ },
+ "JS 0": function(elem,prop){
+ $(elem).css(prop,prop == "opacity" ? 0 : "0px");
+ return 0;
+ }
+};
+
+var to = {
+ "show": function(elem,prop){
+ $(elem).hide().addClass("wide"+prop);
+ return "show";
+ },
+ "hide": function(elem,prop){
+ $(elem).addClass("wide"+prop);
+ return "hide";
+ },
+ "100": function(elem,prop){
+ $(elem).addClass("wide"+prop);
+ return prop == "opacity" ? 1 : 100;
+ },
+ "50": function(elem,prop){
+ return prop == "opacity" ? 0.50 : 50;
+ },
+ "0": function(elem,prop){
+ $(elem).addClass("noback");
+ return 0;
+ }
+};
+
+function checkOverflowDisplay(){
+ var o = jQuery.css( this, "overflow" );
+
+ ok(o == "visible", "Overflow should be visible: " + o);
+ ok(jQuery.css( this, "display" ) == "inline", "Display shouldn't be tampered with.");
+
+ start();
+}
+
+test("JS Overflow and Display", function() {
+ expect(2);
+ stop();
+ makeTest( "JS Overflow and Display" )
+ .addClass("widewidth")
+ .css({ overflow: "visible", display: "inline" })
+ .addClass("widewidth")
+ .text("Some sample text.")
+ .before("text before")
+ .after("text after")
+ .animate({ opacity: 0.5 }, "slow", checkOverflowDisplay);
+});
+
+test("CSS Overflow and Display", function() {
+ expect(2);
+ stop();
+ makeTest( "CSS Overflow and Display" )
+ .addClass("overflow inline")
+ .addClass("widewidth")
+ .text("Some sample text.")
+ .before("text before")
+ .after("text after")
+ .animate({ opacity: 0.5 }, "slow", checkOverflowDisplay);
+});
+
+jQuery.each( from, function(fn, f){
+ jQuery.each( to, function(tn, t){
+ test(fn + " to " + tn, function() {
+ var elem = makeTest( fn + " to " + tn );
+
+ var t_w = t( elem, "width" );
+ var f_w = f( elem, "width" );
+ var t_h = t( elem, "height" );
+ var f_h = f( elem, "height" );
+ var t_o = t( elem, "opacity" );
+ var f_o = f( elem, "opacity" );
+
+ var num = 0;
+
+ if ( t_h == "show" ) num++;
+ if ( t_w == "show" ) num++;
+ if ( t_w == "hide"||t_w == "show" ) num++;
+ if ( t_h == "hide"||t_h == "show" ) num++;
+ if ( t_o == "hide"||t_o == "show" ) num++;
+ if ( t_w == "hide" ) num++;
+ if ( t_o.constructor == Number ) num += 2;
+ if ( t_w.constructor == Number ) num += 2;
+ if ( t_h.constructor == Number ) num +=2;
+
+ expect(num);
+ stop();
+
+ var anim = { width: t_w, height: t_h, opacity: t_o };
+
+ elem.animate(anim, 50, function(){
+ if ( t_w == "show" )
+ ok( this.style.display == "block", "Showing, display should block: " + this.style.display);
+
+ if ( t_w == "hide"||t_w == "show" )
+ ok(this.style.width.indexOf(f_w) == 0, "Width must be reset to " + f_w + ": " + this.style.width);
+
+ if ( t_h == "hide"||t_h == "show" )
+ ok(this.style.height.indexOf(f_h) == 0, "Height must be reset to " + f_h + ": " + this.style.height);
+
+ var cur_o = jQuery.attr(this.style, "opacity");
+ if ( cur_o !== "" ) cur_o = parseFloat( cur_o );
+
+ if ( t_o == "hide"||t_o == "show" )
+ ok(cur_o == f_o, "Opacity must be reset to " + f_o + ": " + cur_o);
+
+ if ( t_w == "hide" )
+ ok(this.style.display == "none", "Hiding, display should be none: " + this.style.display);
+
+ if ( t_o.constructor == Number ) {
+ ok(cur_o == t_o, "Final opacity should be " + t_o + ": " + cur_o);
+
+ ok(jQuery.curCSS(this, "opacity") != "" || cur_o == t_o, "Opacity should be explicitly set to " + t_o + ", is instead: " + cur_o);
+ }
+
+ if ( t_w.constructor == Number ) {
+ ok(this.style.width == t_w + "px", "Final width should be " + t_w + ": " + this.style.width);
+
+ var cur_w = jQuery.css(this,"width");
+
+ ok(this.style.width != "" || cur_w == t_w, "Width should be explicitly set to " + t_w + ", is instead: " + cur_w);
+ }
+
+ if ( t_h.constructor == Number ) {
+ ok(this.style.height == t_h + "px", "Final height should be " + t_h + ": " + this.style.height);
+
+ var cur_h = jQuery.css(this,"height");
+
+ ok(this.style.height != "" || cur_h == t_h, "Height should be explicitly set to " + t_h + ", is instead: " + cur_w);
+ }
+
+ if ( t_h == "show" ) {
+ var old_h = jQuery.curCSS(this, "height");
+ $(elem).append("
Some more text
and some more...");
+ ok(old_h != jQuery.css(this, "height" ), "Make sure height is auto.");
+ }
+
+ start();
+ });
+ });
+ });
+});
+
+var check = ['opacity','height','width','display','overflow'];
+
+jQuery.fn.saveState = function(){
+ expect(check.length);
+ stop();
+ return this.each(function(){
+ var self = this;
+ self.save = {};
+ jQuery.each(check, function(i,c){
+ self.save[c] = jQuery.css(self,c);
+ });
+ });
+};
+
+function checkState(){
+ var self = this;
+ jQuery.each(this.save, function(c,v){
+ var cur = jQuery.css(self,c);
+ ok( v == cur, "Make sure that " + c + " is reset (Old: " + v + " Cur: " + cur + ")");
+ });
+ start();
+}
+
+// Chaining Tests
+test("Chain fadeOut fadeIn", function() {
+ $('#fadein div').saveState().fadeOut('fast').fadeIn('fast',checkState);
+});
+test("Chain fadeIn fadeOut", function() {
+ $('#fadeout div').saveState().fadeIn('fast').fadeOut('fast',checkState);
+});
+
+test("Chain hide show", function() {
+ $('#show div').saveState().hide('fast').show('fast',checkState);
+});
+test("Chain show hide", function() {
+ $('#hide div').saveState().show('fast').hide('fast',checkState);
+});
+
+test("Chain toggle in", function() {
+ $('#togglein div').saveState().toggle('fast').toggle('fast',checkState);
+});
+test("Chain toggle out", function() {
+ $('#toggleout div').saveState().toggle('fast').toggle('fast',checkState);
+});
+
+test("Chain slideDown slideUp", function() {
+ $('#slidedown div').saveState().slideDown('fast').slideUp('fast',checkState);
+});
+test("Chain slideUp slideDown", function() {
+ $('#slideup div').saveState().slideUp('fast').slideDown('fast',checkState);
+});
+
+test("Chain slideToggle in", function() {
+ $('#slidetogglein div').saveState().slideToggle('fast').slideToggle('fast',checkState);
+});
+test("Chain slideToggle out", function() {
+ $('#slidetoggleout div').saveState().slideToggle('fast').slideToggle('fast',checkState);
+});
+
+function makeTest( text ){
+ var elem = $("")
+ .attr("id", "test" + makeTest.id++)
+ .addClass("box");
+
+ $("")
+ .text( text )
+ .appendTo("#fx-tests")
+ .click(function(){
+ $(this).next().toggle();
+ })
+ .after( elem );
+
+ return elem;
+}
+
+makeTest.id = 1;
\ No newline at end of file
diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js
index ee443819..db8b58d6 100644
--- a/src/jquery/coreTest.js
+++ b/src/jquery/coreTest.js
@@ -118,22 +118,22 @@ test("isFunction", function() {
test("length", function() {
expect(1);
- ok( $("div").length == 2, "Get Number of Elements Found" );
+ ok( $("p").length == 6, "Get Number of Elements Found" );
});
test("size()", function() {
expect(1);
- ok( $("div").size() == 2, "Get Number of Elements Found" );
+ ok( $("p").size() == 6, "Get Number of Elements Found" );
});
test("get()", function() {
expect(1);
- isSet( $("div").get(), q("main","foo"), "Get All Elements" );
+ isSet( $("p").get(), q("firstp","ap","sndp","en","sap","first"), "Get All Elements" );
});
test("get(Number)", function() {
expect(1);
- ok( $("div").get(0) == document.getElementById("main"), "Get A Single Element" );
+ ok( $("p").get(0) == document.getElementById("firstp"), "Get A Single Element" );
});
test("add(String|Element|Array)", function() {
diff --git a/src/selector/selectorTest.js b/src/selector/selectorTest.js
index 5b77b3b4..9e646ce9 100644
--- a/src/selector/selectorTest.js
+++ b/src/selector/selectorTest.js
@@ -3,10 +3,10 @@ module("selector");
test("element", function() {
expect(9);
ok( $("*").size() >= 30, "Select all" );
- t( "Element Selector", "div", ["main","foo"] );
+ t( "Element Selector", "p", ["firstp","ap","sndp","en","sap","first"] );
t( "Element Selector", "body", ["body"] );
t( "Element Selector", "html", ["html"] );
- t( "Parent Element", "div div", ["foo"] );
+ t( "Parent Element", "div p", ["firstp","ap","sndp","en","sap","first"] );
ok( $("param", "#object1").length == 2, "Object/param as context" );
ok( $("#length").length, '<input name="length"> cannot be found under IE, see #945' );
@@ -84,10 +84,10 @@ test("class", function() {
test("multiple", function() {
expect(4);
- t( "Comma Support", "a.blog, div", ["mark","simon","main","foo"] );
- t( "Comma Support", "a.blog , div", ["mark","simon","main","foo"] );
- t( "Comma Support", "a.blog ,div", ["mark","simon","main","foo"] );
- t( "Comma Support", "a.blog,div", ["mark","simon","main","foo"] );
+ t( "Comma Support", "a.blog, p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
+ t( "Comma Support", "a.blog , p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
+ t( "Comma Support", "a.blog ,p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
+ t( "Comma Support", "a.blog,p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
});
test("child and adjacent", function() {
@@ -158,7 +158,7 @@ test("pseudo (:) selectors", function() {
t( "Selected Option Element", "option:selected", ["option1a","option2d","option3b","option3c"] );
t( "Text Contains", "a:contains('Google')", ["google","groups"] );
t( "Text Contains", "a:contains('Google Groups')", ["groups"] );
- t( "Element Preceded By", "p ~ div", ["foo"] );
+ t( "Element Preceded By", "p ~ div", ["foo","fx-queue","fx-tests"] );
t( "Not", "a.blog:not(.link)", ["mark"] );
t( "nth Element", "p:nth(1)", ["ap"] );
@@ -186,18 +186,18 @@ test("basic xpath", function() {
expect(16);
ok( jQuery.find("//*").length >= 30, "All Elements (//*)" );
ok( jQuery.find("//div", q("main")[0])[0] = q("foo")[0], "All Relative (#main//div)" );
- t( "All Div Elements", "//div", ["main","foo"] );
+ t( "All P Elements", "//p", ["firstp","ap","sndp","en","sap","first"] );
t( "Absolute Path", "/html/body", ["body"] );
t( "Absolute Path w/ *", "/* /body", ["body"] );
t( "Long Absolute Path", "/html/body/dl/div/div/p", ["sndp","en","sap"] );
- t( "Absolute and Relative Paths", "/html//div", ["main","foo"] );
+ t( "Absolute and Relative Paths", "/html//p", ["firstp","ap","sndp","en","sap","first"] );
t( "All Children, Explicit", "//code/*", ["anchor1","anchor2"] );
t( "All Children, Implicit", "//code/", ["anchor1","anchor2"] );
t( "Attribute Exists", "//a[@title]", ["google"] );
t( "Attribute Equals", "//a[@rel='bookmark']", ["simon1"] );
t( "Parent Axis", "//p/..", ["main","foo"] );
- t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","table","sndp","en","sap"] );
- t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","table","sndp","en","sap"] );
+ t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","table","fx-queue","fx-tests","sndp","en","sap"] );
+ t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","table","fx-queue","fx-tests","sndp","en","sap"] );
t( "Has Children", "//p[a]", ["firstp","ap","en","sap"] );
$("#foo").each(function() {