aboutsummaryrefslogblamecommitdiffstats
path: root/tests/test-util.js
blob: 9acb54c8692fe115208a9d4da4d83ecb63ae2c17 (plain) (tree)
1
2
3
4
5
6
7



                                          
                           
                            
 












































                                                           




















                                                  












                                                
                                                                     
                                            
                                                                    
                                                                   
                                                   


                                                                         







                                                              





                                                                                
                          
                                                  

                                                          


                                              




                                                         
 




                                                            
 
































                                                                        
                                                                     
                                                    
                                                             








                                                                      
 






                                                                 
                                       
                                      


















                                                                                                                 
                           
                                      
                                                               
                                        





                                                                                    

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