From 0b425d64f4b5b97acc7a4d63768ea6aa4c6d4d9f Mon Sep 17 00:00:00 2001 From: Aaron Altounian Date: Sun, 20 Jan 2019 00:23:12 -0600 Subject: [PATCH] made package.json, wrote new tests --- 01week/datatypes.js | 0 01week/javascripting/introduction.js | 1 - 01week/rockPaperScissors.js | 2 + 02week/package-lock.json | 196 +++++++++++++++++++++++++++ 02week/package.json | 15 ++ 02week/pigLatin.js | 51 ------- 02week/rockPaperScissors.js | 114 ++++++++++++++++ 02week/test.js | 35 +++++ 02week/tests.js | 0 9 files changed, 362 insertions(+), 52 deletions(-) delete mode 100644 01week/datatypes.js delete mode 100644 01week/javascripting/introduction.js create mode 100644 02week/package-lock.json create mode 100644 02week/package.json delete mode 100644 02week/pigLatin.js create mode 100644 02week/rockPaperScissors.js create mode 100644 02week/test.js delete mode 100644 02week/tests.js diff --git a/01week/datatypes.js b/01week/datatypes.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/01week/javascripting/introduction.js b/01week/javascripting/introduction.js deleted file mode 100644 index e921523b1..000000000 --- a/01week/javascripting/introduction.js +++ /dev/null @@ -1 +0,0 @@ -console.log('hello'); diff --git a/01week/rockPaperScissors.js b/01week/rockPaperScissors.js index 16f58790a..e0606d7a6 100644 --- a/01week/rockPaperScissors.js +++ b/01week/rockPaperScissors.js @@ -49,3 +49,5 @@ if (typeof describe === 'function') { getPrompt(); } + +module.exports = rockPaperScissors diff --git a/02week/package-lock.json b/02week/package-lock.json new file mode 100644 index 000000000..f60bfc833 --- /dev/null +++ b/02week/package-lock.json @@ -0,0 +1,196 @@ +{ + "name": "testing", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/02week/package.json b/02week/package.json new file mode 100644 index 000000000..f9295c34c --- /dev/null +++ b/02week/package.json @@ -0,0 +1,15 @@ +{ + "name": "testing", + "version": "1.0.0", + "description": "class 4 tests", + "main": "tests.js", + "scripts": { + "test": "./node_modules/.bin/mocha" + }, + "author": "hashmilk", + "license": "ISC", + "dependencies": {}, + "devDependencies": { + "mocha": "^5.2.0" + } +} diff --git a/02week/pigLatin.js b/02week/pigLatin.js deleted file mode 100644 index 046434c94..000000000 --- a/02week/pigLatin.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -const assert = require('assert'); -const readline = require('readline'); -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout -}); - - -function pigLatin(word) { - - // Your code here - -} - - -function getPrompt() { - rl.question('word ', (answer) => { - console.log( pigLatin(answer) ); - getPrompt(); - }); -} - -// Tests - -if (typeof describe === 'function') { - - describe('#pigLatin()', () => { - it('should translate a simple word', () => { - assert.equal(pigLatin('car'), 'arcay'); - assert.equal(pigLatin('dog'), 'ogday'); - }); - it('should translate a complex word', () => { - assert.equal(pigLatin('create'), 'eatecray'); - assert.equal(pigLatin('valley'), 'alleyvay'); - }); - it('should attach "yay" if word begins with vowel', () => { - assert.equal(pigLatin('egg'), 'eggyay'); - assert.equal(pigLatin('emission'), 'emissionyay'); - }); - it('should lowercase and trim word before translation', () => { - assert.equal(pigLatin('HeLlO '), 'ellohay'); - assert.equal(pigLatin(' RoCkEt'), 'ocketray'); - }); - }); -} else { - - getPrompt(); - -} diff --git a/02week/rockPaperScissors.js b/02week/rockPaperScissors.js new file mode 100644 index 000000000..da68df038 --- /dev/null +++ b/02week/rockPaperScissors.js @@ -0,0 +1,114 @@ +'use strict'; + +const assert = require('assert'); +const readline = require('readline'); +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + + +function rockPaperScissors(a, b) { + + // define variables for win states: + const tie = "It's a tie!"; + const player1Wins = "Hand one wins!"; + const player2Wins = "Hand two wins!"; + // take the function's arguments (player choices) and make them lowercase so they still run even if a player capitalizes a letter: + let hand1 = a.toLowerCase().trim(); + let hand2 = b.toLowerCase().trim(); + // check if the choices are valid/create a boolean so it can be compared in the results stage: + function choiceChecker(hand1, hand2) { + switch(hand1){ + // if player 1 picks a valid turn then break and move on to checking player 2, or else return that it's a false move: + case 'rock': + case 'paper': + case 'scissors': + break; + default: + return false; + } + // check player 2's choice and if both player's choices are valid then return true, if player 2's choice is not valid then return false: + switch(hand2){ + case 'rock': + case 'paper': + case 'scissors': + return true; + default: + return false; + } + } + // define a boolean variable created from the validity checking function: + let isValid = choiceChecker(hand1, hand2); + // !!! Win States !!! + // if the choices aren't valid, say so: + if (!isValid) { + return 'Try again, choose either rock, paper, or scissors!'; + } + // if the choices are the same, the game results in a tie: + else if (hand1 === hand2) { + return tie; + } + // or else if player one picks rock, determine winner based off player 2's choice: + else if (hand1 === 'rock') { + if (hand2 === 'paper') { + return player2Wins; + } else { + return player1Wins; + } + } + // or else if player 1 picks paper, determine winner based off player 2's choice: + else if (hand1 === 'paper') { + if(hand2 === 'rock') { + return player1Wins; + } else { + return player2Wins; + } + } + // finally, if player 1 picks scissors, determine winner based off player 2's choice: + else if (hand1 === 'scissors') { + if (hand2 === 'rock') { + return player2Wins; + } else { + return player1Wins; + } + } +} + +function getPrompt() { + rl.question('hand1: ', (answer1) => { + rl.question('hand2: ', (answer2) => { + console.log( rockPaperScissors(answer1, answer2) ); + getPrompt(); + }); + }); +} +getPrompt(); +// Tests + +// if (typeof describe === 'function') { + +// describe('#rockPaperScissors()', () => { +// it('should detect a tie', () => { +// assert.equal(rockPaperScissors('rock', 'rock'), "It's a tie!"); +// assert.equal(rockPaperScissors('paper', 'paper'), "It's a tie!"); +// assert.equal(rockPaperScissors('scissors', 'scissors'), "It's a tie!"); +// }); +// it('should detect which hand won', () => { +// assert.equal(rockPaperScissors('rock', 'paper'), "Hand two wins!"); +// assert.equal(rockPaperScissors('paper', 'scissors'), "Hand two wins!"); +// assert.equal(rockPaperScissors('rock', 'scissors'), "Hand one wins!"); +// }); +// it('should scrub input to ensure lowercase with "trim"ed whitepace', () => { +// assert.equal(rockPaperScissors('rOcK', ' paper '), "Hand two wins!"); +// assert.equal(rockPaperScissors('Paper', 'SCISSORS'), "Hand two wins!"); +// assert.equal(rockPaperScissors('rock ', 'sCiSsOrs'), "Hand one wins!"); +// }); +// }); +// } else { + +// getPrompt(); + +// } + +module.exports = rockPaperScissors; diff --git a/02week/test.js b/02week/test.js new file mode 100644 index 000000000..93c52fcc7 --- /dev/null +++ b/02week/test.js @@ -0,0 +1,35 @@ +const rockPaperScissors = require('./rockPaperScissors'); +const assert = require('assert'); + +describe('#rockPaperScissors()', () => { + it('should detect a tie', () => { + assert.equal(rockPaperScissors('rock', 'rock'), "It's a tie!"); + assert.equal(rockPaperScissors('paper', 'paper'), "It's a tie!"); + assert.equal(rockPaperScissors('scissors', 'scissors'), "It's a tie!"); + }); + it('should detect which hand won', () => { + assert.equal(rockPaperScissors('rock', 'paper'), "Hand two wins!"); + assert.equal(rockPaperScissors('paper', 'scissors'), "Hand two wins!"); + assert.equal(rockPaperScissors('rock', 'scissors'), "Hand one wins!"); + }); + it('should scrub input to ensure lowercase with "trim"ed whitepace', () => { + assert.equal(rockPaperScissors('rOcK', ' paper '), "Hand two wins!"); + assert.equal(rockPaperScissors('Paper', 'SCISSORS'), "Hand two wins!"); + assert.equal(rockPaperScissors('rock ', 'sCiSsOrs'), "Hand one wins!"); + }); + it('should detect all scenarios in which hand one wins', () => { + assert.strictEqual(rockPaperScissors('rock', 'scissors'), 'Hand one wins!'); + assert.strictEqual(rockPaperScissors('paper', 'rock'), 'Hand one wins!'); + assert.strictEqual(rockPaperScissors('scissors', 'paper'), 'Hand one wins!'); + }); + it('should detect all scenarios in which hand two wins', () => { + assert.strictEqual(rockPaperScissors('rock', 'paper'), 'Hand two wins!'); + assert.strictEqual(rockPaperScissors('paper', 'scissors'), 'Hand two wins!'); + assert.strictEqual(rockPaperScissors('scissors', 'rock'), 'Hand two wins!'); + }); + it('should only accept valid inputs', () => { + assert.strictEqual(rockPaperScissors('wreck', 'paper'), 'Try again, choose either rock, paper, or scissors!'); + assert.strictEqual(rockPaperScissors('rock', 'proper'), 'Try again, choose either rock, paper, or scissors!'); + assert.strictEqual(rockPaperScissors('nothing', 'wrong'), 'Try again, choose either rock, paper, or scissors!'); + }); + }); \ No newline at end of file diff --git a/02week/tests.js b/02week/tests.js deleted file mode 100644 index e69de29bb..000000000