0.1.2 Added testing and improved options for default behaviors
parent
f05cf40fd6
commit
36daa6b5b9
|
@ -1,2 +1,3 @@
|
|||
/node_modules/
|
||||
/coverage/
|
||||
*.lock
|
||||
|
|
|
@ -2,3 +2,4 @@ tests/
|
|||
test/
|
||||
*.test.js
|
||||
testing/
|
||||
*.lock
|
||||
|
|
11
package.json
11
package.json
|
@ -1,16 +1,13 @@
|
|||
{
|
||||
"name": "@uci-utils/to-boolean",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"description": "function to return a boolean value from sets of default values",
|
||||
"main": "src/boolean.js",
|
||||
"scripts": {
|
||||
"example": "node --r esm examples/example",
|
||||
"example": "node -r esm examples/example",
|
||||
"example:dev": "UCI_ENV=dev ./node_modules/.bin/nodemon -r esm examples/example",
|
||||
"test": "./node_modules/.bin/mocha -r esm --timeout 30000",
|
||||
"testd": "UCI_ENV=dev ./node_modules/.bin/nodemon --exec './node_modules/.bin/mocha -r esm --timeout 30000' || exit 0",
|
||||
"testdd": "UCI_LOG_LEVEL='trace' npm run testd",
|
||||
"testde": "UCI_LOG_LEVEL='warn' npm run testd",
|
||||
"testl": "UCI_ENV=pro UCI_LOG_PATH=./test/test.log 0 npm run test || exit 0"
|
||||
"test": "./node_modules/.bin/mocha -r esm --timeout 30000 || exit 0",
|
||||
"testd": "./node_modules/.bin/nodemon --exec './node_modules/.bin/mocha -r esm --timeout 30000' || exit 0"
|
||||
},
|
||||
"author": "David Kebler",
|
||||
"license": "MIT",
|
||||
|
|
|
@ -3,14 +3,15 @@ const rFalse=['f','false','n','no','off','negative','down','disabled','nope']
|
|||
|
||||
function createBoolean (opts={}) {
|
||||
return (value => {
|
||||
if (value===undefined) return opts.undefined
|
||||
if (value===null) return opts.null
|
||||
if (!isNaN(Number(value))) return Number(value) <1 ? false :true
|
||||
if (value===undefined) return opts.undefined==='same' ? undefined : opts.undefined || false
|
||||
if (value===null) return opts.null==='same' ? null : opts.null || false
|
||||
if (!isNaN(Number(value))) return (opts.number==='default' ? !!value : (Number(value) > (opts.number || 0)? true : false))
|
||||
if (typeof value==='string') {
|
||||
value = value.trim()
|
||||
value = value.toLowerCase()
|
||||
if ((opts.rTrue || rTrue).includes(value)) return true
|
||||
if ((opts.rFalse || rFalse).includes(value)) return false
|
||||
return !!opts.string || false
|
||||
}
|
||||
return !!value
|
||||
})
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
import { expect } from 'chai'
|
||||
import {toBoolean, createBoolean, rTrue,rFalse }from '../src/boolean'
|
||||
|
||||
describe('No options default function check - ', function () {
|
||||
it('should return false for undefined', function () {
|
||||
expect(toBoolean()).to.equal(false)
|
||||
})
|
||||
it('should return false for null', function () {
|
||||
expect(toBoolean(null)).to.equal(false)
|
||||
})
|
||||
console.log('falsy', rFalse)
|
||||
it('should return false for all falsy', function () {
|
||||
expect(rFalse.reduce((acc,value)=>acc && toBoolean(value),false)).to.equal(false)
|
||||
})
|
||||
console.log('truthy', rTrue)
|
||||
it('should return true for all truthy', function () {
|
||||
expect(rTrue.reduce((acc,value)=>acc && toBoolean(value),true)).to.equal(true)
|
||||
})
|
||||
it('should return false for random word not in either list', function () {
|
||||
expect(toBoolean('bogus')).to.equal(false)
|
||||
})
|
||||
it('should return false for number <=0', function () {
|
||||
expect(toBoolean(-1)).to.equal(false)
|
||||
})
|
||||
it('should return true for number >0', function () {
|
||||
expect(toBoolean(3)).to.equal(true)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
let toBoolean2 = createBoolean({undefined:'same', null:'same',string:true,number:5})
|
||||
|
||||
describe('created Boolean function with these options \'{undefined:\'same\', null:\'same\',string:true,number:5}', function () {
|
||||
it('should return undefined for undefined', function () {
|
||||
expect(toBoolean2()).to.equal(undefined)
|
||||
})
|
||||
it('should return null for null', function () {
|
||||
expect(toBoolean2(null)).to.equal(null)
|
||||
})
|
||||
it('should return true for random word', function () {
|
||||
expect(toBoolean2('bogus')).to.equal(true)
|
||||
})
|
||||
it('but should return false for empty sting \'\' or \' \'', function () {
|
||||
expect(!!(toBoolean2('') ^ toBoolean2(' '))).to.equal(false)
|
||||
})
|
||||
it('but should still return false for all falsy words', function () {
|
||||
expect(rFalse.reduce((acc,value)=>acc && toBoolean(value),false)).to.equal(false)
|
||||
})
|
||||
it('should return false for number <=5', function () {
|
||||
expect(toBoolean2(4)).to.equal(false)
|
||||
})
|
||||
})
|
||||
|
||||
let toBoolean3 = createBoolean({undefined:true, null:true,number:'default'})
|
||||
|
||||
describe('created boolean with {undefined:true, null:true, number:\'default\'}', function () {
|
||||
it('should return true for undefined', function () {
|
||||
expect(toBoolean3()).to.equal(true)
|
||||
})
|
||||
it('should return true for null', function () {
|
||||
expect(toBoolean3(null)).to.equal(true)
|
||||
})
|
||||
it('should return false number =0', function () {
|
||||
expect(toBoolean3(0)).to.equal(false)
|
||||
})
|
||||
it('and should return true for any other number like default casting', function () {
|
||||
expect(toBoolean3(-1) && toBoolean3(1)).to.equal(true)
|
||||
})
|
||||
})
|
|
@ -1,20 +0,0 @@
|
|||
import { expect } from 'chai'
|
||||
import u from '../src/type'
|
||||
|
||||
describe('Variable Types Library - ', function () {
|
||||
|
||||
it('Should include custom types', function () {
|
||||
expect(u.isBuffer(Buffer.from('this is a test'))).to.equal(true)
|
||||
expect(u.getType(Buffer.from('this is a test'))).to.equal('buffer')
|
||||
expect(u.isPromise(Promise.resolve(2))).to.equal(true)
|
||||
expect(u.getType(Promise.resolve(2))).to.equal('promise')
|
||||
})
|
||||
|
||||
it('Should load typechecker', function () {
|
||||
expect(u.isPlainObject([1])).to.equal(false)
|
||||
expect(u.getType(true)).to.equal('boolean')
|
||||
expect(u.getObjectType('a string')).to.equal('[object String]')
|
||||
expect(u.getType('this is a test')).to.equal('string')
|
||||
})
|
||||
|
||||
})
|
Loading…
Reference in New Issue