Calculator 001

by JoshGough

HTML

<script src="https://raw.github.com/LearnBoost/expect.js/master/expect.js"></script>
<script src="https://raw.github.com/visionmedia/mocha/master/mocha.js"></script>
<div id="mocha"></div>

CSS

@charset"utf-8";
 body {
    font: 20px/1.5"Helvetica Neue", Helvetica, Arial, sans-serif;
    padding: 60px 50px;
}
#mocha ul, #mocha li {
    margin: 0;
    padding: 0;
}
#mocha ul {
    list-style: none;
}
#mocha h1, #mocha h2 {
    margin: 0;
}
#mocha h1 {
    margin-top: 15px;
    font-size: 1em;
    font-weight: 200;
}
#mocha h1 a {
    text-decoration: none;
    color: inherit;
}
#mocha h1 a:hover {
    text-decoration: underline;
}
#mocha .suite .suite h1 {
    margin-top: 0;
    font-size: .8em;
}
.hidden {
    display: none;
}
#mocha h2 {
    font-size: 12px;
    font-weight: normal;
    cursor: pointer;
}
#mocha .suite {
    margin-left: 15px;
}
#mocha .test {
    margin-left: 15px;
    overflow: hidden;
}
#mocha .test.pending:hover h2::after {
    content:'(pending)';
    font-family: arial;
}
#mocha .test.pass.medium .duration {
    background: #C09853;
}
#mocha .test.pass.slow .duration {
    background: #B94A48;
}
#mocha .test.pass::before {
    content:'✓';
    font-size: 12px;
    display: block;
    float: left;
    margin-right: 5px;
    color: #00d6b2;
}
#mocha .test.pass .duration {
    font-size: 9px;
    margin-left: 5px;
    padding: 2px 5px;
    color: white;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .2);
    -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .2);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .2);
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    -o-border-radius: 5px;
    border-radius: 5px;
}
#mocha .test.pass.fast .duration {
    display: none;
}
#mocha .test.pending {
    color: #0b97c4;
}
#mocha .test.pending::before {
    content:'◦';
    color: #0b97c4;
}
#mocha .test.fail {
    color: #c00;
}
#mocha .test.fail pre {
    color: black;
}
#mocha .test.fail::before {
    content:'✖';
    font-size: 12px;
    display: block;
    float: left;
    margin-right: 5px;
    color: #c00;
}
#mocha .test pre.error {
    color: #c00;
    max-height: 300px;
    overflow:...

JavaScript

function Calculator() {
    this.add = function () {
        var result = 0;
        for (var i = 0, j = arguments.length; i < j; i++) {
            result += parseFloat(arguments[i]);
        }
        return result;
    };
    this.subtract = function () {
        var result = 0;
        if (arguments.length > 0) result = arguments[0];
        for (var i = 1, j = arguments.length; i < j; i++) {
            result -= parseFloat(arguments[i]);
        }
        return result;
    };
}

mocha.setup('bdd');

describe("Calculator", function () {
    describe("when add called with 2 and 2 and 7", function () {
        it('returns 11', function () {
            var calc = new Calculator();
            var result = calc.add(2, 2, 7);
            expect(result).to.be(11);
        });
    });

    describe("when subtract called with 11 and 2 and 2", function () {
        it('returns 7', function () {
            var calc = new Calculator();
            var result = calc.subtract(11, 2, 2);
            expect(result).to.be(7);
        });
    });
});

mocha.run();