/*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
exports.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
exports.ensureIsInListTrue = function (test) {
test.assert(util.isInList("a", ["a"]),
"conversion of a string to an array");
};
exports.ensureIsInListFalse = function (test) {
test.assert(!util.isInList("b", ["a"]),
"conversion of a string to an array");
};
exports.ensureIsInListEmpty = function (test) {
test.assert(!util.isInList("b", []),
"conversion of a string to an array");
};
exports.ensureIsInListNoMember = function (test) {
test.assert(!util.isInList("", ["x"]),
"conversion of a string to an array");
};
// testing util.filterByRegexp
exports.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");
};
exports.ensureFilterByRegexpEmpty = function (test) {
test.assertRaises(function () {
util.filterByRegexp(undefined, "tralala");
},
"list is undefined",
"filterByRegexp throws an exception with empty list");
};
// testing util.getISODate
exports.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
exports.ensureValToArrayString = function (test) {
test.assertEqual(JSON.stringify(util.valToArray("a")),
JSON.stringify(["a"]),
"conversion of a string to an array");
};
exports.ensureValToArrayEmpty = function (test) {
test.assertEqual(JSON.stringify(util.valToArray("")),
JSON.stringify([""]),
"conversion of an empty string to an array");
};
exports.ensureValToArrayArray = function (test) {
test.assertEqual(JSON.stringify(util.valToArray(["a"])),
JSON.stringify(["a"]),
"non-conversion of an array");
};
// testing util.addCSVValue
exports.ensureCSVAddedToNull = function (test) {
test.assertEqual(util.addCSVValue("", "b"), "b",
"adding a string to empty string");
};
exports.ensureCSVAddedNull = function (test) {
test.assertEqual(util.addCSVValue("a", ""), "a",
"adding nothing to a string");
};
exports.ensureCSVAddedString = function (test) {
test.assertEqual(util.addCSVValue("a", "b"), "a, b",
"adding one string to another one");
};
exports.ensureCSVAddedArray = function (test) {
test.assertEqual(util.addCSVValue("a", ["b", "c"]), "a, b, c",
"adding array to a string");
};
exports.ensureCSVAddedArray2Array = function (test) {
test.assertEqual(util.addCSVValue("a, b", ["c", "d"]), "a, b, c, d",
"adding one array to another");
};
// testing util.removeCSVValue
exports.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
exports.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");
};
exports.ensureCSVRemoveEmpty = function (test) {
test.assertEqual(util.removeCSVValue("", "c"), "",
"removing a string from an empty array");
};
// testing util.getObjectKeys
exports.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
exports.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
exports.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!");
};