From 2ea15330f2b850d85d57f269a1378b4d61f7f9ba Mon Sep 17 00:00:00 2001 From: akbarsahata Date: Tue, 25 Apr 2017 11:01:59 +0700 Subject: [PATCH] Template --- .gitignore | 2 + README.md | 21 ++++- package.json | 13 +++ roman_numerals.js | 32 +++++++ roman_numerals.test.js | 52 ++++++++++++ yarn.lock | 187 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 306 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 package.json create mode 100644 roman_numerals.js create mode 100644 roman_numerals.test.js create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9daa824 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +node_modules diff --git a/README.md b/README.md index c4e6ed5..2c62695 100644 --- a/README.md +++ b/README.md @@ -1 +1,20 @@ -# roman-numerals \ No newline at end of file +# Roman Numerals + +Run code: + +```sh +node roman_numerals.js +``` + +OR + +```sh +npm start +``` + +Test code: +```sh +npm test +``` + +Make sure to run `npm install` before run the test. diff --git a/package.json b/package.json new file mode 100644 index 0000000..093374f --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "roman_numerals", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "scripts": { + "start": "node roman_numerals.js", + "test": "mocha roman_numerals.test.js" + }, + "devDependencies": { + "mocha": "^3.2.0" + } +} diff --git a/roman_numerals.js b/roman_numerals.js new file mode 100644 index 0000000..6c4cc80 --- /dev/null +++ b/roman_numerals.js @@ -0,0 +1,32 @@ +function to_roman_old (num) { + // your implementation code here +} + +function to_roman (num) { + // your implementation code here +} + +// Drive code +console.log('My totally sweet testing script\n') +console.log('input | expected | actual') +console.log('———|—————|———') +console.log('4 | IIII | ', to_roman_old(4)) +console.log('9 | VIIII | ', to_roman_old(9)) +console.log('13 | XIII | ', to_roman_old(13)) +console.log('55 | LV | ', to_roman_old(55)) +console.log('1453 | MCDLIII | ', to_roman_old(1453)) +console.log('1646 | MDCXLVI | ', to_roman_old(1646)) + +console.log('My totally sweet testing script for new roman\n') +console.log('input | expected | actual') +console.log('———|—————|———') +console.log('4 | IV | ', to_roman(4)) +console.log('9 | IX | ', to_roman(9)) +console.log('13 | XIII | ', to_roman(13)) +console.log('1453 | MCDLIII | ', to_roman(1453)) +console.log('1646 | MDCXLVI | ', to_roman(1646)) + +module.exports = { + to_roman_old, + to_roman +} diff --git a/roman_numerals.test.js b/roman_numerals.test.js new file mode 100644 index 0000000..e23859d --- /dev/null +++ b/roman_numerals.test.js @@ -0,0 +1,52 @@ +const assert = require('assert') + +const romans = require('./roman_numerals.js') + +describe('Convert To Roman Old Version', () => { + it('should returns I if input is 1', () => { + assert.equal(romans.to_roman_old(1), 'I') + }) + it('should returns IIII if input is 4', () => { + assert.equal(romans.to_roman_old(4), 'IIII') + }) + it('should returns V if input is 5', () => { + assert.equal(romans.to_roman_old(5), 'V') + }) + it('should returns VIIII if input is 9', () => { + assert.equal(romans.to_roman_old(9), 'VIIII') + }) + it('should returns XIII if input is 13', () => { + assert.equal(romans.to_roman_old(13), 'XIII') + }) + it('should returns LIIII if input is 54', () => { + assert.equal(romans.to_roman_old(54), 'LIIII') + }) + it('should returns LV if input is 55', () => { + assert.equal(romans.to_roman_old(55), 'LV') + }) + it('should returns MCDLIII if input is 1453', () => { + assert.equal(romans.to_roman_old(1453), 'MCDLIII') + }) + it('should returns MDCXLVI if input is 1646', () => { + assert.equal(romans.to_roman_old(1646), 'MDCXLVI') + }) +}) + + +describe('Roman Numerals new', () => { + it('4 becomes IV', () => { + assert.equal(romans.to_roman(4), 'IV') + }) + it('9 becomes IX', () => { + assert.equal(romans.to_roman(9), 'IX') + }) + it('13 becomes XIII', () => { + assert.equal(romans.to_roman(13), 'XIII') + }) + it('1453 becomes MCDLIII', () => { + assert.equal(romans.to_roman(1453), 'MCDLIII') + }) + it('1646 becomes MDCXLVI', () => { + assert.equal(romans.to_roman(1646), 'MDCXLVI') + }) +}) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..24b6c3c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,187 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +debug@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +diff@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + +escape-string-regexp@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +glob@7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +minimatch@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.2.0.tgz#7dc4f45e5088075171a68896814e6ae9eb7a85e3" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.2.0" + diff "1.4.0" + escape-string-regexp "1.0.5" + glob "7.0.5" + growl "1.9.2" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"