/*global exports: false, require: false */
/*jslint plusplus: false */
// TODO: add some failing tests as well
"use strict";
var util = require("util");
var urlMod = require("url");
// testing util.heir
var ensureHeir = function(test) {
var fedlimid = {}, naoise = {};
function Father(x) {
this.family = x;
}
Father.prototype.getFamily = function getFamily() {
return this.family;
};
function Son(x, w) {
Father.call(this, x);
this.wife = w;
}
Son.prototype = util.heir(Father);
Son.prototype.constructor = Son;
Son.prototype.getWife = function getWife() {
return this.wife;
};
Son.prototype.getFamily = function getFamily() {
var upFamily = Father.prototype.getFamily.call(this);
return upFamily + ", " + this.wife;
};
// for curious and non-Celtic
// http://en.wikipedia.org/wiki/Deirdre :)
fedlimid = new Father("mac Daill");
naoise = new Son("Usnech", "Deirdre");
test.assertEqual(fedlimid.getFamily(), "mac Daill",
"checking creation of new simple object");
test.assertEqual(naoise.getWife(), "Deirdre",
"checking creation of new daughter object");
test.assertEqual(naoise.getFamily(), "Usnech, Deirdre",
"checking creation of new overloaded method");
};
// testing util.isInList
var ensureIsInListTrue = function(test) {
test.assert(util.isInList("a", [
"a"
]), "conversion of a string to an array");
};
var ensureIsInListFalse = function(test) {
test.assert(!util.isInList("b", [
"a"
]), "conversion of a string to an array");
};
var ensureIsInListEmpty = function(test) {
test.assert(!util.isInList("b", []),
"conversion of a string to an array");
};
var ensureIsInListNoMember = function(test) {
test.assert(!util.isInList("", [
"x"
]), "conversion of a string to an array");
};
// testing util.filterByRegexp
var ensureFilterByRegexp = function(test) {
var list = [
{
"regexp" : "test(ing|ed)",
"addr" : "correct"
}, {
"regexp" : "ba.*d",
"addr" : true
}
];
test.assertEqual(util.filterByRegexp(list, "testing"),
"correct", "simple testing of filterByRegexp");
test.assertEqual(util.filterByRegexp(list, "unknown value"),
"",
"simple testing of filterByRegexp with non-found address");
test
.assert(util.filterByRegexp(list, "baaad"),
"simple testing of filterByRegexp with non-string return value");
};
var ensureFilterByRegexpEmpty = function(test) {
test.assertRaises(function() {
util.filterByRegexp(undefined, "tralala");
}, "list is undefined",
"filterByRegexp throws an exception with empty list");
};
// testing util.getISODate
var ensureGetISODate = function(test) {
test.assertEqual(util
.getISODate("Mon May 31 2010 23:29:09 GMT+0200 (CET)"),
"2010-05-31",
"conversion of a Date to ISO-formatted String");
};
// testing util.valToArray
var ensureValToArrayString = function(test) {
test.assertEqual(JSON.stringify(util.valToArray("a")), JSON
.stringify([
"a"
]), "conversion of a string to an array");
};
var ensureValToArrayEmpty = function(test) {
test.assertEqual(JSON.stringify(util.valToArray("")), JSON
.stringify([
""
]), "conversion of an empty string to an array");
};
var ensureValToArrayArray = function(test) {
test.assertEqual(JSON.stringify(util.valToArray([
"a"
])), JSON.stringify([
"a"
]), "non-conversion of an array");
};
// testing util.addCSVValue
var ensureCSVAddedToNull = function(test) {
test.assertEqual(util.addCSVValue("", "b"), "b",
"adding a string to empty string");
};
var ensureCSVAddedNull = function(test) {
test.assertEqual(util.addCSVValue("a", ""), "a",
"adding nothing to a string");
};
var ensureCSVAddedString = function(test) {
test.assertEqual(util.addCSVValue("a", "b"), "a, b",
"adding one string to another one");
};
var ensureCSVAddedArray = function(test) {
test.assertEqual(util.addCSVValue("a", [
"b", "c"
]), "a, b, c", "adding array to a string");
};
var ensureCSVAddedArray2Array = function(test) {
test.assertEqual(util.addCSVValue("a, b", [
"c", "d"
]), "a, b, c, d", "adding one array to another");
};
// testing util.removeCSVValue
var ensureCSVRemoveSimple = function(test) {
test.assertEqual(util.removeCSVValue("a, b", "b"), "a",
"removing one string from an array");
};
// also checking a tolerancy against different ways of writing arrays
var ensureCSVRemoveNonMember = function(test) {
test
.assertEqual(util.removeCSVValue("a,b", "c"), "a, b",
"removing a string from an array of which it isn't a member");
};
var ensureCSVRemoveEmpty = function(test) {
test.assertEqual(util.removeCSVValue("", "c"), "",
"removing a string from an empty array");
};
// testing util.getObjectKeys
var ensureGetObjectKeys = function(test) {
var testObj = {
a : 1,
b : 2
};
test.assertEqual(JSON.stringify(util.getObjectKeys(testObj)),
JSON.stringify([
"a", "b"
]), "getting keys from a object");
};
// testing util.getParamsFromURL
var ensureGetParamsFromURL = function(test) {
test
.assertEqual(
JSON
.stringify(util
.getParamsFromURL("https://bugzilla.redhat.com/show_bug.cgi?id=549066")),
JSON.stringify({
id : "549066"
}), "simply compare result of bugzilla show_page URL");
var complexURL = new urlMod.URL(
"http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient"
+ "&gfns=1&q=gg+javascript+url+parse");
test.assertEqual(JSON.stringify(util
.getParamsFromURL(complexURL)), JSON.stringify({
"ie" : "UTF-8",
"oe" : "UTF-8",
"sourceid" : "navclient",
"gfns" : "1",
"q" : "gg+javascript+url+parse"
}), "simply compare result of bugzilla show_page URL");
test.assertEqual(JSON.stringify(util
.getParamsFromURL("https://bugzilla.redhat.com/")), JSON
.stringify({}), "URL without any parameters");
test.assertRaises(function() {
util.getParamsFromURL("");
}, "Missing URL value!", "No URL");
};
// testing util.getBugNo
var ensureGetBugNo = function(test) {
var bugNo = util
.getBugNo("https://bugzilla.redhat.com/show_bug.cgi?id=597141");
test.assertEqual(bugNo, 597141, "getting bug number");
bugNo = util
.getBugNo("https://bugzilla.redhat.com/show_bug.cgi?id=serialWacom");
test
.assertEqual(bugNo, "serialWacom",
"getting a bug alias; there is no guarantee of getting number!");
};