#!/usr/bin/node var parse = require("../parseLDIF.js"); var fs = require("fs"); var toSource = require('tosource'); Object.prototype.equals = function(x) { var p; for(p in this) { if(typeof(x[p])=='undefined') {return false;} } for(p in this) { if (this[p]) { switch(typeof(this[p])) { case 'object': if (!this[p].equals(x[p])) { return false; } break; case 'function': if (typeof(x[p])=='undefined' || (p != 'equals' && this[p].toString() != x[p].toString())) return false; break; default: if (this[p] != x[p]) { return false; } } } else { if (x[p]) return false; } } for(p in x) { if(typeof(this[p])=='undefined') {return false;} } return true; } var observed = {}; var expResults = { 1: [ { cn: ["Barbara Jensen", "Barbara J Jensen", "Babs Jensen"], sn:"Jensen", telephoneNumber:"+1 408 555 1212", description:"A big sailing fan." }, { cn:"Bjorn Jensen", sn:"Jensen", telephoneNumber:"+1 408 555 1212" } ], 2: [ { cn: ["Barbara Jensen", "Barbara J Jensen", "Babs Jensen"], sn:"Jensen", telephoneNumber:"+1 408 555 1212", description:'Babs is a big sailing fan, and travels extensively in ' + 'search of perfect sailing conditions.', title:"Product Manager, Rod and Reel Division" } ], 3: [ { cn: ["Gern Jensen", "Gern O Jensen"], sn:"Jensen", telephoneNumber:"+1 408 555 1212", description:'What a careful reader you are! This value is base-64-encoded' + ' because it has a control character in it (a CR).\r By the way,' + ' you should really get out more.' } ], 4: [ { mail:"rogasawara@airius.co.jp", givenname:"ロドニー", sn: "小笠原", cn:"小笠原 ロドニー", title:"営業部 部長", } ], 5: [ { cn: ["Horatio Jensen", "Horatio N Jensen"], sn:"Jensen", telephoneNumber:"+1 408 555 1212" } ] }; var resultsCount = Object.keys(expResults).length; var success = 0; for (var key in expResults) { if (expResults.hasOwnProperty(key)) { var lines = fs.readFileSync("example0" + key + ".ldif", "utf-8"). replace(/\r\n/g,"\n"); observed = parse.parseLDIF(lines.split("\n")); if (observed.equals(expResults[key])) { console.log(key + "/" + resultsCount + " ... OK"); } else { console.log("Test " + key + " fails! Expected:\n" + toSource(expResults[key]) + "\n----\nObserved:\n" + toSource(observed)); success = 1; } } } process.exit(success);