Added a test case for "purple include", fixed a bug.
[jquery.git] / src / event / eventTest.js
index 6335925..7ac3a6e 100644 (file)
@@ -1,13 +1,15 @@
 module("event");
 
 test("bind()", function() {
-       expect(9);
+       expect(11);
 
        var handler = function(event) {
                ok( event.data, "bind() with data, check passed data exists" );
                ok( event.data.foo == "bar", "bind() with data, Check value of passed data" );
-       }
-       $("#firstp").bind("click", {foo: "bar"}, handler).click();
+       };
+       $("#firstp").bind("click", {foo: "bar"}, handler).click().unbind("click", handler);
+       
+       ok( !$("#firstp").get(0).$events, "Event handler unbound when using data." );
        
        reset();
        var handler = function(event, data) {
@@ -15,20 +17,38 @@ test("bind()", function() {
                ok( event.data.foo == "bar", "Check value of passed data" );
                ok( data, "Check trigger data" );
                ok( data.bar == "foo", "Check value of trigger data" );
-       }
-       $("#firstp").bind("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]);
-
+       };
+       $("#firstp").bind("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]).unbind(handler);
+       
+       reset();
+       var handler = function(event) {
+               ok ( !event.data, "Check that no data is added to the event object" );
+       };
+       $("#firstp").bind("click", handler).trigger("click");
+       
+       
+       // events don't work with iframes, see #939 - this test fails in IE because of contentDocument
+       // var doc = document.getElementById("iframe").contentDocument;
+       // 
+       // doc.body.innerHTML = "<input type='text'/>";
+       //  
+       // var input = doc.getElementsByTagName("input")[0];
+       //  
+       // $(input).bind("click",function() {
+       //      ok( true, "Binding to element inside iframe" );
+       // }).click();
+       
        var counter = 0;
        function selectOnChange(event) {
                equals( event.data, counter++, "Event.data is not a global event object" );
-       }
+       };
        $("select").each(function(i){
                $(this).bind('change', i, selectOnChange);
        }).trigger('change');
 });
 
 test("click()", function() {
-       expect(3);
+       expect(4);
        $('<li><a href="#">Change location</a></li>').prependTo('#firstUL').find('a').bind('click', function() {
            var close = $('spanx', this); // same with $(this).find('span');
            ok( close.length == 0, "Context element does not exist, length must be zero" );
@@ -39,6 +59,13 @@ test("click()", function() {
        $("#check1").click(function() {
                ok( true, "click event handler for checkbox gets fired twice, see #815" );
        }).click();
+       
+       var counter = 0;
+       $('#firstp')[0].onclick = function(event) {
+               counter++;
+       };
+       $('#firstp').click();
+       ok( counter == 1, "Check that click, triggers onclick event handler also" );
 });
 
 test("unbind(event)", function() {
@@ -72,7 +99,7 @@ test("trigger(event, [data]", function() {
                ok( a == 1, "check passed data" );
                ok( b == "2", "check passed data" );
                ok( c == "abc", "check passed data" );
-       }
+       };
        $("#firstp").bind("click", handler).trigger("click", [1, "2", "abc"]);
 });