aboutsummaryrefslogblamecommitdiffstats
path: root/tests/test-util.js
blob: 552868f28935ac037473883069c9e3c77fb9d39c (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12



                                          

                           





                                                                                                                                          



































                                                                                                

  


























                                                                                
                          
                                                  



                                                            











                                                                 
































                                                                        
                                                                     
                                                    
                                                             








                                                                      
























                                                                                    
/*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]);
//    });
//};