lamed_learn
Version:
Learning through code templates
132 lines (110 loc) • 4.26 kB
JavaScript
console.log('Starting lLearn.test...')
// unfilter_test.jsst.js
// Purpose: This module...
// Created by: cobolivier
// Created on: 2019/01/18
// ------------------------------------------------------
/* jshint esversion: 6 */
const _test = require('lamed_test')
const { Ok, notOk, notOk_Then, Equal, notEqual, con, testAND } = _test // eslint-disable-line
// con.traceSet(0)
const _lio = require('lamed_io')
const _helper = require('../src/helper')
const _parm = require('../src/helper_parameter')
const _filter = require('lodash.filter')
/**
* From keys, spilt into filter and unfilter keys
* @param keys : Array - The Array to filter
* @returns {{filter: Array, unfilter : Array}}
*/
function keys2Filter (keys) {
/* Filter for parameters that does not include '/' */
const filter = _filter(keys, (item) => {
if (item.includes('/') === false) return item
})
/* Filter for '/*' parameters */
const unfilter = _filter(keys, (item) => {
if (item.includes('/') === true) return item
}).replaceAll('/', '')
return { filter, unfilter }
}
// --------------------------------------------------------
function CommentTest (done) {
con.traceLine()
con.trace(module.filename)
con.traceBold(`--------------------------> ${arguments.callee.name}()`) // eslint-disable-line
let error = `In ${module.filename} --> ${arguments.callee.name}()` // eslint-disable-line
// test 1
let command1 = '/? Use admin rights; Set node global folder before install. \n npm i -g'
let comment = _helper.Comment(command1)
const result = ' Use admin rights; Set node global folder before install. '
if (notEqual(result, comment)) return done(new Error(error))
// test2
command1 = 'npm i -g'
comment = _helper.Comment(command1)
if (comment !== undefined) return done(new Error(error))
return true // success
}
function parametersParseTest (done) {
con.traceLine()
con.trace(module.filename)
con.traceBold(`--------------------------> ${arguments.callee.name}()`) // eslint-disable-line
let error = `In ${module.filename} --> ${arguments.callee.name}()` // eslint-disable-line
/* test case for template parameters */
const code = 'it(\'$Function_input$\', (done) => {\n' +
' $Testcase$\n' +
' done();\n' +
'});'
var parms = _parm.parametersParse(code)
if (parms.length > 2) {
throw new Error(`Too many parameters in '${code}'\n -> [${parms}]`)
}
// if (parms.length !== 2) return done(new Error(error))
// if (notEqual(parms[0], 'Function_input')) return done(new Error(error))
// if (notEqual(parms[1], 'Testcase')) return done(new Error(error))
return true // success
}
function keys2FilterTest (done) {
con.traceLine()
con.trace(module.filename)
con.traceBold(`--------------------------> ${arguments.callee.name}()`) // eslint-disable-line
let error = `In ${module.filename} --> ${arguments.callee.name}()` // eslint-disable-line
const keys = ['cobus', 'sign', '/old', '/oli']
con.trace({ keys })
const result = keys2Filter(keys)
con.trace({ result })
if (notEqual(result.filter, ['cobus', 'sign'])) return done(new Error(error))
if (notEqual(result.unfilter, ['old', 'oli'])) return done(new Error(error))
return true // success
}
/**
* Test all functions
* @param done - callback function to indicate failure or completion
* @constructor
*/
function TestAll (done) {
con.traceLine()
con.trace(module.filename)
con.traceBold(`--------------------------> ${arguments.callee.name}()`) // eslint-disable-line
keys2FilterTest(done)
CommentTest(done)
parametersParseTest(done)
return true // success
}
/**
* Execute the tests manually
*/
function testRunner () {
const isRoot = _lio.isRootFolder() // const _lio = require('lamed_io')
con.trace({ isRoot })
if (isRoot) return
con.traceSet(0)
const done2 = (err) => {
if (err !== undefined) { throw err }
}
TestAll(done2) // Only run if not executed from the root folder
con.logGreen('Success!!!')
}
testRunner()
// Exports --------------------------
module.exports = { TestAll, keys2FilterTest, CommentTest, parametersParseTest }