From ea5c98b69a3384bd8001d00246fe33c8639b7000 Mon Sep 17 00:00:00 2001 From: RichardYang Date: Thu, 29 Oct 2015 21:18:22 +0800 Subject: [PATCH 01/10] Finish sinon --- calculator.js | 12 ++++++-- index.html | 6 ++-- main.js | 51 +++++++++++++++++++------------- test/test_calculator.js | 64 +++++++++++++++++++++++++++++++++++++---- 4 files changed, 104 insertions(+), 29 deletions(-) diff --git a/calculator.js b/calculator.js index caf34db..cc8e71f 100644 --- a/calculator.js +++ b/calculator.js @@ -1,5 +1,5 @@ function isNumber(numStr){ - var re = /^[0-9\.]+$/; + var re=/^[+-]?[0-9]+\.{0,1}[0-9]*$/ return re.test(numStr); } @@ -10,6 +10,14 @@ function add(num1, num2){ function substract(num1, num2){ return num1 - num2; } - +function mul(num1,num2){ + return num1*num2; +} +function div(num1,num2){ + return num1/num2; +} +module.exports.substract=substract; +module.exports.div=div; +module.exports.mul=mul; module.exports.add = add; module.exports.isNumber = isNumber; diff --git a/index.html b/index.html index cc6a9d9..5bcf6a3 100644 --- a/index.html +++ b/index.html @@ -20,8 +20,10 @@

Silly Calculator

=
diff --git a/main.js b/main.js index 957a234..7523089 100644 --- a/main.js +++ b/main.js @@ -1,23 +1,34 @@ window.onload = function(){ - document.getElementById('go_btn').onclick = function(){ - var num1Str = document.getElementById('num1').value; - var num2Str = document.getElementById('num2').value; - if (!isNumber(num1Str) || !isNumber(num2Str)){ - alert("Some of the input is not a number!") - document.getElementById('ans').value = "ERROR" - return + document.getElementById('go_btn').onclick = function(){ + var num1Str = document.getElementById('num1').value; + var num2Str = document.getElementById('num2').value; + if (!isNumber(num1Str) || !isNumber(num2Str)){ + alert("Some of the input is not a number!") + document.getElementById('ans').value = "ERROR" + return + } + var num1 = parseFloat(num1Str) + var num2 = parseFloat(num2Str) + var operator = document.getElementById('operator').value; + if (operator == "add"){ + document.getElementById('ans').value = add(num1, num2); + } + 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"){ + if(num2===0){ + document.getElementById('ans').value = "ERROR" + } + else{ + document.getElementById('ans').value = div(num1,num2); + } + } + else { + alert("Bad operator!") + } } - var num1 = parseFloat(num1Str) - var num2 = parseFloat(num2Str) - var operator = document.getElementById('operator').value; - if (operator == "add"){ - document.getElementById('ans').value = add(num1, num2); - } - else if (operator == "substract"){ - document.getElementById('ans').value = substract(num1, num2); - } - else { - alert("Bad operator!") - } - } } diff --git a/test/test_calculator.js b/test/test_calculator.js index 13f6205..52743e2 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -1,10 +1,64 @@ 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)); + describe('add', function(){ + it('add', function(){ + assert.equal('2', cal.add(1, 1)); + }) + it('add_decimal', function(){ + assert.equal('2.2', cal.add(1.1, 1.1)); + }) + it('add_neg', function(){ + assert.equal('-2', cal.add(-1,-1)); + }) + }) + describe('sub', function(){ + it('sub', function(){ + assert.equal('0', cal.substract(1, 1)); + }) + it('sub_decimal',function(){ + assert.equal('0',cal.substract(1.1,1.1)); + }) + it('sub_neg',function(){ + assert.equal('0',cal.substract(-13.15,-13.15)); + }) + }) + describe('mul', function(){ + it('mul', function(){ + assert.equal('1', cal.mul(1, 1)); + }) + + it('mul_decimal', function(){ + assert.equal('65', cal.mul(0.65,100)); + }) + it('mul_neg', function(){ + assert.equal('-11', cal.mul(-11, 1)); + }) + }) + describe('div', function(){ + it('div', function(){ + assert.equal('1', cal.div(1, 1)); + }) + it('div_decimal', function(){ + assert.equal('1', cal.div(1.1, 1.1)); + }) + it('div_neg', function(){ + assert.equal('-1', cal.div(-1, 1)); + }) + }) + + describe('negative_test', function(){ + it('shold be false', function(){ + assert.equal('1', cal.add(2, 1)); + }) + }) + describe('sinon_test',function(){ + it('Sinon test',function(){ + var stub = sinon.stub().returns(39); + var somenumber=stub(); + + assert.equal(39,cal.mul(1,somenumber)); + }) }) - }) }) From 5cdbcb2c9e97ec39e65399b59532aa5a0260f0ec Mon Sep 17 00:00:00 2001 From: RichardYang Date: Thu, 29 Oct 2015 21:31:57 +0800 Subject: [PATCH 02/10] pass test --- test/test_calculator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_calculator.js b/test/test_calculator.js index 52743e2..b81dbb4 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -50,7 +50,7 @@ describe('Calculator', function(){ describe('negative_test', function(){ it('shold be false', function(){ - assert.equal('1', cal.add(2, 1)); + assert.equal(false, cal.isNumber('1a'); }) }) describe('sinon_test',function(){ From 5c5f3cec72d5ddba561b9d87b53002fec17740ff Mon Sep 17 00:00:00 2001 From: RichardYang Date: Thu, 29 Oct 2015 21:41:23 +0800 Subject: [PATCH 03/10] Finished --- test/test_calculator.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/test_calculator.js b/test/test_calculator.js index b81dbb4..4a177c9 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -12,6 +12,10 @@ describe('Calculator', function(){ it('add_neg', function(){ assert.equal('-2', cal.add(-1,-1)); }) + it('add_neg', function(){ + assert.equal('-2', cal.add(-1,-1)); + }) + }) describe('sub', function(){ it('sub', function(){ @@ -50,7 +54,7 @@ describe('Calculator', function(){ describe('negative_test', function(){ it('shold be false', function(){ - assert.equal(false, cal.isNumber('1a'); + assert.equal(false, cal.isNumber('a')); }) }) describe('sinon_test',function(){ From d4da0752080ec66efee1b1c423cd00537c199e1d Mon Sep 17 00:00:00 2001 From: RichardYang Date: Thu, 29 Oct 2015 21:58:17 +0800 Subject: [PATCH 04/10] Finish --- package.json | 2 ++ test/test_calculator.js | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index d727f6d..86e2892 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "license": "MPLv2", "dependencies": { "mocha": "~2.3.2" + "sinon": "~1.17.2" }, "repository":{} + } diff --git a/test/test_calculator.js b/test/test_calculator.js index 4a177c9..a01ab59 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -59,10 +59,9 @@ describe('Calculator', function(){ }) describe('sinon_test',function(){ it('Sinon test',function(){ - var stub = sinon.stub().returns(39); - var somenumber=stub(); + var stub = sinon.stub(Math,"random").returns(39); - assert.equal(39,cal.mul(1,somenumber)); + assert.equal(39,cal.mul(Math.random(),1)); }) }) }) From 9b286d90788b97e31c93a28c91e982878920d068 Mon Sep 17 00:00:00 2001 From: RichardYang Date: Thu, 29 Oct 2015 22:16:26 +0800 Subject: [PATCH 05/10] Finishedgit add -Agit add -Agit add -Agit add -A! --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 86e2892..b77db86 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "author": "Askeing Yen & Shing Lyu", "license": "MPLv2", "dependencies": { - "mocha": "~2.3.2" + "mocha": "~2.3.2", "sinon": "~1.17.2" }, "repository":{} From 618cf30412db3f3dfc630485edb3981ffe4216c4 Mon Sep 17 00:00:00 2001 From: RichardYang Date: Fri, 30 Oct 2015 14:47:06 +0800 Subject: [PATCH 06/10] try selenium --- test/test_calculator.js | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/test/test_calculator.js b/test/test_calculator.js index a01ab59..22e2369 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -1,6 +1,7 @@ var assert = require('assert'); var cal = require('../calculator.js') var sinon=require('sinon') +var webdriver = require('selenium-webdriver'); describe('Calculator', function(){ describe('add', function(){ it('add', function(){ @@ -55,13 +56,34 @@ describe('Calculator', function(){ describe('negative_test', function(){ it('shold be false', function(){ assert.equal(false, cal.isNumber('a')); + assert.equal(true, cal.isNumber(1)); }) }) describe('sinon_test',function(){ it('Sinon test',function(){ - var stub = sinon.stub(Math,"random").returns(39); + var stub = sinon.stub(Math,"random").returns(39); - assert.equal(39,cal.mul(Math.random(),1)); + assert.equal(39,cal.mul(Math.random(),1)); }) }) + describe('selenium-webdriver',function(){ + it('selenium-test',function(done){ + var driver = new webdriver.Builder(). + forBrowser('chrome').build(); + driver.get("http://127.0.0.1:8000/") + var searchBox=driver.findElement(webdriver.By.id('num1')); + searchBox.sendKeys('1'); + var searchBox2=driver.findElement(webdriver.By.id('num2')); + searchBox2.sendKeys('1'); + driver.findElement(webdriver.By.id('go_btn')).click(); + var searchBoxResult = driver.findElement(webdriver.By.id('ans')); + searchBoxResult.getAttribute('value').then(function(value){ + console.log(value); + assert.equal(value,'3'); + }).then(done()); + //driver.quit(); + }) + }) + + }) From b9e63a9bfe061e4b6a9ee139b52e6ea0dc64bdaf Mon Sep 17 00:00:00 2001 From: RichardYang Date: Fri, 30 Oct 2015 17:05:24 +0800 Subject: [PATCH 07/10] try --- test/test_calculator.js | 53 ++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/test/test_calculator.js b/test/test_calculator.js index 22e2369..855fbad 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -2,6 +2,7 @@ var assert = require('assert'); var cal = require('../calculator.js') var sinon=require('sinon') var webdriver = require('selenium-webdriver'); +var driver =undefined; describe('Calculator', function(){ describe('add', function(){ it('add', function(){ @@ -66,24 +67,42 @@ describe('Calculator', function(){ assert.equal(39,cal.mul(Math.random(),1)); }) }) - describe('selenium-webdriver',function(){ - it('selenium-test',function(done){ - var driver = new webdriver.Builder(). - forBrowser('chrome').build(); - driver.get("http://127.0.0.1:8000/") - var searchBox=driver.findElement(webdriver.By.id('num1')); - searchBox.sendKeys('1'); - var searchBox2=driver.findElement(webdriver.By.id('num2')); - searchBox2.sendKeys('1'); - driver.findElement(webdriver.By.id('go_btn')).click(); - var searchBoxResult = driver.findElement(webdriver.By.id('ans')); - searchBoxResult.getAttribute('value').then(function(value){ - console.log(value); - assert.equal(value,'3'); - }).then(done()); - //driver.quit(); - }) + /*describe('selenium-webdriver',function(){ + it('selenium-test',function(done){ + var driver = new webdriver.Builder(). + forBrowser('chrome').build(); + driver.get("http://127.0.0.1:8000/") + var searchBox=driver.findElement(webdriver.By.id('num1')); + searchBox.sendKeys('1'); + var searchBox2=driver.findElement(webdriver.By.id('num2')); + searchBox2.sendKeys('1'); + driver.findElement(webdriver.By.id('go_btn')).click(); + var searchBoxResult = driver.findElement(webdriver.By.id('ans')); + searchBoxResult.getAttribute('value').then(function(value){ + console.log(value); + assert.equal(value,'3'); + }); + //driver.quit(); }) + })*/ + describe('Google', function(){ + it('search by keyword', function(done){ + this.timeout(10000); + driver = new webdriver.Builder(). + withCapabilities(webdriver.Capabilities.firefox()).build(); + driver.get('http://www.google.com'); + driver.findElement(webdriver.By.name('q')).sendKeys('Firefox OS'); + driver.findElement(webdriver.By.name('btnK')).click(); + //driver.findElement(webdriver.By.name('btnI')).click(); // I'm Feeling Lucky + driver.wait(function() { + return driver.getTitle().then(function(title) { + return title === 'Firefox OS - Google 搜尋'; + }); + }, 3000).then(function() { + done() + }); + }) + }) }) From f393c2bf9dc2d942bb51debb739c71c7058b448a Mon Sep 17 00:00:00 2001 From: RichardYang Date: Fri, 30 Oct 2015 17:07:30 +0800 Subject: [PATCH 08/10] finished --- test/test_calculator.js | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/test/test_calculator.js b/test/test_calculator.js index 22e2369..6b7f47b 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -66,24 +66,5 @@ describe('Calculator', function(){ assert.equal(39,cal.mul(Math.random(),1)); }) }) - describe('selenium-webdriver',function(){ - it('selenium-test',function(done){ - var driver = new webdriver.Builder(). - forBrowser('chrome').build(); - driver.get("http://127.0.0.1:8000/") - var searchBox=driver.findElement(webdriver.By.id('num1')); - searchBox.sendKeys('1'); - var searchBox2=driver.findElement(webdriver.By.id('num2')); - searchBox2.sendKeys('1'); - driver.findElement(webdriver.By.id('go_btn')).click(); - var searchBoxResult = driver.findElement(webdriver.By.id('ans')); - searchBoxResult.getAttribute('value').then(function(value){ - console.log(value); - assert.equal(value,'3'); - }).then(done()); - //driver.quit(); - }) - }) - }) From 1049f2a182cf68c1e28a20b78c8e924403018994 Mon Sep 17 00:00:00 2001 From: RichardYang Date: Fri, 30 Oct 2015 17:27:55 +0800 Subject: [PATCH 09/10] add selenium --- .travis.yml | 1 + selenium_test.js | 17 ++++++++++++ test/test_calculator.js | 57 ++++++++++++++--------------------------- 3 files changed, 37 insertions(+), 38 deletions(-) create mode 100644 selenium_test.js diff --git a/.travis.yml b/.travis.yml index 76fd222..7bec32f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ node_js: before_install: - "npm install -g mocha" - "npm install chai" + - "npm install selenium-webdriver" notifications: email: false diff --git a/selenium_test.js b/selenium_test.js new file mode 100644 index 0000000..c00ec4c --- /dev/null +++ b/selenium_test.js @@ -0,0 +1,17 @@ +var webdriver = require('selenium-webdriver'); +var assert = require('assert'); + +var driver = new webdriver.Builder(). + forBrowser('chrome').build(); + driver.get("http://127.0.0.1:8000/") + var searchBox=driver.findElement(webdriver.By.id('num1')); + searchBox.sendKeys('1'); + var searchBox2=driver.findElement(webdriver.By.id('num2')); + searchBox2.sendKeys('1'); + driver.findElement(webdriver.By.id('go_btn')).click(); + var searchBoxResult = driver.findElement(webdriver.By.id('ans')); + searchBoxResult.getAttribute('value').then(function(value){ + console.log(value); + assert.equal(value,'22'); + }); + diff --git a/test/test_calculator.js b/test/test_calculator.js index 855fbad..6e09429 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -1,8 +1,8 @@ var assert = require('assert'); var cal = require('../calculator.js') var sinon=require('sinon') -var webdriver = require('selenium-webdriver'); -var driver =undefined; +//webdriver = require('selenium-webdriver'); +//var driver =undefined; describe('Calculator', function(){ describe('add', function(){ it('add', function(){ @@ -67,42 +67,23 @@ describe('Calculator', function(){ assert.equal(39,cal.mul(Math.random(),1)); }) }) - /*describe('selenium-webdriver',function(){ - it('selenium-test',function(done){ - var driver = new webdriver.Builder(). - forBrowser('chrome').build(); - driver.get("http://127.0.0.1:8000/") - var searchBox=driver.findElement(webdriver.By.id('num1')); - searchBox.sendKeys('1'); - var searchBox2=driver.findElement(webdriver.By.id('num2')); - searchBox2.sendKeys('1'); - driver.findElement(webdriver.By.id('go_btn')).click(); - var searchBoxResult = driver.findElement(webdriver.By.id('ans')); - searchBoxResult.getAttribute('value').then(function(value){ - console.log(value); - assert.equal(value,'3'); - }); - //driver.quit(); - }) + /* describe('selenium-webdriver',function(){ + it('selenium-test',function(done){ + var driver = new webdriver.Builder(). + forBrowser('chrome').build(); + driver.get("http://127.0.0.1:8000/") + var searchBox=driver.findElement(webdriver.By.id('num1')); + searchBox.sendKeys('1'); + var searchBox2=driver.findElement(webdriver.By.id('num2')); + searchBox2.sendKeys('1'); + driver.findElement(webdriver.By.id('go_btn')).click(); + var searchBoxResult = driver.findElement(webdriver.By.id('ans')); + searchBoxResult.getAttribute('value').then(function(value){ + console.log(value); + assert.equal(value,'3'); + }); + //driver.quit(); + }) })*/ - describe('Google', function(){ - it('search by keyword', function(done){ - this.timeout(10000); - driver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.firefox()).build(); - driver.get('http://www.google.com'); - driver.findElement(webdriver.By.name('q')).sendKeys('Firefox OS'); - driver.findElement(webdriver.By.name('btnK')).click(); - //driver.findElement(webdriver.By.name('btnI')).click(); // I'm Feeling Lucky - driver.wait(function() { - return driver.getTitle().then(function(title) { - return title === 'Firefox OS - Google 搜尋'; - }); - }, 3000).then(function() { - done() - }); - }) - }) - }) From 28443c0464c72d6c4e8ed846ef3e93ec5ae2f880 Mon Sep 17 00:00:00 2001 From: RichardYang Date: Fri, 30 Oct 2015 17:31:42 +0800 Subject: [PATCH 10/10] finish --- test/test_calculator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_calculator.js b/test/test_calculator.js index 6b7f47b..5dc0d23 100644 --- a/test/test_calculator.js +++ b/test/test_calculator.js @@ -1,7 +1,7 @@ var assert = require('assert'); var cal = require('../calculator.js') var sinon=require('sinon') -var webdriver = require('selenium-webdriver'); +//var webdriver = require('selenium-webdriver'); describe('Calculator', function(){ describe('add', function(){ it('add', function(){