').appendTo(document.body)
t.assertLength(1, el.parent())
t.assertIdentical(el, el.remove())
t.assertLength(0, el.parent())
t.assertIdentical(el, el.remove()) //=> ensure an error isn't raised
},
testNotInDocumentNonEval: function (t) {
try {
window.someGlobalVariable = 0
$('
')
.html('<\script>window.someGlobalVariable += 1<\/script>')
.appendTo('body')
t.assertIdentical(1, window.someGlobalVariable)
} finally {
delete window.someGlobalVariable
}
},
testAddRemoveClass: function(t){
var el = $('#some_element').get(0)
$('#some_element').addClass('green')
t.assertEqual('green', el.className)
$('#some_element').addClass('green')
t.assertEqual('green', el.className)
$('#some_element').addClass('red')
t.assertEqual('green red', el.className)
$('#some_element').addClass('blue red')
t.assertEqual('green red blue', el.className)
$('#some_element').removeClass('green blue')
t.assertEqual('red', el.className)
$('#some_element').attr('class', ' red green blue ')
t.assertEqual(' red green blue ', el.className) // sanity check that WebKit doesn't change original input
$('#some_element').removeClass('green')
t.assertEqual('red blue', el.className)
//addClass with function argument
$('#some_element').addClass(function(idx,classes){
//test the value of "this"
t.assertEqualCollection($('#some_element'), $(this))
//test original classes are being passed
t.assertEqual('red blue', this.className)
return "green"
})
t.assertEqual('red blue green', el.className)
// addClass with no argument
t.assertEqualCollection($('#some_element'), $('#some_element').addClass())
t.assertEqual('red blue green', el.className)
t.assertEqualCollection($('#some_element'), $('#some_element').addClass(''))
t.assertEqual('red blue green', el.className)
//removeClass with function argument
$('#some_element').removeClass(function(idx,classes){
//test the value of "this"
t.assertEqualCollection($('#some_element'), $(this))
//test original classes are being passed
t.assertEqual('red blue green', this.className)
return "blue"
})
t.assertEqual('red green', el.className)
$('#some_element').removeClass()
t.assertEqual('', el.className)
},
testWindowClasses: function(t){
// check that window is agnostic to class related functions
$(window).removeClass('non-existing-class')
t.refute('className' in window)
$(window).addClass('some-class')
t.refute('className' in window)
t.refute($(window).hasClass('some-class'))
$(window).toggleClass('some-class')
t.refute('className' in window)
},
testHasClass: function(t){
var el = $('#some_element')
el.addClass('green')
t.assert(el.hasClass('green'))
t.assert(!el.hasClass('orange'))
el.addClass('orange')
t.assert(el.hasClass('green'))
t.assert(el.hasClass('orange'))
el = $(document.body)
t.assert(!el.hasClass('orange'), "body shouldn't have the class")
el = el.add('#some_element')
t.assert(el.hasClass('orange'), "an element in collection has the class")
t.assertFalse(el.hasClass())
t.assertFalse(el.hasClass(''))
},
testHasClassEmpty: function(t){
var z = $('#doesnotexist')
t.assertEqual(0, z.size())
t.assertFalse(z.hasClass('a'))
},
testToggleClass: function(t){
var el = $('#toggle_element').removeClass()
t.assertIdentical(el, el.toggleClass('green'))
t.assertTrue(el.hasClass('green'))
t.assertFalse(el.hasClass('orange'))
el.toggleClass('orange')
t.assertTrue(el.hasClass('green'))
t.assertTrue(el.hasClass('orange'))
el.toggleClass('green')
t.assertFalse(el.hasClass('green'))
t.assertTrue(el.hasClass('orange'))
el.toggleClass('orange')
t.assertFalse(el.hasClass('green'))
t.assertFalse(el.hasClass('orange'))
el.toggleClass('orange green')
t.assertTrue(el.hasClass('orange'))
t.assertTrue(el.hasClass('green'))
el.toggleClass('orange green blue')
t.assertFalse(el.hasClass('orange'))
t.assertFalse(el.hasClass('green'))
t.assertTrue(el.hasClass('blue'))
el.removeClass()
el.toggleClass('orange', false)
t.assertFalse(el.hasClass('orange'))
el.toggleClass('orange', false)
t.assertFalse(el.hasClass('orange'))
el.toggleClass('orange', true)
t.assertTrue(el.hasClass('orange'))
el.toggleClass('orange', true)
t.assertTrue(el.hasClass('orange'))
//function argument
el.toggleClass(function(idx,classes){
t.assertIdentical(el.get(0), this)
//test original classes are being passed
t.assertEqual('orange', this.className)
return "brown"
})
t.assertTrue(el.hasClass('brown'))
el.toggleClass(function(idx,classes){
return "yellow"
}, false)
t.assertFalse(el.hasClass('yellow'))
el.toggleClass(function(idx,classes){
return "yellow"
}, true)
t.assert(el.hasClass('yellow'))
// no/empty argument
t.assertIdentical(el, el.toggleClass())
t.assertEqual('orange brown yellow', el.get(0).className)
t.assertIdentical(el, el.toggleClass(''))
t.assertEqual('orange brown yellow', el.get(0).className)
},
testClassSVG: function(t){
var svg = $('svg')
t.assert(!svg.hasClass('foo'))
svg.addClass('foo bar')
t.assert(svg.hasClass('foo'))
t.assert(svg.hasClass('bar'))
svg.removeClass('foo')
t.assert(!svg.hasClass('foo'))
t.assert(svg.hasClass('bar'))
svg.toggleClass('bar')
t.assert(!svg.hasClass('foo'))
t.assert(!svg.hasClass('bar'))
},
testIndex: function(t){
t.assertEqual($("p > span").index("#nay"), 2)
t.assertEqual($("p > span").index(".yay"), 0)
t.assertEqual($("span").index("span"), 0)
t.assertEqual($("span").index("boo"), -1)
t.assertEqual($('#index_test > *').eq(-1).index(), 1)
},
testBoolAttr: function (t) {
t.assertEqual($('#BooleanInput').attr('required'), true)
t.assertEqual($('#BooleanInput').attr('non_existant_attr'), undefined)
},
testDocumentReady: function (t) {
// Check that if document is already loaded, ready() immediately executes callback
var arg1, arg2, arg3, arg4, fired = false
$(function (Z1) {
arg1 = Z1
$(document).ready(function (Z2) {
arg2 = Z2
$(document).on('ready', function (Z3) {
arg3 = Z3
$(document).on('foo ready bar', function (Z4) {
arg4 = Z4
fired = true
})
})
})
})
t.assertTrue(fired)
t.assertIdentical(Zepto, arg1)
t.assertIdentical(Zepto, arg2)
t.assertIdentical(Zepto, arg3)
t.assertIdentical(Zepto, arg4)
},
testSlice: function (t) {
var $els = $("#slice_test div")
t.assertEqual($els.slice().length, 3)
t.assertEqual(typeof $els.slice().ready, 'function')
t.assertEqual($els.slice(-1)[0].className, 'slice3')
},
testScrollTop: function(t) {
var $window = $(window), $body = $(document.body)
t.assert($window.scrollTop() >= 0)
t.assert($body.scrollTop() >= 0)
t.assertIdentical($window.scrollTop(20), $window)
t.assertIdentical($body.scrollTop(20), $body)
},
testScrollLeft: function(t) {
var $window = $(window), $body = $(document.body)
t.assert($window.scrollLeft() >= 0)
t.assert($body.scrollLeft() >= 0)
t.assertIdentical($window.scrollLeft(20), $window)
t.assertIdentical($body.scrollLeft(20), $body)
},
testSort: function(t){
var els = $(['eight', 'nine', 'ten', 'eleven'])
var result = els.sort(function(a,b){ return b.length > a.length ? -1 : 1 })
t.assertIdentical(els, result)
t.assertEqual(4, result.size())
t.assertEqualCollection(['ten', 'nine', 'eight', 'eleven'], result)
}
})
Evidence('EventTest', {
tearDown: function(){
$('*').unbind()
},
testBind: function(t){
var counter = 0
$(document.body).bind('click', function(){ counter++ })
click($('#some_element').get(0))
t.assertEqual(1, counter)
counter = 0
$('#some_element').bind('click mousedown', function(){ counter++ })
click($('#some_element').get(0))
mousedown($('#some_element').get(0))
t.assertEqual(3, counter) // 1 = body click, 2 = element click, 3 = element mousedown
},
testBindWithObject: function(t){
var counter = 0, keyCounter = 0, el = $('#some_element'),
eventData = {
click: function(){ counter++ },
keypress: function(){ keyCounter++ }
}
$(document.body).bind(eventData)
el.trigger('click')
el.trigger('click')
t.assertEqual(2, counter)
el.trigger('keypress')
t.assertEqual(1, keyCounter)
$(document.body).unbind({ keypress: eventData.keypress })
el.trigger('click')
t.assertEqual(3, counter)
el.trigger('keypress')
t.assertEqual(1, keyCounter)
},
testBindContext: function(t){
var context, handler = function(){
context = $(this)
}
$('#empty_test').bind("click",handler)
$('#empty_test').bind("mousedown",handler)
click($('#empty_test').get(0))
t.assertEqualCollection($('#empty_test'), context)
context = null
mousedown($('#empty_test').get(0))
t.assertEqualCollection($('#empty_test'), context)
},
testBindWithCustomArgument: function(t) {
var data, numArgs, counter = 0,
handler = function(ev, arg) {
numArgs = arguments.length,
data = ev.data
counter = arg.counter
}
$('#some_element').bind('custom', handler)
$('#some_element').trigger('custom', { counter: 10 })
t.assertEqual(10, counter)
t.assertEqual(2, numArgs)
t.assertUndefined(data)
},
testBindPreventDefault: function (t) {
var link = $('
'),
prevented = false
link
.appendTo('body')
.bind('click', function () {
return false
})
.bind('click', function (e) {
prevented = e.isDefaultPrevented()
})
.trigger('click')
t.assert(prevented)
},
testCreateEventObject: function(t){
var e = $.Event('custom')
t.assertEqual('custom', e.type)
var e2 = new $.Event('custom')
t.assertEqual('custom', e2.type)
var e3 = $.Event('custom', {customKey: 'customValue'})
t.assertEqual('custom', e3.type)
t.assertEqual('customValue', e3.customKey)
var e4 = $.Event('custom', {bubbles: false})
t.assertFalse(e4.bubbles)
var e5 = $.Event({ type: 'keyup', keyCode: 40 })
t.assertEqual('keyup', e5.type)
t.assertEqual(40, e5.keyCode)
},
testTriggerObject: function(t){
var el = $('#some_element'),
eventType, eventCode
el.on('keyup', function(e){
eventType = e.type
eventCode = e.keyCode
})
el.trigger({ type: 'keyup', keyCode: 40 })
t.assertEqual('keyup', eventType)
t.assertEqual(40, eventCode)
},
testTriggerEventObject: function(t){
var data, counter = 0,
customEventKey = 0
var handler = function(ev,customData) {
data = ev.data
counter = customData.counter
customEventKey = ev.customKey
}
var customEventObject = $.Event('custom', { customKey: 20 })
$('#some_element').bind('custom', handler)
$('#some_element').trigger(customEventObject, { counter: 10 })
t.assertEqual(10, counter)
t.assertEqual(20, customEventKey)
t.assertUndefined(data)
},
testTriggerEventCancelled: function(t){
var event = $.Event('custom'),
element = $('
'),
isDefaultPrevented = false
t.refute(event.isDefaultPrevented())
element.bind('custom', function(e){
e.preventDefault()
isDefaultPrevented = e.isDefaultPrevented()
})
element.trigger(event)
t.assertTrue(event.isDefaultPrevented())
t.assertTrue(isDefaultPrevented)
},
testTriggerHandler: function(t){
t.assertUndefined($('doesnotexist').triggerHandler('submit'))
var form = $('#trigger_handler form').get(0)
$('#trigger_handler').bind('submit', function(e) {
t.fail("triggerHandler shouldn't bubble")
})
var executed = []
$(form).bind('submit', function(e) {
executed.push("1")
t.assertEqual(form, e.target)
return 1
})
$(form).bind('submit', function(e) {
executed.push("2")
t.assertEqual(form, e.target)
e.stopImmediatePropagation()
return 2
})
$(form).bind('submit', function(e) {
t.fail("triggerHandler shouldn't continue after stopImmediatePropagation")
})
t.assertIdentical(2, $(form).triggerHandler('submit'))
t.assertEqual('1 2', executed.join(' '))
},
testUnbind: function(t){
var counter = 0, el = $('#another_element').get(0)
var handler = function(){ counter++ }
$('#another_element').bind('click mousedown', handler)
click(el)
mousedown(el)
t.assertEqual(2, counter)
$('#another_element').unbind('click', handler)
click(el)
t.assertEqual(2, counter)
mousedown(el)
t.assertEqual(3, counter)
$('#another_element').unbind('mousedown')
mousedown(el)
t.assertEqual(3, counter)
$('#another_element').bind('click mousedown', handler)
click(el)
mousedown(el)
t.assertEqual(5, counter)
$('#another_element').unbind()
click(el)
mousedown(el)
t.assertEqual(5, counter)
},
testUnbindWithNamespace: function(t){
var count = 0
$("#namespace_test").bind("click.bar", function() { count++ })
$("#namespace_test").bind("click.foo", function() { count++ })
$("#namespace_test").bind("mousedown.foo.bar", function() { count++ })
$("#namespace_test").trigger("click")
t.assertEqual(2, count)
$("#namespace_test").unbind("click.baz")
$("#namespace_test").trigger("click")
t.assertEqual(4, count)
$("#namespace_test").unbind("click.foo")
$("#namespace_test").trigger("click")
t.assertEqual(5, count)
$("#namespace_test").trigger("mousedown")
t.assertEqual(6, count)
$("#namespace_test").unbind(".bar")
$("#namespace_test").trigger("click").trigger("mousedown")
t.assertEqual(6, count)
},
testDelegate: function(t){
var counter = 0, pcounter = 0
$(document.body).delegate('#some_element', 'click', function(){ counter++ })
$('p').delegate('span.yay', 'click', function(){ counter++ })
$(document.body).delegate('p', 'click', function(){ pcounter++ })
click($('#some_element').get(0))
t.assertEqual(1, counter)
click($('span.yay').get(0))
t.assertEqual(2, counter)
click($('span.nay').get(0))
t.assertEqual(2, counter)
click($('p').get(0))
t.assertEqual(3, pcounter)
},
testDelegateBlurFocus: function(t) {
var counter = 0
$('#delegate_blur_test').delegate('input', 'blur', function(){ counter++ })
$('#delegate_blur_test').find('input').focus()
$('#delegate_blur_test').find('input').blur()
t.assertEqual(1, counter)
$('#delegate_blur_test').find('input').focus()
$('#delegate_blur_test').find('input').blur()
t.assertEqual(2, counter)
$('#delegate_focus_test').delegate('input', 'focus', function(){ counter++ })
$('#delegate_focus_test').find('input').focus()
$('#delegate_focus_test').find('input').blur()
t.assertEqual(3, counter)
$('#delegate_focus_test').find('input').focus()
$('#delegate_focus_test').find('input').blur()
t.assertEqual(4, counter)
},
testDelegateNamespacedBlurFocus: function(t) {
var counter = 0
$('#delegate_blur_test').delegate('input', 'blur.namespace_test', function(){ counter++ })
$('#delegate_blur_test').find('input').focus()
$('#delegate_blur_test').find('input').blur()
t.assertEqual(1, counter)
$('#delegate_blur_test').find('input').focus()
$('#delegate_blur_test').find('input').blur()
t.assertEqual(2, counter)
$('#delegate_focus_test').delegate('input', 'focus.namespace_test', function(){ counter++ })
$('#delegate_focus_test').find('input').focus()
$('#delegate_focus_test').find('input').blur()
t.assertEqual(3, counter)
$('#delegate_focus_test').find('input').focus()
$('#delegate_focus_test').find('input').blur()
t.assertEqual(4, counter)
},
testUndelegateNamespacedBlurFocus: function(t) {
var el, counter = 0
el = $('#delegate_blur_test')
el.delegate('input', 'blur.test', function(){ counter++ })
el.find('input').focus().blur()
t.assertEqual(1, counter, 'expected handler to be triggered')
el.undelegate('input', '.test')
el.find('input').focus().blur()
t.assertEqual(1, counter, 'expected handler to unbind')
el = $('#delegate_focus_test')
el.delegate('input', 'focus.test', function(){ counter++ })
el.find('input').focus().blur()
t.assertEqual(2, counter, 'expected handler to be triggered')
el.undelegate('input', '.test')
el.find('input').focus().blur()
t.assertEqual(2, counter, 'expected handler to unbind')
},
testDelegateReturnFalse: function(t){
$(document.body).delegate('#link_that_will_be_prevented', 'click', function(){
return false
})
var event = $.Event('click')
$('#link_that_will_be_prevented').trigger(event)
t.assertTrue(event.isDefaultPrevented())
t.pause()
setTimeout(function(){
t.resume(function(){
var text = $('#link_target_iframe')[0].contentDocument.body.textContent
t.assert(!text.match(/Hello from iframe/))
})
}, 500)
},
testDelegateReturnValueShouldntPreventDefault: function(t){
$(document.body).delegate('#link_that_will_be_prevented', 'click', function(){
})
var event = $.Event('click')
$('#link_that_will_be_prevented').trigger(event)
t.assertFalse(event.isDefaultPrevented())
t.pause()
setTimeout(function(){
t.resume(function(){
var text = $('#link_target_iframe')[0].contentDocument.body.textContent
t.assert(text.match(/Hello from iframe/))
})
}, 500)
},
testDelegateWithObject: function(t){
var counter = 0, received, el = $('p').first(),
eventData = {
click: function(){ counter++ },
custom: function(e, arg){ received = arg }
}
$(document.body).delegate('p', eventData)
el.trigger('click')
t.assertEqual(1, counter)
el.trigger('click')
t.assertEqual(2, counter)
el.trigger('custom', 'boo')
t.assertEqual('boo', received)
$(document.body).undelegate('p', {custom: eventData.custom})
el.trigger('click')
t.assertEqual(3, counter)
el.trigger('custom', 'bam')
t.assertEqual('boo', received)
},
testDelegateWithCustomArgument: function(t) {
var received
$(document).delegate('#some_element', 'custom', function(e, arg, more){ received = arg + more })
$('p').delegate('span.yay', 'custom', function(e, arg){ received = arg })
$(document).delegate('p', 'custom', function(e, arg){ received = arg })
$('#some_element').trigger('custom', 'one')
t.assertEqual('oneundefined', received)
$('#some_element').trigger('custom', ['one', 'two'])
t.assertEqual('onetwo', received)
$('span.yay').trigger('custom', 'boom')
t.assertEqual('boom', received)
$('span.yay').trigger('custom', ['bam', 'boom'])
t.assertEqual('bam', received)
$('span.nay').trigger('custom', 'noes')
t.assertEqual('noes', received)
$('p').first().trigger('custom', 'para')
t.assertEqual('para', received)
},
testDelegateEventProxy: function(t){
var content
$('div#delegate_test').delegate('span.second-level', 'click', function(e){
t.assertEqual($('span.second-level').get(0), this)
t.assertEqual($('span.second-level').get(0), e.currentTarget)
t.refuteEqual($('span.second-level').get(0), e.originalEvent.currentTarget)
t.assertEqual($('div#delegate_test').get(0), e.liveFired)
content = $(this).html()
})
click($('span.second-level').get(0))
t.assertEqual('hi', content)
var fired = false
if (window.location.hash.length) window.location.hash = ''
$('div#delegate_test').html('
')
$('div#delegate_test').delegate('a', 'click', function(e){
e.preventDefault()
fired = true
})
click($('div#delegate_test a').get(0))
t.assert(fired)
t.refuteEqual('#foo', window.location.hash)
fired = false
if (window.location.hash.length) window.location.hash = ''
$('div#delegate_test').html('
')
$('div#delegate_test a').trigger('click')
t.assert(fired)
t.refuteEqual('#bar', window.location.hash)
},
testUndelegate: function(t){
var count = 0, handler = function() { count++ }
$("#undelegate_test").bind("click mousedown", handler)
$("#undelegate_test").delegate("span.first-level", "click mousedown", handler)
$("#undelegate_test").delegate("span.second-level", "click mousedown", handler)
$("#undelegate_test span.second-level").trigger("click")
t.assertEqual(3, count)
$("#undelegate_test").undelegate("span.second-level", "click", handler)
$("#undelegate_test span.second-level").trigger("click")
t.assertEqual(5, count)
$("#undelegate_test").undelegate("span.first-level")
$("#undelegate_test span.second-level").trigger("click")
t.assertEqual(6, count)
$("#undelegate_test").unbind("click")
$("#undelegate_test span.second-level").trigger("click")
t.assertEqual(6, count)
$("#undelegate_test span.second-level").trigger("mousedown")
t.assertEqual(8, count)
$("#undelegate_test").undelegate()
$("#undelegate_test span.second-level").trigger("mousedown")
t.assertEqual(8, count)
},
testLive: function(t){
var counter = 0
$('p.live').live('click', function(){ counter++ })
$(document.body).append('
')
$(document.body).append('
')
click($('#live_1').get(0))
click($('#live_2').get(0))
$('p.live').remove()
$(document.body).append('
')
$('p.live').live('click', function(){
t.assertEqual(document.getElementById('live_this_test'), this)
})
click($('#live_this_test').get(0))
t.assertEqual(3, counter)
},
testDie: function(t){
var count = 0, handler = function() { count++ }
$("#another_element").live("click mousedown", handler)
$("#another_element").trigger("click")
t.assertEqual(1, count)
$("#another_element").die("click", handler)
$("#another_element").trigger("click")
t.assertEqual(1, count)
$("#another_element").trigger("mousedown")
t.assertEqual(2, count)
$("#another_element").die()
$("#another_element").trigger("mousedown")
t.assertEqual(2, count)
},
testOn: function(t){
var el = $('#some_element'), node = el.get(0), ret,
bindTriggered = 0, delegateTriggered = 0
ret = el.on('click', function(e){
bindTriggered++
t.assertIdentical(node, this)
})
.on({ click: function(){bindTriggered++} })
t.assertIdentical(el, ret)
ret = $(document.body).on('click', 'div', function(e){
delegateTriggered++
t.assertIdentical(node, this)
})
.on({ click: function(){delegateTriggered++} }, '*[id^=some]')
t.assertIdentical(document.body, ret.get(0))
click(node)
t.assertEqual(2, bindTriggered, "bind handlers")
t.assertEqual(2, delegateTriggered, "delegate handlers")
},
testOnReturnFalse: function(t){
var el = $('#some_element')
el.on('click', function(){
setTimeout(function(){
t.resume(function(){})
}, 10)
t.assert(true, "should have been called")
return false
})
$(document.body).on('click', function(){
t.refute(true, "the event should have been stopped")
})
t.pause()
click(el.get(0))
},
testOff: function(t){
var el = $('#some_element'), bindTriggered = 0, delegateTriggered = 0,
handler = function(){ bindTriggered++ }
el.bind('click', handler).bind('click', function(){ bindTriggered++ })
el.live('click', function(){ delegateTriggered++ })
click(el.get(0))
t.assertEqual(2, bindTriggered, "bind handlers before unbind")
t.assertEqual(1, delegateTriggered, "delegate handlers before unbind")
el.off('click', handler)
$(document.body).off('click', '#some_element')
click(el.get(0))
t.assertEqual(3, bindTriggered, "bind handlers")
t.assertEqual(1, delegateTriggered, "delegate handlers")
},
testOne: function(t){
var counter = 0, context, received, el = $('#some_element')
$(document.body).one('click', function(e, arg, more){
context = this
counter++
received = arg + more
t.assertIn('preventDefault', e)
return false
})
var evt = $.Event('click')
el.trigger(evt, ['one', 'two'])
t.assertEqual(1, counter)
t.assertEqual('onetwo', received)
t.assertIdentical(document.body, context)
t.assertTrue(evt.isDefaultPrevented())
el.trigger('click')
t.assertEqual(1, counter, "the event handler didn't unbind itself")
},
testOneWithObject: function(t){
var counter = 0, el = $('#some_element')
$(document.body).one({
click: function() { counter++ },
custom: function() { counter-- }
})
el.trigger('click')
t.assertEqual(1, counter)
el.trigger('click')
t.assertEqual(1, counter)
el.trigger('custom')
t.assertEqual(0, counter)
el.trigger('custom')
t.assertEqual(0, counter)
},
testDOMEventWrappers: function(t){
var events = ('blur focus focusin focusout load resize scroll unload click dblclick '+
'mousedown mouseup mousemove mouseover mouseout '+
'change select keydown keypress keyup error').split(' ')
var el = $('#another_element'), count = 0
events.forEach(function(event){
t.assertTrue($.isFunction(el[event]), 'event type: ' + event)
})
el.click(function(){ count++ })
click(el.get(0))
t.assertEqual(1, count)
},
testCustomEvents: function (t) {
var el = $(document.body)
el.bind('custom', function(evt, a, b) {
t.assertEqual(a, 1)
t.assertEqual(b, 2)
el.unbind()
})
el.trigger('custom', [1, 2])
el.bind('custom', function(evt, a) {
t.assertEqual(a, 1)
el.unbind()
})
el.trigger('custom', 1)
var eventData = {z: 1}
el.bind('custom', function(evt, a) {
t.assertEqual(a, eventData)
el.unbind()
})
el.trigger('custom', eventData)
},
testSpecialEvent: function (t) {
var clickEvent = $.Event('click'),
mouseDownEvent = $.Event('mousedown'),
mouseUpEvent = $.Event('mouseup'),
mouseMoveEvent = $.Event('mousemove'),
submitEvent = $.Event('submit')
t.assertEqual(MouseEvent, clickEvent.constructor)
t.assertEqual(MouseEvent, mouseDownEvent.constructor)
t.assertEqual(MouseEvent, mouseUpEvent.constructor)
t.assertEqual(MouseEvent, mouseMoveEvent.constructor)
t.assertEqual(Event, submitEvent.constructor)
}
})
})()