Skip to content
11 changes: 10 additions & 1 deletion calculator.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
function isNumber(numStr){
var re = /^[0-9\.]+$/;
var re = /^[\-]?[0-9]+[\.]?[0-9]*$/;
return re.test(numStr);
}

function add(num1, num2){
return num1 + num2;
}

function multiply(num1, num2){
return num1 * num2;
}
function divide(num1, num2){
return num1 / num2;
}
function substract(num1, num2){
return num1 - num2;
}

module.exports.add = add;
module.exports.divide = divide;
module.exports.multiply = multiply;
module.exports.substract = substract;
module.exports.isNumber = isNumber;
2 changes: 2 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ <h1>Silly Calculator</h1>
<select id="operator" size="1">
<option value="add">+</option>
<option value="substract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" id="num2" value="1" />
<div>=</div>
Expand Down
6 changes: 6 additions & 0 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ window.onload = function(){
else if (operator == "substract"){
document.getElementById('ans').value = substract(num1, num2);
}
else if (operator == "multiply"){
document.getElementById('ans').value = multiply(num1, num2);
}
else if (operator == "divide"){
document.getElementById('ans').value = divide(num1, num2);
}
else {
alert("Bad operator!")
}
Expand Down
18 changes: 17 additions & 1 deletion test/test_calculator.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,25 @@ var assert = require('assert');
var cal = require('../calculator.js')

describe('Calculator', function(){
describe('add', function(){
describe('All Operator', function(){
it('add', function(){
assert.equal('2', cal.add(1, 1));
})
it('substract', function(){
assert.equal('0', cal.substract(1, 1));
})
it('multiply', function(){
assert.equal('4', cal.multiply(2, 2));
})
it('divide', function(){
assert.equal('2', cal.divide(2, 1));
})
})

describe('isnumber', function(){
it('isNumber', function(){
assert.equal(false, cal.isNumber('a'));
assert.equal(true, cal.isNumber(1));
})
})
})