diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86823c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +.coveralls.yml + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# Commenting this out is preferred by some people, see +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- +node_modules + +# Users Environment Variables +.lock-wscript diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..638448b --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: node_js +node_js: + - 'iojs' +before_install: + - npm install -g gulp +script: + - gulp test +after_success: + - gulp coveralls diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e6c4402 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Javier Cejudo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..2565a46 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# linear-presets + +[![Build Status](https://travis-ci.org/javiercejudo/linear-presets.svg)](https://travis-ci.org/javiercejudo/linear-presets) +[![Coverage Status](https://coveralls.io/repos/javiercejudo/linear-presets/badge.svg?branch=master)](https://coveralls.io/r/javiercejudo/linear-presets?branch=master) +[![Code Climate](https://codeclimate.com/github/javiercejudo/linear-presets/badges/gpa.svg)](https://codeclimate.com/github/javiercejudo/linear-presets) + +Linear presets for converting common units + +## Install + + npm i linear-presets + +## See more + +- [tests](test/presets.js) + +## Related projects + +- [linear-converter](https://github.com/javiercejudo/linear-converter): flexible linear converter with built in conversions for common units. +- [rescale](https://github.com/javiercejudo/rescale): rescales a point given two scales. +- [scale](https://github.com/javiercejudo/scale): scales normalised data. +- [normalise](https://github.com/javiercejudo/normalise): normalise data to [0, 1]. +- [rescale-util](https://github.com/javiercejudo/rescale-util): rescale utilities. diff --git a/data/presets.json b/data/presets.json new file mode 100644 index 0000000..043dd23 --- /dev/null +++ b/data/presets.json @@ -0,0 +1,85 @@ +{ + "metricPrefixes": { + "noneToExa": [[0, 1e+18], [0, 1]], + "noneToPeta": [[0, 1e+15], [0, 1]], + "noneToTera": [[0, 1e+12], [0, 1]], + "noneToGiga": [[0, 1e+9], [0, 1]], + "noneToMega": [[0, 1e+6], [0, 1]], + "noneToKilo": [[0, 1000], [0, 1]], + "noneToHecto": [[0, 100], [0, 1]], + "noneToDeca": [[0, 10], [0, 1]], + "noneToDeci": [[0, 1], [0, 10]], + "noneToCenti": [[0, 1], [0, 100]], + "noneToMilli": [[0, 1], [0, 1000]], + "noneToMicro": [[0, 1], [0, 1e+6]], + "noneToNano": [[0, 1], [0, 1e+9]], + "noneToPico": [[0, 1], [0, 1e+12]], + "noneToFemto": [[0, 1], [0, 1e+15]], + "noneToAtto": [[0, 1], [0, 1e+18]] + }, + "temperature": { + "celsiusToFahrenheit": [[0, 100], [32, 212]], + "celsiusToKelvin": [[0, 100], [273.15, 373.15]], + "celsiusToRankine": [[0, 100], [491.67, 671.67]], + "celsiusToDelisle": [[0, 100], [150, 0]], + "celsiusToNewton": [[0, 100], [0, 33]], + "celsiusToReaumur": [[0, 100], [0, 80]], + "celsiusToRomer": [[0, 100], [7.5, 60]] + }, + "distance": { + "metreToKilometre": [[0, 1000], [0, 1]], + "metreToCentimetre": [[0, 1], [0, 100]], + "metreToMillimetre": [[0, 1], [0, 1000]], + "metreToMile": [[0, 1609.344], [0, 1]], + "metreToYard": [[0, 0.9144], [0, 1]], + "metreToFoot": [[0, 0.3048], [0, 1]], + "metreToInch": [[0, 0.0254], [0, 1]], + "metreToNauticalMile": [[0, 1852], [0, 1]] + }, + "mass": { + "kilogramToMetricTon": [[0, 1000], [0, 1]], + "kilogramToGram": [[0, 1], [0, 1000]], + "kilogramToMilligram": [[0, 1], [0, 1e+6]], + "kilogramToMicrogram": [[0, 1], [0, 1e+9]], + "kilogramToLongTon": [[0, 1016], [0, 1]], + "kilogramToShortTon": [[0, 907.18474], [0, 1]], + "kilogramToStone": [[0, 6.35029318], [0, 1]], + "kilogramToPound": [[0, 0.45359237], [0, 1]], + "kilogramToOunce": [[0, 0.02834952312], [0, 1]] + }, + "time": { + "secondToNanosecond": [[0, 1], [0, 1e+9]], + "secondToMicrosecond": [[0, 1], [0, 1e+6]], + "secondToMillisecond": [[0, 1], [0, 1000]], + "secondToMinute": [[0, 60], [0, 1]], + "secondToHour": [[0, 3600], [0, 1]], + "secondToDay": [[0, 86400], [0, 1]], + "secondToWeek": [[0, 604800], [0, 1]], + "secondToMonth": [[0, 2629746], [0, 1]], + "secondToYear": [[0, 31556952], [0, 1]], + "secondToDecade": [[0, 315569520], [0, 1]], + "secondToCentury": [[0, 3155695200], [0, 1]], + "secondToMillennium": [[0, 31556952000], [0, 1]] + }, + "electricCurrent": { + "ampereToAbampere": [[0, 10], [0, 1]] + }, + "amountOfSubstance": { + "moleToPoundMole": [[0, 453.59237], [0, 1]] + }, + "speed": { + "metresSecondToMilesHour": [[0, 1], [0, 2.236936292054402]], + "metresSecondToFeetSecond": [[0, 1], [0, 3.280839895013123]], + "metresSecondToKilometresHour": [[0, 1], [0, 3.6]], + "metresSecondToKnot": [[0, 1], [0, 1.943844492440605]] + }, + "area": { + "squareMetreToSquareKilometre": [[0, 1000000], [0, 1]], + "squareMetreToHectare": [[0, 10000], [0, 1]], + "squareMetreToSquareMile": [[0, 2589988.110336], [0, 1]], + "squareMetreToAcre": [[0, 4046.8564224], [0, 1]], + "squareMetreToSquareYard": [[0, 0.83612736], [0, 1]], + "squareMetreToSquareFoot": [[0, 0.09290304], [0, 1]], + "squareMetreToSquareInch": [[0, 0.00064516], [0, 1]] + } +} diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..4796c05 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,28 @@ +var gulp = require('gulp'); +var mocha = require('gulp-mocha'); +var istanbul = require('gulp-istanbul'); +var rimraf = require('rimraf'); +var coveralls = require('gulp-coveralls'); + +gulp.task('clean', function (cb) { + rimraf('./coverage', cb); +}); + +gulp.task('instrument', function () { + return gulp.src(['src/*.js']) + .pipe(istanbul()) + .pipe(istanbul.hookRequire()); +}); + +gulp.task('test', ['clean', 'instrument'], function () { + return gulp.src(['test/*.js']) + .pipe(mocha()) + .pipe(istanbul.writeReports()); +}); + +gulp.task('coveralls', function () { + gulp.src('coverage/lcov.info') + .pipe(coveralls()); +}); + +gulp.task('default', ['test']); diff --git a/package.json b/package.json new file mode 100644 index 0000000..47e7651 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "linear-presets", + "version": "1.0.0-beta.1", + "description": "Linear presets for converting common units", + "main": "src/linear-presets.js", + "scripts": { + "test": "gulp test" + }, + "repository": { + "type": "git", + "url": "https://github.com/javiercejudo/linear-presets" + }, + "keywords": [ + "feature scaling", + "normalisation", + "normalization", + "scale", + "rescale" + ], + "author": "Javier Cejudo", + "license": "MIT", + "bugs": { + "url": "https://github.com/javiercejudo/linear-presets/issues" + }, + "homepage": "https://github.com/javiercejudo/linear-presets", + "devDependencies": { + "gulp": "^3.8.11", + "gulp-coveralls": "^0.1.3", + "gulp-istanbul": "^0.6.0", + "gulp-mocha": "^2.0.0", + "linear-converter": "^1.0.0-beta.4", + "rimraf": "^2.3.2", + "should": "^5.0.0" + } +} diff --git a/src/linear-presets.js b/src/linear-presets.js new file mode 100644 index 0000000..43d62d1 --- /dev/null +++ b/src/linear-presets.js @@ -0,0 +1,5 @@ +/*jshint node:true */ + +'use strict'; + +exports.PRESETS = require('../data/presets.json'); diff --git a/test/presets.js b/test/presets.js new file mode 100644 index 0000000..d05d209 --- /dev/null +++ b/test/presets.js @@ -0,0 +1,213 @@ +/*jshint node:true, mocha:true */ + +'use strict'; + +var should = require('should'); +var converter = require('linear-converter'); +var presets = require('../src/linear-presets.js'); + +var presets = converter.PRESETS; +var convert = converter.convert; +var invert = converter.invertPreset; + +describe('built-in presets', function() { + it('should include metric prefixes', function() { + var metric = presets.metricPrefixes; + + (1).should.be.exactly(convert(1e-18, invert(metric.noneToExa)), 'noneToExa') + .and.exactly(convert(1e-15, invert(metric.noneToPeta)), 'noneToPeta') + .and.exactly(convert(1e-12, invert(metric.noneToTera)), 'noneToTera') + .and.exactly(convert(1e-9, invert(metric.noneToGiga)), 'noneToGiga') + .and.exactly(convert(1e-6, invert(metric.noneToMega)), 'noneToMega') + .and.exactly(convert(0.001, invert(metric.noneToKilo)), 'noneToKilo') + .and.exactly(convert(0.01, invert(metric.noneToHecto)), 'noneToHecto') + .and.exactly(convert(0.1, invert(metric.noneToDeca)), 'noneToDeca') + .and.exactly(convert(10, invert(metric.noneToDeci)), 'noneToDeci') + .and.exactly(convert(100, invert(metric.noneToCenti)), 'noneToCenti') + .and.exactly(convert(1000, invert(metric.noneToMilli)), 'noneToMilli') + .and.exactly(convert(1e+6, invert(metric.noneToMicro)), 'noneToMicro') + .and.exactly(convert(1e+9, invert(metric.noneToNano)), 'noneToNano') + .and.exactly(convert(1e+12, invert(metric.noneToPico)), 'noneToPico') + .and.exactly(convert(1e+15, invert(metric.noneToFemto)), 'noneToFemto') + .and.exactly(convert(1e+18, invert(metric.noneToAtto)), 'noneToAtto'); + + (0).should.be.exactly(convert(0, metric.noneToExa), 'noneToExa') + .and.exactly(convert(0, metric.noneToPeta), 'noneToPeta') + .and.exactly(convert(0, metric.noneToTera), 'noneToTera') + .and.exactly(convert(0, metric.noneToGiga), 'noneToGiga') + .and.exactly(convert(0, metric.noneToMega), 'noneToMega') + .and.exactly(convert(0, metric.noneToKilo), 'noneToKilo') + .and.exactly(convert(0, metric.noneToHecto), 'noneToHecto') + .and.exactly(convert(0, metric.noneToDeca), 'noneToDeca') + .and.exactly(convert(0, metric.noneToDeci), 'noneToDeci') + .and.exactly(convert(0, metric.noneToCenti), 'noneToCenti') + .and.exactly(convert(0, metric.noneToMilli), 'noneToMilli') + .and.exactly(convert(0, metric.noneToMicro), 'noneToMicro') + .and.exactly(convert(0, metric.noneToNano), 'noneToNano') + .and.exactly(convert(0, metric.noneToPico), 'noneToPico') + .and.exactly(convert(0, metric.noneToFemto), 'noneToFemto') + .and.exactly(convert(0, metric.noneToAtto), 'noneToAtto'); + }); + + it('should include length', function() { + var length = presets.distance; + + (42195).should.be.exactly(convert(42.195, invert(length.metreToKilometre)), 'metreToKilometre') + .and.exactly(convert(4219500, invert(length.metreToCentimetre)), 'metreToCentimetre') + .and.exactly(convert(42195000, invert(length.metreToMillimetre)), 'metreToMillimetre') + .and.exactly(convert(26.218757456454306, invert(length.metreToMile)), 'metreToMile') + .and.exactly(convert(46145.01312335958, invert(length.metreToYard)), 'metreToYard') + .and.exactly(convert(138435.03937007874, invert(length.metreToFoot)), 'metreToFoot') + .and.exactly(convert(1661220.472440945, invert(length.metreToInch)), 'metreToInch') + .and.exactly(convert(22.783477321814257, invert(length.metreToNauticalMile)), 'metreToNauticalMile'); + + (0).should.be.exactly(convert(0, length.metreToKilometre), 'metreToKilometre') + .and.exactly(convert(0, length.metreToCentimetre), 'metreToCentimetre') + .and.exactly(convert(0, length.metreToMillimetre), 'metreToMillimetre') + .and.exactly(convert(0, length.metreToMile), 'metreToMile') + .and.exactly(convert(0, length.metreToYard), 'metreToYard') + .and.exactly(convert(0, length.metreToFoot), 'metreToFoot') + .and.exactly(convert(0, length.metreToInch), 'metreToInch') + .and.exactly(convert(0, length.metreToNauticalMile), 'metreToNauticalMile'); + }); + + it('should include mass', function() { + var mass = presets.mass; + + (10).should.be.exactly(convert(0.01, invert(mass.kilogramToMetricTon)), 'kilogramToMetricTon') + .and.exactly(convert(10000, invert(mass.kilogramToGram)), 'kilogramToGram') + .and.exactly(convert(1e+7, invert(mass.kilogramToMilligram)), 'kilogramToMilligram') + .and.exactly(convert(1e+10, invert(mass.kilogramToMicrogram)), 'kilogramToMicrogram') + .and.exactly(convert(0.00984251968503937, invert(mass.kilogramToLongTon)), 'kilogramToLongTon') + .and.exactly(convert(0.011023113109243879, invert(mass.kilogramToShortTon)), 'kilogramToShortTon') + .and.exactly(convert(1.5747304441776968, invert(mass.kilogramToStone)), 'kilogramToStone') + .and.exactly(convert(22.046226218487757, invert(mass.kilogramToPound)), 'kilogramToPound') + .and.exactly(convert(352.7396195580167, invert(mass.kilogramToOunce)), 'kilogramToOunce'); + + (0).should.be.exactly(convert(0, mass.kilogramToMetricTon), 'kilogramToMetricTon') + .and.exactly(convert(0, mass.kilogramToGram), 'kilogramToGram') + .and.exactly(convert(0, mass.kilogramToMilligram), 'kilogramToMilligram') + .and.exactly(convert(0, mass.kilogramToMicrogram), 'kilogramToMicrogram') + .and.exactly(convert(0, mass.kilogramToLongTon), 'kilogramToLongTon') + .and.exactly(convert(0, mass.kilogramToShortTon), 'kilogramToShortTon') + .and.exactly(convert(0, mass.kilogramToStone), 'kilogramToStone') + .and.exactly(convert(0, mass.kilogramToPound), 'kilogramToPound') + .and.exactly(convert(0, mass.kilogramToOunce), 'kilogramToOunce'); + }); + + it('should include time', function() { + var time = presets.time; + + (259200).should.be.exactly(convert(259200000000000, invert(time.secondToNanosecond)), 'secondToNanosecond') + .and.exactly(convert(259200000000, invert(time.secondToMicrosecond)), 'secondToMicrosecond') + .and.exactly(convert(259200000000, invert(time.secondToMicrosecond)), 'secondToMicrosecond') + .and.exactly(convert(259200000, invert(time.secondToMillisecond)), 'secondToMillisecond') + .and.exactly(convert(4320, invert(time.secondToMinute)), 'secondToMinute') + .and.exactly(convert(72, invert(time.secondToHour)), 'secondToHour') + .and.exactly(convert(3, invert(time.secondToDay)), 'secondToDay') + .and.exactly(convert(0.42857142857142856, invert(time.secondToWeek)), 'secondToWeek') + .and.approximately(convert(0.09856465225158627, invert(time.secondToMonth)), 10e-11, 'secondToMonth') + .and.exactly(convert(0.008213721020965523, invert(time.secondToYear)), 'secondToYear') + .and.exactly(convert(0.0008213721020965523, invert(time.secondToDecade)), 'secondToDecade') + .and.exactly(convert(0.00008213721020965523, invert(time.secondToCentury)), 'secondToCentury') + .and.approximately(convert(0.000008213721020965522, invert(time.secondToMillennium)), 10e-11, 'secondToMillennium'); + + (0).should.be.exactly(convert(0, time.secondToNanosecond), 'secondToNanosecond') + .and.exactly(convert(0, time.secondToMicrosecond), 'secondToMicrosecond') + .and.exactly(convert(0, time.secondToMicrosecond), 'secondToMicrosecond') + .and.exactly(convert(0, time.secondToMillisecond), 'secondToMillisecond') + .and.exactly(convert(0, time.secondToMinute), 'secondToMinute') + .and.exactly(convert(0, time.secondToHour), 'secondToHour') + .and.exactly(convert(0, time.secondToDay), 'secondToDay') + .and.exactly(convert(0, time.secondToWeek), 'secondToWeek') + .and.exactly(convert(0, time.secondToMonth), 'secondToMonth') + .and.exactly(convert(0, time.secondToYear), 'secondToYear') + .and.exactly(convert(0, time.secondToDecade), 'secondToDecade') + .and.exactly(convert(0, time.secondToCentury), 'secondToCentury') + .and.exactly(convert(0, time.secondToMillennium), 'secondToMillennium'); + }); + + it('should include electric current', function() { + var current = presets.electricCurrent; + + convert(10, current.ampereToAbampere).should.be.exactly(1); + convert(0, current.ampereToAbampere).should.be.exactly(0); + }); + + it('should include temperature', function() { + var temp = presets.temperature; + + (40).should.be.exactly(convert(104, invert(temp.celsiusToFahrenheit)), 'celsiusToFahrenheit') + .and.exactly(convert(313.15, invert(temp.celsiusToKelvin)), 'celsiusToKelvin') + .and.approximately(convert(563.67, invert(temp.celsiusToRankine)), 10e-14, 'celsiusToRankine') + .and.exactly(convert(90, invert(temp.celsiusToDelisle)), 'celsiusToDelisle') + .and.exactly(convert(13.2, invert(temp.celsiusToNewton)), 'celsiusToNewton') + .and.exactly(convert(32, invert(temp.celsiusToReaumur)), 'celsiusToReaumur') + .and.exactly(convert(28.5, invert(temp.celsiusToRomer)), 'celsiusToRomer'); + + (0).should.be.exactly(convert(32, invert(temp.celsiusToFahrenheit)), 'celsiusToFahrenheit') + .and.exactly(convert(273.15, invert(temp.celsiusToKelvin)), 'celsiusToKelvin') + .and.exactly(convert(491.67, invert(temp.celsiusToRankine)), 'celsiusToRankine') + .and.exactly(convert(150, invert(temp.celsiusToDelisle)), 'celsiusToDelisle') + .and.exactly(convert(0, invert(temp.celsiusToNewton)), 'celsiusToNewton') + .and.exactly(convert(0, invert(temp.celsiusToReaumur)), 'celsiusToReaumur') + .and.exactly(convert(7.5, invert(temp.celsiusToRomer)), 'celsiusToRomer'); + }); + + it('should include amount of substance', function() { + var substance = presets.amountOfSubstance; + + convert(9525.43977, substance.moleToPoundMole).should.be.exactly(21); + convert(0, substance.moleToPoundMole).should.be.exactly(0); + }); + + it.skip('should include luminous intensity', function() { + should(presets.luminousIntensity).be.an.Object.and.not.eql({}); + }); + + it('should include speed', function() { + var speed = presets.speed; + + (100/9.58).should.be.exactly(convert(23.35006567906474, invert(speed.metresSecondToMilesHour)), 'metresSecondToMilesHour') + .and.exactly(convert(34.24676299596162, invert(speed.metresSecondToFeetSecond)), 'metresSecondToFeetSecond') + .and.exactly(convert(37.578288100208766, invert(speed.metresSecondToKilometresHour)), 'metresSecondToKilometresHour') + .and.exactly(convert(20.290652321926984, invert(speed.metresSecondToKnot)), 'metresSecondToKnot'); + + (0).should.be.exactly(convert(0, speed.metresSecondToMilesHour), 'metresSecondToMilesHour') + .and.exactly(convert(0, speed.metresSecondToFeetSecond), 'metresSecondToFeetSecond') + .and.exactly(convert(0, speed.metresSecondToKilometresHour), 'metresSecondToKilometresHour') + .and.exactly(convert(0, speed.metresSecondToKnot), 'metresSecondToKnot'); + }); + + it.skip('should include volume', function() { + should(presets.volume).be.an.Object.and.not.eql({}); + }); + + it('should include area', function() { + var area = presets.area; + + (5.045e+9).should.be.exactly(convert(5045, invert(area.squareMetreToSquareKilometre)), 'squareMetreToSquareKilometre') + .and.exactly(convert(504500, invert(area.squareMetreToHectare)), 'squareMetreToHectare') + .and.exactly(convert(1947.8853898466393, invert(area.squareMetreToSquareMile)), 'squareMetreTosquareMile') + .and.exactly(convert(1246646.6495018492, invert(area.squareMetreToAcre)), 'squareMetreToAcre') + .and.exactly(convert(6033769783.58895, invert(area.squareMetreToSquareYard)), 'squareMetreToSquareYard') + .and.exactly(convert(54303928052.300545, invert(area.squareMetreToSquareFoot)), 'squareMetreToSquareFoot') + .and.exactly(convert(7819765639531.279, invert(area.squareMetreToSquareInch)), 'squareMetreToSquareInch'); + + (0).should.be.exactly(convert(0, area.squareMetreToSquareKilometre), 'squareMetreToSquareKilometre') + .and.exactly(convert(0, area.squareMetreToHectare), 'squareMetreToHectare') + .and.exactly(convert(0, area.squareMetreToSquareMile), 'squareMetreTosquareMile') + .and.exactly(convert(0, area.squareMetreToAcre), 'squareMetreToAcre') + .and.exactly(convert(0, area.squareMetreToSquareYard), 'squareMetreToSquareYard') + .and.exactly(convert(0, area.squareMetreToSquareFoot), 'squareMetreToSquareFoot') + .and.exactly(convert(0, area.squareMetreToSquareInch), 'squareMetreToSquareInch'); + }); + + it.skip('should include fuel consumption', function() { + should(presets.fuelConsumption).be.an.Object.and.not.eql({}); + }); + + it.skip('should include digital storage', function() { + should(presets.digitalStorage).be.an.Object.and.not.eql({}); + }); +});