diff --git a/calculator.js b/calculator.js index caf34db..40d8407 100644 --- a/calculator.js +++ b/calculator.js @@ -1,5 +1,5 @@ function isNumber(numStr){ - var re = /^[0-9\.]+$/; + var re = /^-?[0-9]+(.?[0-9]+)?$/; return re.test(numStr); } @@ -11,5 +11,16 @@ function substract(num1, num2){ return num1 - num2; } +function mul(num1, num2){ + return num1 * num2; +} + +function div(num1, num2){ + return num1 / num2; +} + module.exports.add = add; +module.exports.substract = substract; +module.exports.mul = mul; +module.exports.div = div; module.exports.isNumber = isNumber; diff --git a/index.html b/index.html index cc6a9d9..92c7fb4 100644 --- a/index.html +++ b/index.html @@ -22,6 +22,8 @@

Silly Calculator

=
diff --git a/main.js b/main.js index 957a234..e185155 100644 --- a/main.js +++ b/main.js @@ -15,6 +15,12 @@ window.onload = function(){ } else if (operator == "substract"){ document.getElementById('ans').value = substract(num1, num2); + } + else if (operator == "mul"){ + document.getElementById('ans').value = mul(num1, num2); + } + else if (operator == "div"){ + document.getElementById('ans').value = div(num1, num2); } else { alert("Bad operator!") diff --git a/package.json b/package.json index d727f6d..5783ea8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "author": "Askeing Yen & Shing Lyu", "license": "MPLv2", "dependencies": { - "mocha": "~2.3.2" + "mocha": "~2.3.2", + "sinon": "1.17.2" }, "repository":{} } diff --git a/test/test_calculator.js b/test/test_calculator.js index 13f6205..302d86f 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -1,10 +1,36 @@ var assert = require('assert'); var cal = require('../calculator.js') +var sinon = require('sinon'); describe('Calculator', function(){ - describe('add', function(){ it('add', function(){ assert.equal('2', cal.add(1, 1)); }) - }) + + it('substract',function(){ + assert.equal('1' , cal.substract(2,1)); + }) + + it('mul',function(){ + assert.equal('6' , cal.mul(2,3)); + }) + + it('div',function(){ + assert.equal('0.5' , cal.div(1,2)); + }) +}) + +describe('Negative path', function(){ + it('isNumber',function(){ + assert.equal(false,cal.isNumber('13A')); + }) +}) + +describe('Sinon', function(){ + it('stub mul function',function(){ + var stub = sinon.stub().returns(30); + var proxy = cal.mul(stub(), 5); + + assert.equal(150, proxy); + }) })