Skip to content

Commit

Permalink
error refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
jarrettmeyer committed Oct 13, 2013
1 parent 54ba524 commit 57a6669
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 25 deletions.
5 changes: 5 additions & 0 deletions 02_files.js
Expand Up @@ -2,6 +2,11 @@
var fs = require("fs");
var os = require("os");

/**
* Join two paths together.
* @param {string} a - left side of path
* @param {string} b - right side of path
*/
var joinPath = function (a, b) {
if (!a) {
a = "/";
Expand Down
13 changes: 13 additions & 0 deletions sample_app_1/ArgumentUndefinedError.js
@@ -0,0 +1,13 @@
var ArgumentUndefinedError = function (argumentName) {

var self = this;
self.argumentName = argumentName;
self.message = "Undefined argument: " + self.argumentName;

};

ArgumentUndefinedError.prototype = new Error();
ArgumentUndefinedError.prototype.constructor = ArgumentUndefinedError;
ArgumentUndefinedError.prototype.name = "ArgumentUndefinedError ";

module.exports = ArgumentUndefinedError;
14 changes: 0 additions & 14 deletions sample_app_1/Error.js

This file was deleted.

4 changes: 2 additions & 2 deletions sample_app_1/RouteConfig.js
@@ -1,4 +1,4 @@
var error = require("./error");
var ArgumentUndefinedError = require("./ArgumentUndefinedError");

/**
* Allows routes to be configured sepratately from the rest of the application.
Expand All @@ -17,7 +17,7 @@ var RouteConfig = function (router) {
// Route Configuration

/**
* Overrides the default toString() function.
* Overrides the default toString() function, providing something actually useful.
*/
self.toString = function () {
return "Route Configuration. Number of routes: " + self.router.getNumberOfRoutes();
Expand Down
7 changes: 5 additions & 2 deletions sample_app_1/Router.js
@@ -1,8 +1,10 @@
var ArgumentUndefinedError = require("./ArgumentUndefinedError");

var Router = function (fs) {

// Pre-conditions.
if (!fs) {
throw "Undefined argument: fs";
throw new ArgumentUndefinedError("fs");
}

// Variable declarations.
Expand All @@ -25,7 +27,8 @@ var Router = function (fs) {
};

self.getNumberOfRoutes = function () {
return self.matches.length;
var keys = Object.keys(self.matches);
return keys.length;
};

self.isMatch = function (url, pattern) {
Expand Down
@@ -1,12 +1,12 @@
var assert = require("assert");
var error = require("../error");
var ArgumentUndefinedError = require("../ArgumentUndefinedError");

describe("error.ArgumentError", function () {
describe("ArgumentUndefinedError", function () {

describe("#argumentName", function () {

it("saves the argument", function (done) {
var ae = new error.ArgumentError("variable");
var ae = new ArgumentUndefinedError("variable");
assert.equal("variable", ae.argumentName);
done();
});
Expand All @@ -16,11 +16,11 @@ describe("error.ArgumentError", function () {
describe("#toString", function () {

it("produces the expected message", function (done) {
var ae = new error.ArgumentError("variable");
assert.equal("Undefined argument: variable", ae);
var ae = new ArgumentUndefinedError("variable");
assert.equal("Undefined argument: variable", ae.message);
done();
});;

});

});
});
21 changes: 21 additions & 0 deletions sample_app_1/tests/RouteConfig_tests.js
@@ -0,0 +1,21 @@
var assert = require("assert");
var RouteConfig = require("../RouteConfig");

describe("RouteConfig", function () {

describe("#toString", function () {

it("produces the expected string", function (done) {
var router = {
getNumberOfRoutes: function () { return 0; }
};
var rc = new RouteConfig(router);
var result = rc.toString();
assert.equal("Route Configuration. Number of routes: 0", result);
done();
});

});

});

13 changes: 12 additions & 1 deletion sample_app_1/tests/Router_Tests.js
Expand Up @@ -16,13 +16,24 @@ describe("Router", function () {
try {
new Router();
} catch (e) {
assert.equal("Undefined argument: fs", e);
assert.equal("Undefined argument: fs", e.message);
done();
}
});

});

describe("#getNumberOfRoutes", function () {

it("should be 0 for a new router", function (done) {
var fs = {};
var router = new Router(fs);
assert.equal(0, router.getNumberOfRoutes());
done();
});

});

describe("#isMatch", function () {

it("can match a regular expression", function (done) {
Expand Down

0 comments on commit 57a6669

Please sign in to comment.