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



                                          
                           
                            
 
                    
                                  













                                                     
    

























                                                         

  
                        
                                          

                                          

  
                                           

                                          

  
                                           

                                          

  
                                              

                                          

  
                              
                                            
















                                                                     

  
                                                 




                                                          

  
                          
                                        

                                                                              

  
                          
                                              


                                                        

  
                                             


                                                       
  
 
                                             


                                                          
  
 
                           
                                            

                                                  

  
                                          

                                                  

  
                                            

                                                      

  
                                           

                                                                

  
                                                 

                                                                      


                              
                                             

                                                         


  
                                                                     
                                                

                                                                  


  
                                            

                                                    

  
 
                             
                                           






                                                               


                                
                                              


















                                                                                                               


                        
                                      



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