From 35472e3395c203ad5ddc0a3d01935533a71acd2a Mon Sep 17 00:00:00 2001 From: Nathan Harrenstein Date: Wed, 19 Jul 2017 12:27:26 -0700 Subject: [PATCH 1/4] Setup project. --- lab-nathan/.eslintignore | 6 ++ lab-nathan/.eslintrc | 23 ++++++ lab-nathan/.gitignore | 136 ++++++++++++++++++++++++++++++++++++ lab-nathan/assets/one.txt | 9 +++ lab-nathan/assets/three.txt | 1 + lab-nathan/assets/two.txt | 5 ++ lab-nathan/index.js | 5 ++ lab-nathan/lib/fp.js | 0 lab-nathan/package.json | 19 +++++ lab-nathan/test/fp-test.js | 1 + 10 files changed, 205 insertions(+) create mode 100644 lab-nathan/.eslintignore create mode 100644 lab-nathan/.eslintrc create mode 100644 lab-nathan/.gitignore create mode 100644 lab-nathan/assets/one.txt create mode 100644 lab-nathan/assets/three.txt create mode 100644 lab-nathan/assets/two.txt create mode 100644 lab-nathan/index.js create mode 100644 lab-nathan/lib/fp.js create mode 100644 lab-nathan/package.json create mode 100644 lab-nathan/test/fp-test.js diff --git a/lab-nathan/.eslintignore b/lab-nathan/.eslintignore new file mode 100644 index 0000000..c6abca4 --- /dev/null +++ b/lab-nathan/.eslintignore @@ -0,0 +1,6 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* +**/assets/* diff --git a/lab-nathan/.eslintrc b/lab-nathan/.eslintrc new file mode 100644 index 0000000..c8dfef7 --- /dev/null +++ b/lab-nathan/.eslintrc @@ -0,0 +1,23 @@ +{ + "rules": { + "no-console": "off", + "indent": [ "error", 2 ], + "quotes": [ "error", "single" ], + "semi": ["error", "always"], + "linebreak-style": [ "error", "unix" ] + }, + "env": { + "es6": true, + "node": true, + "mocha": true, + "jasmine": true + }, + "parserOptions": { + "ecmaFeatures": { + "modules": true, + "experimentalObjectRestSpread": true, + "impliedStrict": true + } + }, + "extends": "eslint:recommended" +} diff --git a/lab-nathan/.gitignore b/lab-nathan/.gitignore new file mode 100644 index 0000000..345130c --- /dev/null +++ b/lab-nathan/.gitignore @@ -0,0 +1,136 @@ +# Created by https://www.gitignore.io/api/osx,vim,node,macos,windows + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### OSX ### + +# Icon must end with two \r + +# Thumbnails + +# Files that might appear in the root of a volume + +# Directories potentially created on remote AFP share + +### Vim ### +# swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-v][a-z] +[._]sw[a-p] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/osx,vim,node,macos,windows diff --git a/lab-nathan/assets/one.txt b/lab-nathan/assets/one.txt new file mode 100644 index 0000000..942945f --- /dev/null +++ b/lab-nathan/assets/one.txt @@ -0,0 +1,9 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque viverra vitae tellus eget tempus. Fusce tincidunt eros orci, id efficitur ante accumsan vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis varius pulvinar libero, sit amet ultrices diam maximus at. Suspendisse lobortis rhoncus purus, ac efficitur est laoreet a. Aliquam in orci at ex hendrerit porttitor. Praesent aliquet semper dolor, in fermentum justo posuere sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas urna turpis, porttitor id magna eget, luctus volutpat sapien. Proin ultrices lectus id posuere maximus. Nullam sapien risus, euismod ut sollicitudin ut, commodo non magna. Mauris fermentum mi nec blandit semper. Donec id tincidunt tortor. Pellentesque a leo cursus ipsum tempor aliquam. + +In malesuada, orci at rhoncus consectetur, nibh leo scelerisque libero, non eleifend nulla libero ac justo. Ut placerat, arcu aliquam interdum efficitur, neque odio lacinia lacus, et varius lorem elit non eros. Proin dictum condimentum metus, eget accumsan nulla fermentum vitae. Fusce faucibus diam eu metus condimentum aliquet. Maecenas eros purus, tincidunt eu nisl ullamcorper, congue pharetra enim. Sed lorem leo, vehicula non orci id, convallis gravida magna. Nunc in ligula id velit pellentesque hendrerit. Sed lacinia risus a est volutpat auctor. Praesent venenatis metus sapien, ut iaculis ligula condimentum quis. + +Fusce tincidunt nibh sit amet pharetra finibus. Praesent nec elit sem. Curabitur quis laoreet diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean sodales ornare est quis euismod. Integer vitae tristique augue, eu porta lorem. Nullam varius mauris in accumsan mollis. Nam nec justo tellus. Nulla eleifend augue ac est efficitur, eu laoreet lorem pulvinar. Morbi massa tortor, rutrum vel lacinia in, feugiat ac est. Vestibulum non sem vehicula, pretium risus sit amet, suscipit arcu. Nulla vitae felis ut metus tincidunt molestie. + +Mauris egestas tincidunt nulla. Quisque convallis, quam a convallis consectetur, tortor lectus malesuada dui, scelerisque sodales lectus urna vitae dui. Nulla feugiat posuere tempor. Fusce ut felis libero. Quisque ac arcu lacinia, finibus magna id, faucibus elit. Mauris gravida tellus in erat tempor rhoncus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas tristique ex sit amet augue feugiat aliquet. Aenean eget diam eget leo vehicula convallis eu sed urna. Vestibulum ut urna tincidunt, suscipit magna at, accumsan mauris. + +Pellentesque vel fermentum lacus. Quisque maximus tincidunt convallis. Quisque a nunc id risus volutpat pretium. Quisque vel mauris semper, semper lacus ac, finibus enim. Morbi arcu justo, gravida non dolor et, pretium efficitur sem. In bibendum nec tellus eu sollicitudin. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas malesuada molestie felis, id dictum sem eleifend cursus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi lacus nibh, volutpat ac mauris pellentesque, malesuada accumsan leo. Maecenas ut nunc ut lorem bibendum cursus. \ No newline at end of file diff --git a/lab-nathan/assets/three.txt b/lab-nathan/assets/three.txt new file mode 100644 index 0000000..1dbb3f1 --- /dev/null +++ b/lab-nathan/assets/three.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque viverra vitae tellus eget tempus. Fusce tincidunt eros orci, id efficitur ante accumsan vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis varius pulvinar libero, sit amet ultrices diam maximus at. Suspendisse lobortis rhoncus purus, ac efficitur est laoreet a. Aliquam in orci at ex hendrerit porttitor. Praesent aliquet semper dolor, in fermentum justo posuere sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas urna turpis, porttitor id magna eget, luctus volutpat sapien. Proin ultrices lectus id posuere maximus. Nullam sapien risus, euismod ut sollicitudin ut, commodo non magna. Mauris fermentum mi nec blandit semper. Donec id tincidunt tortor. Pellentesque a leo cursus ipsum tempor aliquam. \ No newline at end of file diff --git a/lab-nathan/assets/two.txt b/lab-nathan/assets/two.txt new file mode 100644 index 0000000..93cdc2a --- /dev/null +++ b/lab-nathan/assets/two.txt @@ -0,0 +1,5 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque viverra vitae tellus eget tempus. Fusce tincidunt eros orci, id efficitur ante accumsan vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis varius pulvinar libero, sit amet ultrices diam maximus at. Suspendisse lobortis rhoncus purus, ac efficitur est laoreet a. Aliquam in orci at ex hendrerit porttitor. Praesent aliquet semper dolor, in fermentum justo posuere sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas urna turpis, porttitor id magna eget, luctus volutpat sapien. Proin ultrices lectus id posuere maximus. Nullam sapien risus, euismod ut sollicitudin ut, commodo non magna. Mauris fermentum mi nec blandit semper. Donec id tincidunt tortor. Pellentesque a leo cursus ipsum tempor aliquam. + +In malesuada, orci at rhoncus consectetur, nibh leo scelerisque libero, non eleifend nulla libero ac justo. Ut placerat, arcu aliquam interdum efficitur, neque odio lacinia lacus, et varius lorem elit non eros. Proin dictum condimentum metus, eget accumsan nulla fermentum vitae. Fusce faucibus diam eu metus condimentum aliquet. Maecenas eros purus, tincidunt eu nisl ullamcorper, congue pharetra enim. Sed lorem leo, vehicula non orci id, convallis gravida magna. Nunc in ligula id velit pellentesque hendrerit. Sed lacinia risus a est volutpat auctor. Praesent venenatis metus sapien, ut iaculis ligula condimentum quis. + +Fusce tincidunt nibh sit amet pharetra finibus. Praesent nec elit sem. Curabitur quis laoreet diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean sodales ornare est quis euismod. Integer vitae tristique augue, eu porta lorem. Nullam varius mauris in accumsan mollis. Nam nec justo tellus. Nulla eleifend augue ac est efficitur, eu laoreet lorem pulvinar. Morbi massa tortor, rutrum vel lacinia in, feugiat ac est. Vestibulum non sem vehicula, pretium risus sit amet, suscipit arcu. Nulla vitae felis ut metus tincidunt molestie. \ No newline at end of file diff --git a/lab-nathan/index.js b/lab-nathan/index.js new file mode 100644 index 0000000..5fced61 --- /dev/null +++ b/lab-nathan/index.js @@ -0,0 +1,5 @@ +'use strict'; + +const fp = require('./lib/fp.js'); + +fp.map(process.argv.slice(2), a => console.log(a.toUpperCase())); \ No newline at end of file diff --git a/lab-nathan/lib/fp.js b/lab-nathan/lib/fp.js new file mode 100644 index 0000000..e69de29 diff --git a/lab-nathan/package.json b/lab-nathan/package.json new file mode 100644 index 0000000..bf055d1 --- /dev/null +++ b/lab-nathan/package.json @@ -0,0 +1,19 @@ +{ + "name": "lab-nathan", + "version": "1.0.0", + "description": "", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "chai": "^4.1.0", + "mocha": "^3.4.2" + } +} diff --git a/lab-nathan/test/fp-test.js b/lab-nathan/test/fp-test.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lab-nathan/test/fp-test.js @@ -0,0 +1 @@ + From 0a25965640e4c65d8e7940b0accf99fd49c06c05 Mon Sep 17 00:00:00 2001 From: Nathan Harrenstein Date: Wed, 19 Jul 2017 12:56:40 -0700 Subject: [PATCH 2/4] Adds test for valid input paths. --- lab-nathan/test/fp-test.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lab-nathan/test/fp-test.js b/lab-nathan/test/fp-test.js index 8b13789..0383e85 100644 --- a/lab-nathan/test/fp-test.js +++ b/lab-nathan/test/fp-test.js @@ -1 +1,29 @@ +'use strict'; + +const getBytes = require('../lib/fp.js'); +const expect = require('chai').expect; + +describe('fp', function() { + it('should have a valid input path', function(done) { + getBytes(`${__dirname}/../assets/fake.txt`, 8, function(err) { + expect(err).to.be.an('error').with.property('code', 'ENOENT'); + done(); + }); + }); + + it('should return the first 8 bytes of each asset in order', function(done) { + let result = ''; + getBytes(`${__dirname}/../assets/one.txt`, 8, function(err, data) { + result += data; + getBytes(`${__dirname}/../assets/two.txt`, 8, function(err, data) { + result += data; + getBytes(`${__dirname}/../assets/three.txt`, 8, function(err, data) { + result += data; + expect(result).to.equal('4c6f72656d206970496e206d616c65734c6f72656d206970'); + done(); + }); + }); + }); + }); +}); From 2ac873cf4b5d387c7f5c0943e979780a5522151e Mon Sep 17 00:00:00 2001 From: Nathan Harrenstein Date: Wed, 19 Jul 2017 15:11:43 -0700 Subject: [PATCH 3/4] Adds get bytes. --- lab-nathan/README.md | 5 +++++ lab-nathan/assets/three.txt | 2 +- lab-nathan/assets/two.txt | 2 -- lab-nathan/index.js | 8 ++++++-- lab-nathan/lib/fp.js | 0 lab-nathan/lib/get-bytes.js | 19 +++++++++++++++++++ lab-nathan/package.json | 4 +++- lab-nathan/test/fp-test.js | 29 ----------------------------- lab-nathan/test/get-bytes-test.js | 22 ++++++++++++++++++++++ 9 files changed, 56 insertions(+), 35 deletions(-) create mode 100644 lab-nathan/README.md delete mode 100644 lab-nathan/lib/fp.js create mode 100644 lab-nathan/lib/get-bytes.js delete mode 100644 lab-nathan/test/fp-test.js create mode 100644 lab-nathan/test/get-bytes-test.js diff --git a/lab-nathan/README.md b/lab-nathan/README.md new file mode 100644 index 0000000..392bdc9 --- /dev/null +++ b/lab-nathan/README.md @@ -0,0 +1,5 @@ +# get-bytes + +get-bytes is a node module which returns the specified number of bytes from the beginning of each input file. + +`done` is a function provided by the mocha testing framework, which is passed as a parameter of the `it` function's callback. It is invoked after asynchronous processing is complete and the result of the test has been computed. \ No newline at end of file diff --git a/lab-nathan/assets/three.txt b/lab-nathan/assets/three.txt index 1dbb3f1..128b93a 100644 --- a/lab-nathan/assets/three.txt +++ b/lab-nathan/assets/three.txt @@ -1 +1 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque viverra vitae tellus eget tempus. Fusce tincidunt eros orci, id efficitur ante accumsan vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis varius pulvinar libero, sit amet ultrices diam maximus at. Suspendisse lobortis rhoncus purus, ac efficitur est laoreet a. Aliquam in orci at ex hendrerit porttitor. Praesent aliquet semper dolor, in fermentum justo posuere sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas urna turpis, porttitor id magna eget, luctus volutpat sapien. Proin ultrices lectus id posuere maximus. Nullam sapien risus, euismod ut sollicitudin ut, commodo non magna. Mauris fermentum mi nec blandit semper. Donec id tincidunt tortor. Pellentesque a leo cursus ipsum tempor aliquam. \ No newline at end of file +Quisque viverra vitae tellus eget tempus. Fusce tincidunt eros orci, id efficitur ante accumsan vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis varius pulvinar libero, sit amet ultrices diam maximus at. Suspendisse lobortis rhoncus purus, ac efficitur est laoreet a. Aliquam in orci at ex hendrerit porttitor. Praesent aliquet semper dolor, in fermentum justo posuere sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas urna turpis, porttitor id magna eget, luctus volutpat sapien. Proin ultrices lectus id posuere maximus. Nullam sapien risus, euismod ut sollicitudin ut, commodo non magna. Mauris fermentum mi nec blandit semper. Donec id tincidunt tortor. Pellentesque a leo cursus ipsum tempor aliquam. \ No newline at end of file diff --git a/lab-nathan/assets/two.txt b/lab-nathan/assets/two.txt index 93cdc2a..a30f3f3 100644 --- a/lab-nathan/assets/two.txt +++ b/lab-nathan/assets/two.txt @@ -1,5 +1,3 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque viverra vitae tellus eget tempus. Fusce tincidunt eros orci, id efficitur ante accumsan vel. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis varius pulvinar libero, sit amet ultrices diam maximus at. Suspendisse lobortis rhoncus purus, ac efficitur est laoreet a. Aliquam in orci at ex hendrerit porttitor. Praesent aliquet semper dolor, in fermentum justo posuere sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas urna turpis, porttitor id magna eget, luctus volutpat sapien. Proin ultrices lectus id posuere maximus. Nullam sapien risus, euismod ut sollicitudin ut, commodo non magna. Mauris fermentum mi nec blandit semper. Donec id tincidunt tortor. Pellentesque a leo cursus ipsum tempor aliquam. - In malesuada, orci at rhoncus consectetur, nibh leo scelerisque libero, non eleifend nulla libero ac justo. Ut placerat, arcu aliquam interdum efficitur, neque odio lacinia lacus, et varius lorem elit non eros. Proin dictum condimentum metus, eget accumsan nulla fermentum vitae. Fusce faucibus diam eu metus condimentum aliquet. Maecenas eros purus, tincidunt eu nisl ullamcorper, congue pharetra enim. Sed lorem leo, vehicula non orci id, convallis gravida magna. Nunc in ligula id velit pellentesque hendrerit. Sed lacinia risus a est volutpat auctor. Praesent venenatis metus sapien, ut iaculis ligula condimentum quis. Fusce tincidunt nibh sit amet pharetra finibus. Praesent nec elit sem. Curabitur quis laoreet diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean sodales ornare est quis euismod. Integer vitae tristique augue, eu porta lorem. Nullam varius mauris in accumsan mollis. Nam nec justo tellus. Nulla eleifend augue ac est efficitur, eu laoreet lorem pulvinar. Morbi massa tortor, rutrum vel lacinia in, feugiat ac est. Vestibulum non sem vehicula, pretium risus sit amet, suscipit arcu. Nulla vitae felis ut metus tincidunt molestie. \ No newline at end of file diff --git a/lab-nathan/index.js b/lab-nathan/index.js index 5fced61..46bf12d 100644 --- a/lab-nathan/index.js +++ b/lab-nathan/index.js @@ -1,5 +1,9 @@ 'use strict'; -const fp = require('./lib/fp.js'); +const getBytes = require('./lib/get-bytes.js'); -fp.map(process.argv.slice(2), a => console.log(a.toUpperCase())); \ No newline at end of file +let files = [`${__dirname}/assets/one.txt`, `${__dirname}/assets/two.txt`, `${__dirname}/assets/three.txt`]; + +getBytes(files, 8, function(err, data) { + data.forEach(d => console.log(d)); +}); \ No newline at end of file diff --git a/lab-nathan/lib/fp.js b/lab-nathan/lib/fp.js deleted file mode 100644 index e69de29..0000000 diff --git a/lab-nathan/lib/get-bytes.js b/lab-nathan/lib/get-bytes.js new file mode 100644 index 0000000..f78fd4b --- /dev/null +++ b/lab-nathan/lib/get-bytes.js @@ -0,0 +1,19 @@ +'use strict'; + +const fs = require('fs'); + +let getBytes = function(filePaths, byteCount, callback, buffer = []) { + if (filePaths.length === 0) return callback(null, buffer); + + let filePath = filePaths.shift(); + + fs.readFile(filePath, function(err, data) { + if (err) callback(err); + + buffer.push(data.toString('hex', 0, byteCount - 1)); + + getBytes(filePaths, byteCount, callback, buffer); + }); +}; + +module.exports = getBytes; \ No newline at end of file diff --git a/lab-nathan/package.json b/lab-nathan/package.json index bf055d1..d5aa0c2 100644 --- a/lab-nathan/package.json +++ b/lab-nathan/package.json @@ -7,7 +7,9 @@ "test": "test" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node index.js", + "test": "mocha", + "lint": "eslint ." }, "keywords": [], "author": "", diff --git a/lab-nathan/test/fp-test.js b/lab-nathan/test/fp-test.js deleted file mode 100644 index 0383e85..0000000 --- a/lab-nathan/test/fp-test.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -const getBytes = require('../lib/fp.js'); -const expect = require('chai').expect; - -describe('fp', function() { - it('should have a valid input path', function(done) { - getBytes(`${__dirname}/../assets/fake.txt`, 8, function(err) { - expect(err).to.be.an('error').with.property('code', 'ENOENT'); - done(); - }); - }); - - it('should return the first 8 bytes of each asset in order', function(done) { - let result = ''; - getBytes(`${__dirname}/../assets/one.txt`, 8, function(err, data) { - result += data; - getBytes(`${__dirname}/../assets/two.txt`, 8, function(err, data) { - result += data; - getBytes(`${__dirname}/../assets/three.txt`, 8, function(err, data) { - result += data; - expect(result).to.equal('4c6f72656d206970496e206d616c65734c6f72656d206970'); - done(); - }); - }); - }); - }); -}); - diff --git a/lab-nathan/test/get-bytes-test.js b/lab-nathan/test/get-bytes-test.js new file mode 100644 index 0000000..daaa34b --- /dev/null +++ b/lab-nathan/test/get-bytes-test.js @@ -0,0 +1,22 @@ +'use strict'; + +const getBytes = require('../lib/get-bytes.js'); +const expect = require('chai').expect; + +describe('get-bytes', function() { + it('should have a valid input path', function(done) { + getBytes([`${__dirname}/../assets/fake.txt`], 8, function(err) { + expect(err).to.be.an('error').with.property('code', 'ENOENT'); + done(); + }); + }); + + it('should return the first 8 bytes of each asset in order', function(done) { + let files = [`${__dirname}/../assets/one.txt`, `${__dirname}/../assets/two.txt`, `${__dirname}/../assets/three.txt`]; + getBytes(files, 8, function(err, data) { + expect(data).to.deep.equal(['4c6f72656d2069', '496e206d616c65', '51756973717565']); + done(); + }); + }); +}); + From 8977108c3efa5a7f310f3d1456bb8d551670f905 Mon Sep 17 00:00:00 2001 From: Nathan Harrenstein Date: Wed, 19 Jul 2017 21:03:08 -0700 Subject: [PATCH 4/4] Added missing byte. --- lab-nathan/lib/get-bytes.js | 2 +- lab-nathan/test/get-bytes-test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lab-nathan/lib/get-bytes.js b/lab-nathan/lib/get-bytes.js index f78fd4b..2e3096c 100644 --- a/lab-nathan/lib/get-bytes.js +++ b/lab-nathan/lib/get-bytes.js @@ -10,7 +10,7 @@ let getBytes = function(filePaths, byteCount, callback, buffer = []) { fs.readFile(filePath, function(err, data) { if (err) callback(err); - buffer.push(data.toString('hex', 0, byteCount - 1)); + buffer.push(data.toString('hex', 0, byteCount)); getBytes(filePaths, byteCount, callback, buffer); }); diff --git a/lab-nathan/test/get-bytes-test.js b/lab-nathan/test/get-bytes-test.js index daaa34b..2c8be61 100644 --- a/lab-nathan/test/get-bytes-test.js +++ b/lab-nathan/test/get-bytes-test.js @@ -14,7 +14,7 @@ describe('get-bytes', function() { it('should return the first 8 bytes of each asset in order', function(done) { let files = [`${__dirname}/../assets/one.txt`, `${__dirname}/../assets/two.txt`, `${__dirname}/../assets/three.txt`]; getBytes(files, 8, function(err, data) { - expect(data).to.deep.equal(['4c6f72656d2069', '496e206d616c65', '51756973717565']); + expect(data).to.deep.equal(['4c6f72656d206970', '496e206d616c6573', '5175697371756520']); done(); }); });