aboutsummaryrefslogblamecommitdiffstats
path: root/tests/test-util.js
blob: 126436e266cb20f5f9c2ee37a04331781620e4b2 (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!");
};