Mercurial > nebulaweb3
diff default/node_modules/shoestring/test/unit/core.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/default/node_modules/shoestring/test/unit/core.js Sat May 31 09:21:51 2025 +0800 @@ -0,0 +1,191 @@ +/* +shoestring unit tests - using qUnit +*/ +(function(undefined){ + +module( 'Core' ); +test( 'API Properties: shoestring is defined', function() { + ok( shoestring !== undefined ); +}); + +test( 'API Properties: shoestring.fn is defined', function() { + ok( shoestring.fn !== undefined ); +}); + +test( 'API Properties: shoestring.extend is defined', function() { + ok( shoestring.extend !== undefined ); +}); + +test( 'API Properties: shoestring.inArray is defined', function() { + ok( shoestring.inArray !== undefined ); +}); + +test( 'API Properties: shoestring.ready is defined', function() { + ok( shoestring.ready !== undefined ); +}); + +module( 'Types' ); +test( 'API Properties: shoestring is a function', function() { + ok( typeof(shoestring) === "function" ); +}); + +test( 'API Properties: shoestring.fn is an object', function() { + ok( shoestring.fn === shoestring.Shoestring.prototype ); +}); + +test( 'API Properties: shoestring.extend is a function', function() { + ok( typeof(shoestring.extend) === "function" ); +}); + +test( 'API Properties: shoestring.inArray is a function', function() { + ok( typeof(shoestring.inArray) === "function" ); +}); + +test( 'API Properties: shoestring.ready is a function', function() { + ok( typeof(shoestring.ready) === "function" ); +}); + +module( 'Core fn Methods' ); +test( 'API Properties: shoestring.fn.each, is defined', function() { + ok( shoestring.fn.each !== undefined ); +}); + +test( 'API Properties: shoestring.fn.children, is defined', function() { + ok( shoestring.fn.children !== undefined ); +}); + +test( 'API Properties: shoestring.fn.find, is defined', function() { + ok( shoestring.fn.find !== undefined ); +}); + +module( 'fn Types' ); + +test( 'API Properties: shoestring.fn.each, is a function', function() { + ok( typeof(shoestring.fn.each) === "function" ); +}); + +test( 'API Properties: shoestring.fn.children, is a function', function() { + ok( typeof(shoestring.fn.children) === "function" ); +}); + +test( 'API Properties: shoestring.fn.find, is a function', function() { + ok( typeof(shoestring.fn.find) === "function" ); +}); + + + +module( 'Functionality' ); +test( 'shoestring with no arguments returns a shoestring object', function() { + ok( shoestring().constructor === shoestring.Shoestring ); +}); + +test( 'shoestring with no arguments returns an empty array', function() { + ok( shoestring().length === 0 ); +}); + +test( 'shoestring with a string argument returns a shoestring objecty', function() { + ok( shoestring( "body" ).constructor === shoestring.Shoestring ); +}); + +test( 'shoestring with a string argument returns a collection of dom nodes from qsa', function() { + ok( shoestring( "body" )[ 0 ] === document.querySelectorAll( "body" )[ 0 ] ); +}); + +test( 'shoestring with a string argument starting with "<" returns a shoestring object', function() { + ok( shoestring( "<div></div>" ).constructor === shoestring.Shoestring ); +}); + +test( 'shoestring with a string argument starting with "<" returns a generated array of dom nodes', function() { + ok( shoestring( "<div></div>" )[0].constructor === HTMLDivElement ); +}); + +test( 'shoestring with a string argument starting with "<" returns a generated array of dom nodes', function() { + ok( shoestring( "<div></div><h2></h2>" )[1].constructor === HTMLHeadingElement ); +}); + +test( 'shoestring with a function argument returns array', function() { + ok( shoestring( function(){} ).constructor === Array ); +}); + +test( 'shoestring with a function argument returns array with document child', function() { + ok( shoestring( function(){} )[ 0 ] === document ); +}); + +test( 'shoestring with a Node passed in returns an array of that node', function(){ + var el = document.querySelectorAll( ".constructor-selector" )[0]; + ok( shoestring( el ).constructor === shoestring.Shoestring ); + ok( shoestring( el )[0] === el ); +}); + +test( 'shoestring with a Node passed in returns a singleton array', function(){ + var el = document.querySelectorAll( ".constructor-selector" )[0]; + ok( shoestring( el )[0].constructor === HTMLDivElement ); +}); + +test( 'shoestring with a NodeList passed in returns an array of those nodes', function(){ + var els = document.querySelectorAll( ".constructor-selector" ); + equal( shoestring( els )[0], els[0] ); + equal( shoestring( els ).length, 1 ); +}); + +test( 'passing a string argument to shoestring with a second argument returns result scoped to second arg', function() { + ok( shoestring( "body" )[ 0 ] === shoestring( "body", "html" )[ 0 ] ); + ok( shoestring( "body" )[ 0 ] !== shoestring( "body", "body" )[ 0 ] ); + ok( shoestring( ".testel-2" ).length === 2 ); + ok( shoestring( ".testel-2", ".testel" ).length === 1 ); +}); + +test ('shoestring.each value matches array at index', function(){ + expect( 5 ); + var arr = [1,2,3,4,5]; + $.each( arr, function( i, v ){ + equal( v, arr[i], "Array at specified index " + i + " should have value of " + arr[i] + " but has " + v ); + }); +}); + +test ('shoestring.each value matches array at index for selected items', function(){ + expect( 2 ); + var div1 = $( "<div id='div1'></div>" ); + var div2 = $( "<div id='div2'></div>" ); + var divs = [ div1, div2 ]; + $.each( divs, function( i, v ){ + equal( v.id, divs[i].id, "Item at specified index " + i + " should have id of " + divs[i] + " but has " + v ); + }); +}); + +test ('shoestring.each only runs as many times as are items in array', function(){ + var testels = $( ".testel-2" ); + var divout = []; + $.each( testels, function( i, v ){ + if( i > 0 ){ + return false; + } + divout.push(v); + }); + + equal( divout.length, 1, "Both arrays should have equal length" ); +}); + +test ('shoestring.each exits early if "false" is returned', function(){ + var testels = $( ".testel-2" ); + var divout = []; + $.each( testels, function( i, v ){ + divout.push(v); + }); + + equal( divout.length, testels.length, "Both arrays should have equal length" ); +}); + +test( 'shoestring with an array of Nodes passed returns an array of those nodes', function(){ + var els = [ document.createElement( "div" ), document.createElement( "div" ), document.createElement( "div" ) ]; + ok( shoestring( els ).constructor === shoestring.Shoestring ); + ok( shoestring( els )[0].constructor === HTMLDivElement ); + ok( shoestring( els ).length === 3 ); + equal( Object.prototype.toString.call( shoestring( els ).map ).indexOf( '[native code]' ), -1, undefined ); +}); + +test( "find can select multiple comma-separated children", function() { + equal( shoestring( ".find" ).find( ".child1, .child2" ).length, 2 ); +}); + +})();