lamed_test
Version:
Mocha unit testing made easy
140 lines (123 loc) • 5.47 kB
JavaScript
console.log(`Starting ${__filename}...`) // comment line to remove simple logging
// ------------------------------------------------------
// compare.test.js
// Purpose: The purpose of this....
// Date Created: 2019/06/07
// Created by : Perez Lamed van Niekerk
// ------------------------------------------------------
/* jshint esversion: 6 */
const _test = require('../src/lTest')
const { Equal, notEqual, con, testAND, unZip, isEqual, compareStr } = _test
// ---------------------------------------------------
// Setup unit test
const show = !_test.isTestRunner()
if (show) {
con.traceSet(0) // Activate trace when not run from test runner
// con.useChalk(require('chalk')) // Give us some colour
}
con.logLine()
con.log(` --> ${__filename}`) // Show test case
// Equal() -----------------------------------------------
const arrayItem =
['- Inspection Templates',
'- Inspection Ranges Principles',
' - Inspection Ranges Creation/Setup',
'- Measure Points',
'- Inspection Area Workflow',
' - Examples of Reports',
' - Template Application',
''] // This line will cause error
const arrayCompare =
['- Inspection Templates',
'- Inspection Ranges Principles',
' - Inspection Ranges Creation/Setup',
'- Measure Points',
'- Inspection Area Workflow',
' - Examples of Reports',
' - Template Application']
con.trace({ arrayItem })
unZip(() => Equal(arrayItem, arrayCompare), false, { isSample: false })
const arrayItem2 =
['- Inspection Templates',
'- Inspection Ranges Principles',
' - Inspection Ranges Creation/Setup',
'- Measure Points ###Invalid###', // This is invalid -> Show this in red, 3 lines before and after (number the lines)
'- Inspection Area Workflow',
' - Examples of Reports',
' - Template Application',
''] // This line will cause error
const arrayCompare2 =
['- Inspection Templates',
'- Inspection Ranges Principles',
' - Inspection Ranges Creation/Setup',
'- Measure Points', // This is the compare line -> Show this in green, 3 lines before and after (number the lines)
'- Inspection Area Workflow',
' - Examples of Reports',
' - Template Application']
unZip(() => Equal(arrayCompare2, arrayItem2), false, { isSample: false })
unZip(() => Equal('random text', undefined), false)
unZip(() => Equal(undefined, 'random text'), false)
unZip(() => Equal('line1\nline2', 'line1\nline'), false)
unZip(() => Equal('line1\nline', 'line1\nline2'), false)
unZip(() => Equal(['line1\nline', 'line1\nline2'], ['line1\nline']), false)
unZip(() => Equal('rollerLH_and_RH', 'rollerLH_and__RH'), false)
unZip(() => Equal(
[{ name: 'Piet', age: 20 }, { name: 'Koos', age: 30 }],
[{ name: 'Piet', age: 20 }, { name: 'Koos', age: 31 }]), false)
con.traceLine()
// notEqual() ------------------------------------------------------------
unZip(() => notEqual('line1\nline2', 'line1\nline2'), false)
unZip(() => notEqual(
[{ name: 'Piet', age: 20 }, { name: 'Koos', age: 30 }],
[{ name: 'Piet', age: 20 }, { name: 'Koos', age: 30 }]), false)
unZip(() => notEqual(
{ colour: 'red', line: '[Task1]', pos: 8 },
{ colour: 'red', line: '[Task1]', pos: 8 }), false)
// Compare object and string
unZip(() => notEqual('{"name": "value"}', { name: 'value' }), true)
con.traceLine()
// isEqual() -----------------------------------------------------------
unZip(() => isEqual([1, 2], [1, 2]), true)
unZip(() => isEqual(['1', '2'], ['1', '2']), true)
unZip(() => isEqual(['1', '2'], [1, 2], false), false)
unZip(() => isEqual({ a: [1, 2] }, { a: [1, 2] }, true), true)
unZip(() => isEqual({ a: 'bb' }, { a: 'bb' }), true)
unZip(() => isEqual({ a: 'bb' }, { a: 'bb' }), true)
unZip(() => isEqual({ a: 'bb' }, '{ "a": "bb" }', false), false)
con.traceLine()
unZip(() => isEqual(NaN, NaN), true)
unZip(() => isEqual(undefined, undefined), true)
unZip(() => isEqual(null, undefined), false)
unZip(() => isEqual(null, NaN), false)
unZip(() => isEqual(undefined, NaN), false)
unZip(() => isEqual(undefined, NaN), false)
con.traceLine()
// compareStr() ------------------------------------------------
unZip(() => compareStr('test1', 'test1'), -1)
unZip(() => compareStr('test1', 'test2', false), 4)
let line = 'This is a very long line and will continue and will continue for long'
let line2 = line + '2'
unZip(() => compareStr(line, line2, false), 69)
line2 = line.repeat(3) + '_Error_' + line.repeat(3)
line = line.repeat(3) + '_Ok_' + line.repeat(3)
unZip(() => compareStr(line, line2, false), 208)
con.traceLine()
// testAND
unZip(() => testAND(module.filename, true), true)
unZip(() => testAND(module.filename, true, true), true)
unZip(() => testAND(module.filename, true, true, true), true)
unZip(() => testAND(module.filename, true, true, true, true), true)
unZip(() => testAND(module.filename, true, true, false), false)
unZip(() => testAND(module.filename, true, false, true), false)
unZip(() => testAND(module.filename, false, true, true, true), false)
con.logGreen(` √ ${__filename}`) // Success!!!
con.traceLine()
// -------------------------------------------
// Code to generate 'readme' and 'help' when run directly by node
//
// Add to bottom of testRunner()
// Generating readme & help
// npm uninstall -g lamed_readme
// npm i -g lamed_readme
// npm link lamed_readme
// const _gen = require('lamed_readme'); _gen.genReadme(__dirname); _gen.genHelp(__dirname) // Uncomment line to generate readme & help