/// PerfektesChaos/js/isbnLib/qunit.js
/// 2018-09-04 PerfektesChaos@de.wikipedia
/// Fingerprint: #0#0#
/// QUNIT for ISBN utility package
/* global window:false */
/* jshint bitwise:true, curly:true, eqeqeq:true, latedef:true,
laxbreak:true,
nocomma:true, strict:true, undef:true, unused:true */
( function ( mw ) {
"use strict";
var LIB = "isbnLib",
Version = 1.3,
Signature = "ext.gadget.isbnLib",
Console, Tests;
/// @license GPL [//www.mediawiki.org/w/COPYING] (+GFDL, LGPL, CC-BY-SA)
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*/
function T01 ( assign ) {
/**
Add resolvers to default catalogs
@param assign string with language code (not "qqq"), or false
@version 2016-04-02 PerfektesChaos@de.wikipedia
*/
var plus =
{ de: [ "http://gso.gbv.de/DB=2.1/CMD?ACT=SRCHA&IKT=1007&TRM=#"
]
};
LIB.furnish( plus );
return LIB.finder( assign );
} // T01()
Tests = [
{ f: "factory" },
{ f: "factory",
a: [ true ] },
{ f: "finder",
a: [ "de" ] },
{ f: "finder",
a: [ "en" ] },
{ f: "flip",
a: [ "3-7891-4161-5" ],
r: "978-3-7891-4161-4" },
{ f: "flip",
a: [ "978-3-7891-4161-4" ],
r: "3-7891-4161-5" },
{ f: "focus",
a: [ "3-7891-4161-5" ],
r: "de" },
{ f: "focus",
a: [ "9129657520" ],
r: "sv" },
{ f: "format",
a: [ "9129657520" ],
r: "91-29-65752-0" },
{ f: T01,
a: [ "de" ] }
]; // 2016-03-22
function factory () {
/**
Callback from library
@version 2016-04-02 PerfektesChaos@de.wikipedia
*/
var i, f, r, test, s;
for ( i = 0; i < Tests.length; i++ ) {
test = Tests[ i ];
switch ( typeof test.f ) {
case "function":
f = test.f;
s = f.name;
break;
case "string":
s = test.f;
f = LIB[ s ];
break;
default:
f = false;
} // switch typeof test.f
if ( typeof f === "function" ) {
if ( typeof test.a !== "object" ) {
test.a = null;
}
Console.log( " ....................... " + i + ". "
+ s + "( " + test.a + " )" );
try {
r = f.apply( LIB, test.a );
switch ( typeof r ) {
case "boolean":
case "number":
case "string":
Console.log( r );
if ( typeof test.r !== "undefined" ) {
if ( test.r === r ) {
Console.log( " ... ===" );
} else {
Console.log( " !!!!!!!! !==" );
}
}
break;
case "object":
if ( r &&
typeof Console.dir === "function" ) {
Console.dir( r );
} else if ( r ) {
Console.log( "{object}" );
} else {
Console.log( "{null}" );
}
break;
} // switch typeof r
} catch ( e ) {
Console.log( "ERROR " + s + "()",
test.a );
Console.log( e );
}
} else {
Console.error( "!!!! isbnLib.QUNIT.factory() f " + i );
}
} // for i
} // factory()
function featuring() {
/**
Add external tests
@version 2016-04-02 PerfektesChaos@de.wikipedia
*/
var i, test;
if ( typeof LIB.qunit === "object"
&& LIB.qunit &&
typeof LIB.qunit.length === "number" ) {
for ( i = 0; i < LIB.qunit.length; i++ ) {
test = LIB.qunit[ i ];
if ( typeof test === "object"
&& test &&
typeof test.f === "string"
&& test.f ) {
if ( typeof test.a !== "object" ) {
test.a = null;
}
if ( test.a &&
typeof test.a.length !== "number" ) {
test.a = null;
}
Tests.push( test );
} else {
Console.error( "!!!!!!!! invalid external test #" + i );
}
} // for i
}
} // featuring()
function fed( application ) {
/**
Callback from library
@version 2016-04-02 PerfektesChaos@de.wikipedia
@param application library object
*/
if ( typeof application === "object" ) {
LIB = application;
Console.log( ">>>>>>>>>>>>>>>>>> " + LIB.type + " " + LIB.vsn );
featuring();
factory();
} else {
Console.error( "isbnLib.QUNIT.fed() " + typeof application );
}
} // fed()
function first() {
/**
Internal initialization, last attempt to attach libraries
@version 2018-09-04 PerfektesChaos@de.wikipedia
*/
var rls = { };
rls[ Signature + ".qunit" ] = "ready";
mw.loader.state( rls );
if ( typeof window === "object" &&
typeof window.console === "object"
&& window.console &&
typeof window.console.log === "function" ) {
Console = window.console;
if ( typeof Console.clear === "function" ) {
Console.clear();
}
Console.log( "=========== " + LIB + " " + " QUNIT " + Version );
}
if ( Console ) {
if ( ! mw.loader.getState( Signature ) ) {
rls = { };
rls[ Signature ] = "loading";
mw.loader.load( "https://en.wikipedia.org/w/index.php?"
+ "title=User:PerfektesChaos/js/"
+ LIB + "/r.js"
+ "&bcache=1&maxage=600"
+ "&action=raw&ctype=text/javascript" );
}
mw.hook( LIB + ".ready" ).add( fed );
}
} // first()
// autoInit onLoad
first();
}( window.mediaWiki ) );
// Emacs
// Local Variables:
// coding: iso-8859-1-dos
// fill-column: 80
// End:
/// EOF </nowiki> isbnLib/qunit.js