/*global exports: false, require: false */ /*jslint plusplus: false */ // TODO: add some failing tests as well "use strict"; var util = require("util"); var pushkinTestString = "Byl pozdní večer první máj!\n\n" + "Нас было много на челне;\nИные парус напрягали,\nДругие дружно упирали\n\n" + "В глубь мощны веслы. В тишине\nНа руль склонясь, наш кормщик умный\n" + "В молчаньи правил грузный чолн;\nА я — беспечной веры полн —\n" + "Пловцам я пел...."; // shamelessly stolen from // http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256BFB0077DFFD var areArraysEqual = function areArraysEqual(array1, array2) { var temp = [], i = 0, key = ""; if ((!array1[0]) || (!array2[0])) { // If either is not an array return false; } if (array1.length !== array2.length) { return false; } // Put all the elements from array1 into a "tagged" array for (i = 0; i < array1.length; i++) { key = (typeof array1[i]) + "~" + array1[i]; // Use "typeof" so a number 1 isn't equal to a string "1". if (temp[key]) { temp[key]++; } else { temp[key] = 1; } // temp[key] = # of occurrences of the value (so an element could appear multiple times) } // Go through array2 - if same tag missing in "tagged" array, not equal for (i = 0; i < array2.length; i++) { key = (typeof array2[i]) + "~" + array2[i]; if (temp[key]) { if (temp[key] === 0) { return false; } else { temp[key]--; } // Subtract to keep track of # of appearances in array2 } else { // Key didn't appear in array1, arrays are not equal. return false; } } return true; }; // 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.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.assert(areArraysEqual(util.valToArray("a"), ["a"]), "conversion of a string to an array"); }; // TODO: somehow cannot pass array as a parameter // waiting on https://bugzilla.mozilla.org/show_bug.cgi?id=569273 //exports.ensureValToArrayEmpty = function (test) { // test.assert(areArraysEqual(util.valToArray(""), [""]), // "conversion of a string to an array"); //}; //exports.ensureValToArrayArray = function (test) { // test.assert(areArraysEqual(util.valToArray("a"), ["a"]), // "conversion of a string to 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.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"); }; // TODO: waiting on https://bugzilla.mozilla.org/show_bug.cgi?id=569271 //// testing util.loadText //exports.ensureLoadText = function (test) { // var url = "http://www.ceplovi.cz/matej/progs/data/pushkin.txt"; // var text = ""; // util.loadText(url,function(txt) { // test.assertEqual(txt,pushkinTestString); // }); //}; //// testing util.loadJSON //exports.ensureLoadJSON = function (test) { // var url = "http://www.ceplovi.cz/matej/progs/data/test.json"; // var date = {}; // util.loadJSON(url,function(data) { // test.assertEqual(data,[1,2,3]); // }); //};