From b42f08b8b0188b64f83c9f2d13eeee3fe5836704 Mon Sep 17 00:00:00 2001 From: Nikko Pisciotti Date: Wed, 15 Feb 2017 13:50:55 -0800 Subject: [PATCH 1/4] created basic files and installed necessary dependencies --- .gitignore | 126 +++++++++++++++++++++++++++++++++++++++++++++ data/one.txt | 0 data/three.txt | 0 data/two.txt | 0 index.js | 1 + lib/file-reader.js | 0 package.json | 27 ++++++++++ 7 files changed, 154 insertions(+) create mode 100644 .gitignore create mode 100644 data/one.txt create mode 100644 data/three.txt create mode 100644 data/two.txt create mode 100644 index.js create mode 100644 lib/file-reader.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..752d50e --- /dev/null +++ b/.gitignore @@ -0,0 +1,126 @@ +# Created by https://www.gitignore.io/api/node,osx,windows,linux + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### 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 ### +*.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 + +### 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 diff --git a/data/one.txt b/data/one.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/three.txt b/data/three.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/two.txt b/data/two.txt new file mode 100644 index 0000000..e69de29 diff --git a/index.js b/index.js new file mode 100644 index 0000000..b76db98 --- /dev/null +++ b/index.js @@ -0,0 +1 @@ +'use-strict'; diff --git a/lib/file-reader.js b/lib/file-reader.js new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..9fb24b5 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "03-parallel_file_processing", + "version": "1.0.0", + "description": "![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) Lab 03: Parallel File Processing ===", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/npisciotti1/03-parallel_file_processing.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/npisciotti1/03-parallel_file_processing/issues" + }, + "homepage": "https://github.com/npisciotti1/03-parallel_file_processing#readme", + "devDependencies": { + "chai": "^3.5.0", + "mocha-test": "^2.0.3" + } +} From f83d5e7a55e09caaf713b9fccb5221a52570fc8a Mon Sep 17 00:00:00 2001 From: Nikko Pisciotti Date: Wed, 15 Feb 2017 15:07:06 -0800 Subject: [PATCH 2/4] got all files to read, they are outputting in order, however not sure if that's because of proper asynch management. --- data/one.txt | 1 + data/three.txt | 1 + data/two.txt | 1 + index.js | 17 +++++++++++++++++ lib/file-reader.js | 13 +++++++++++++ test/file-reader-test.js | 0 6 files changed, 33 insertions(+) create mode 100644 test/file-reader-test.js diff --git a/data/one.txt b/data/one.txt index e69de29..c94d1dd 100644 --- a/data/one.txt +++ b/data/one.txt @@ -0,0 +1 @@ +This is a great thing to talk about because I have nothing else to say diff --git a/data/three.txt b/data/three.txt index e69de29..aa9363c 100644 --- a/data/three.txt +++ b/data/three.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. diff --git a/data/two.txt b/data/two.txt index e69de29..e39e0fd 100644 --- a/data/two.txt +++ b/data/two.txt @@ -0,0 +1 @@ +lah dee friggen dah, har dee harr harr. Boop da woop diff --git a/index.js b/index.js index b76db98..6e34062 100644 --- a/index.js +++ b/index.js @@ -1 +1,18 @@ 'use-strict'; + +const fileReader = require('./lib/file-reader.js'); + +fileReader(`${__dirname}/data/one.txt`, function(err, data) { + if(err) throw err; + console.log('This is one.txt: ', data); + + fileReader(`${__dirname}/data/two.txt`, function(err, data) { + if(err) throw err; + console.log('This is two.txt: ', data); + + fileReader(`${__dirname}/data/three.txt`, function(err, data) { + if(err) throw err; + console.log('This is three.txt: ', data); + }); + }); +}); diff --git a/lib/file-reader.js b/lib/file-reader.js index e69de29..e304064 100644 --- a/lib/file-reader.js +++ b/lib/file-reader.js @@ -0,0 +1,13 @@ +'use-strict'; + +const fs = require('fs'); + +const fileReader = module.exports = function(file, callback) { + fs.readFile(file, function(err, data) { + if(err) return callback(err); + var buffer = new Buffer(data); + var hexData = buffer.toString('hex', 0, 8); + + return callback(null, hexData); + }); +}; diff --git a/test/file-reader-test.js b/test/file-reader-test.js new file mode 100644 index 0000000..e69de29 From 5e22c7f086cb6da7a61e7207bacf668e8b453cde Mon Sep 17 00:00:00 2001 From: Nikko Pisciotti Date: Wed, 15 Feb 2017 16:33:27 -0800 Subject: [PATCH 3/4] wrote meaningful (ideally) tests, they are passing and results are printing in order --- index.js | 15 +-------------- lib/file-reader.js | 21 ++++++++++++++++++++- test/file-reader-test.js | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 15 deletions(-) diff --git a/index.js b/index.js index 6e34062..50e5d8f 100644 --- a/index.js +++ b/index.js @@ -2,17 +2,4 @@ const fileReader = require('./lib/file-reader.js'); -fileReader(`${__dirname}/data/one.txt`, function(err, data) { - if(err) throw err; - console.log('This is one.txt: ', data); - - fileReader(`${__dirname}/data/two.txt`, function(err, data) { - if(err) throw err; - console.log('This is two.txt: ', data); - - fileReader(`${__dirname}/data/three.txt`, function(err, data) { - if(err) throw err; - console.log('This is three.txt: ', data); - }); - }); -}); +fileReader.readAllFiles(); diff --git a/lib/file-reader.js b/lib/file-reader.js index e304064..09d972b 100644 --- a/lib/file-reader.js +++ b/lib/file-reader.js @@ -2,7 +2,9 @@ const fs = require('fs'); -const fileReader = module.exports = function(file, callback) { +module.exports = exports = {}; + +exports.readSingleFile = function(file, callback) { fs.readFile(file, function(err, data) { if(err) return callback(err); var buffer = new Buffer(data); @@ -11,3 +13,20 @@ const fileReader = module.exports = function(file, callback) { return callback(null, hexData); }); }; + +exports.readAllFiles = function() { + exports.readSingleFile(`${__dirname}/../data/one.txt`, function(err, data) { + if(err) throw err; + console.log('This is one.txt: ', data); + + exports.readSingleFile(`${__dirname}/../data/two.txt`, function(err, data) { + if(err) throw err; + console.log('This is two.txt: ', data); + + exports.readSingleFile(`${__dirname}/../data/three.txt`, function(err, data) { + if(err) throw err; + console.log('This is three.txt: ', data); + }); + }); + }); +}; diff --git a/test/file-reader-test.js b/test/file-reader-test.js index e69de29..a399eb2 100644 --- a/test/file-reader-test.js +++ b/test/file-reader-test.js @@ -0,0 +1,38 @@ +'use-strict'; + +const expect = require('chai').expect; +const fileReader = require('../lib/file-reader.js'); + +describe('File Reader', function() { + describe('Hex values should display in order.', function() { + it('first output should be: 5468697320697320', function(done) { + fileReader.readSingleFile(`${__dirname}/../data/one.txt`, function(err, data) { + expect(err).to.equal(null); + expect(data).to.equal('5468697320697320'); + done(); + }); + }); + it('second output should be: 6c61682064656520', function(done) { + fileReader.readSingleFile(`${__dirname}/../data/two.txt`, function(err, data) { + expect(err).to.equal(null); + expect(data).to.equal('6c61682064656520'); + done(); + }); + }); + it('third output should be: 4c6f72656d206970', function(done) { + fileReader.readSingleFile(`${__dirname}/../data/three.txt`, function(err, data) { + expect(err).to.equal(null); + expect(data).to.equal('4c6f72656d206970'); + done(); + }); + }); + }); + describe('An incorrect file-path should fail', function() { + it('should throw an error', function(done) { + fileReader.readSingleFile(`${__dirname}/../data/bullshit.txt`, function(err, data) { + expect(err).to.be.an('error'); + done(); + }); + }); + }); +}); From 9dca695c9a2a8b19b01e21442e403fe87608645f Mon Sep 17 00:00:00 2001 From: Nikko Pisciotti Date: Sat, 18 Feb 2017 15:33:48 -0800 Subject: [PATCH 4/4] refactored code similar to how we completed in class with lexical arrow funcs and testing results against an array of sequential values --- lib/file-reader.js | 36 ++++++++++++++++++++++++------------ package.json | 1 + test/file-reader-test.js | 34 ++++++++++++++++++---------------- 3 files changed, 43 insertions(+), 28 deletions(-) diff --git a/lib/file-reader.js b/lib/file-reader.js index 09d972b..ed387b6 100644 --- a/lib/file-reader.js +++ b/lib/file-reader.js @@ -14,19 +14,31 @@ exports.readSingleFile = function(file, callback) { }); }; -exports.readAllFiles = function() { - exports.readSingleFile(`${__dirname}/../data/one.txt`, function(err, data) { - if(err) throw err; - console.log('This is one.txt: ', data); - - exports.readSingleFile(`${__dirname}/../data/two.txt`, function(err, data) { - if(err) throw err; - console.log('This is two.txt: ', data); - - exports.readSingleFile(`${__dirname}/../data/three.txt`, function(err, data) { - if(err) throw err; - console.log('This is three.txt: ', data); +var paths = [ + `${__dirname}/../data/one.txt`, + `${__dirname}/../data/two.txt`, + `${__dirname}/../data/three.txt` +]; + +exports.readAllFiles = function(pathArray, callback) { + var results = []; + fs.readFile(pathArray[0], function(err, data){ + if(err) return callback(err); + results.push(data.toString('hex', 0, 8)); + + fs.readFile(pathArray[1], function(err, data){ + if(err) return callback(err); + results.push(data.toString('hex', 0, 8)); + + fs.readFile(pathArray[2], function(err, data){ + if(err) return callback(err); + results.push(data.toString('hex', 0, 8)); + callback(null, results); }); }); }); }; + +// exports.readAllFiles(paths, function(err, data){ +// console.log('data', data); +// }); diff --git a/package.json b/package.json index 9fb24b5..f5f9257 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "homepage": "https://github.com/npisciotti1/03-parallel_file_processing#readme", "devDependencies": { "chai": "^3.5.0", + "mocha": "^3.2.0", "mocha-test": "^2.0.3" } } diff --git a/test/file-reader-test.js b/test/file-reader-test.js index a399eb2..02fce47 100644 --- a/test/file-reader-test.js +++ b/test/file-reader-test.js @@ -3,26 +3,28 @@ const expect = require('chai').expect; const fileReader = require('../lib/file-reader.js'); + + + + describe('File Reader', function() { describe('Hex values should display in order.', function() { - it('first output should be: 5468697320697320', function(done) { - fileReader.readSingleFile(`${__dirname}/../data/one.txt`, function(err, data) { - expect(err).to.equal(null); - expect(data).to.equal('5468697320697320'); - done(); - }); - }); - it('second output should be: 6c61682064656520', function(done) { - fileReader.readSingleFile(`${__dirname}/../data/two.txt`, function(err, data) { - expect(err).to.equal(null); - expect(data).to.equal('6c61682064656520'); - done(); - }); + before((done) => { + this.paths = [ + `${__dirname}/../data/one.txt`, + `${__dirname}/../data/two.txt`, + `${__dirname}/../data/three.txt` + ]; + done(); }); - it('third output should be: 4c6f72656d206970', function(done) { - fileReader.readSingleFile(`${__dirname}/../data/three.txt`, function(err, data) { + it('should test pathArray and correctly log each result', (done) => { + var expectedResults = ['5468697320697320', '6c61682064656520', '4c6f72656d206970']; + fileReader.readAllFiles(this.paths, function(err, data) { expect(err).to.equal(null); - expect(data).to.equal('4c6f72656d206970'); + expect(data[0]).to.equal(expectedResults[0]); + expect(data[1]).to.equal(expectedResults[1]); + expect(data[2]).to.equal(expectedResults[2]); + console.log('data', data); done(); }); });