Fixed [1993] although it actually wasn't a bug in the core but rather a misunderstand...
[jquery.git] / test / unit / core.js
index c7f1850..a1ebb1b 100644 (file)
@@ -223,8 +223,9 @@ test("index(Object)", function() {
 });
 
 test("attr(String)", function() {
-       expect(13);
+       expect(20);
        ok( $('#text1').attr('value') == "Test", 'Check for value attribute' );
+       ok( $('#text1').attr('value', "Test2").attr('defaultValue') == "Test", 'Check for defaultValue attribute' );
        ok( $('#text1').attr('type') == "text", 'Check for type attribute' );
        ok( $('#radio1').attr('type') == "radio", 'Check for type attribute' );
        ok( $('#check1').attr('type') == "checkbox", 'Check for type attribute' );
@@ -236,6 +237,12 @@ test("attr(String)", function() {
        ok( $('#name').attr('name') == "name", 'Check for name attribute' );
        ok( $('#text1').attr('name') == "action", 'Check for name attribute' );
        ok( $('#form').attr('action').indexOf("formaction") >= 0, 'Check for action attribute' );
+       ok( $('#text1').attr('maxlength') == '30', 'Check for maxlength attribute' );
+       ok( $('#text1').attr('maxLength') == '30', 'Check for maxLength attribute' );
+       ok( $('#area1').attr('maxLength') == '30', 'Check for maxLength attribute' );
+       ok( $('#select2').attr('selectedIndex') == 3, 'Check for selectedIndex attribute' );
+       ok( $('#foo').attr('nodeName') == 'DIV', 'Check for nodeName attribute' );
+       ok( $('#foo').attr('tagName') == 'DIV', 'Check for tagName attribute' );
        
        $('<a id="tAnchor5"></a>').attr('href', '#5').appendTo('#main'); // using innerHTML in IE causes href attribute to be serialized to the full path
        ok( $('#tAnchor5').attr('href') == "#5", 'Check for non-absolute href (an anchor)' );
@@ -269,7 +276,7 @@ test("attr(Hash)", function() {
 });
 
 test("attr(String, Object)", function() {
-       expect(12);
+       expect(16);
        var div = $("div");
        div.attr("foo", "bar");
        var pass = true;
@@ -292,6 +299,16 @@ test("attr(String, Object)", function() {
        ok( document.getElementById('text1').readOnly == false, 'Set readonly attribute' );
        $("#name").attr('maxlength', '5');
        ok( document.getElementById('name').maxLength == '5', 'Set maxlength attribute' );
+       $("#name").attr('maxLength', '10');
+       ok( document.getElementById('name').maxLength == '10', 'Set maxlength attribute' );
+
+       // for #1070
+       $("#name").attr('someAttr', '0');
+       equals( $("#name").attr('someAttr'), '0', 'Set attribute to a string of "0"' );
+       $("#name").attr('someAttr', 0);
+       equals( $("#name").attr('someAttr'), 0, 'Set attribute to the number 0' );
+       $("#name").attr('someAttr', 1);
+       equals( $("#name").attr('someAttr'), 1, 'Set attribute to the number 1' );
 
        reset();
 
@@ -401,6 +418,15 @@ test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", funct
        ok( ! $(":checkbox:last", $checkedtest).attr("checked"), "Check last checkbox still NOT checked." );
 });
 
+test("width()", function() {
+       expect(2);
+
+       $("#nothiddendiv").width(30);
+       equals($("#nothiddendiv").width(), 30, "Test set to 30 correctly");
+       $("#nothiddendiv").width(-1); // handle negative numbers by ignoring #1599
+       equals($("#nothiddendiv").width(), 30, "Test negative width ignored");
+});
+
 test("text()", function() {
        expect(1);
        var expected = "This link has class=\"blog\": Simon Willison's Weblog";
@@ -811,7 +837,7 @@ test("is(String)", function() {
 });
 
 test("$.extend(Object, Object)", function() {
-       expect(14);
+       expect(17);
 
        var settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
                options =     { xnumber2: 1, xstring2: "x", xxx: "newstring" },
@@ -847,6 +873,17 @@ test("$.extend(Object, Object)", function() {
        var ret = jQuery.extend(true, { foo: "1,2,3" }, { foo: [1, 2, 3] } );
        ok( typeof ret.foo != "string", "Check to make sure values equal with coersion (but not actually equal) overwrite correctly" );
 
+       var ret = jQuery.extend(true, { foo:"bar" }, { foo:null } );
+       ok( typeof ret.foo !== 'undefined', "Make sure a null value doesn't crash with deep extend, for #1908" );
+
+       var obj = { foo:null };
+       jQuery.extend(true, obj, { foo:"notnull" } );
+       equals( obj.foo, "notnull", "Make sure a null value can be overwritten" );
+
+       function func() {}
+       jQuery.extend(func, { key: "value" } );
+       equals( func.key, "value", "Verify a function can be extended" );
+
        var defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
                defaultsCopy = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" },
                options1 =     { xnumber2: 1, xstring2: "x" },
@@ -863,9 +900,11 @@ test("$.extend(Object, Object)", function() {
 });
 
 test("val()", function() {
-       expect(2);
+       expect(3);
        ok( $("#text1").val() == "Test", "Check for value of input element" );
        ok( !$("#text1").val() == "", "Check for value of input element" );
+       // ticket #1714 this caused a JS error in IE
+       ok( $("#first").val() == "", "Check a paragraph element to see if it has a value" );
 });
 
 test("val(String)", function() {