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);
+ })
})