-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
89 lines (83 loc) · 2.9 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
'use strict'
const { expect } = require('chai')
const { deepEqual } = require('easily-js')
let cacheData = {}
exports.checkType = (dataType, ...objects) => {
dataType = dataType.toLowerCase()
for (let object of objects) {
if (dataType === 'array') expect(object).to.be.an(dataType)
else if (dataType === 'null') expect(object).to.be.a('null')
else if (dataType === 'nan') expect(isNaN(object)).to.equal(true)
else expect(typeof object).to.equal(dataType)
}
}
exports.checkMatch = (expression, ...objects) => {
exports.checkType('string', ...objects)
for (let object of objects) {
expect(object).to.match(expression)
}
}
exports.checkEqual = (data, ...objects) => {
for (let object of objects) {
if (!Array.isArray(object) && typeof object === 'object' && object !== null) expect(deepEqual(object, data)).to.equal(true)
else expect(object).to.equal(data)
}
}
exports.checkObject = (...objects) => {
exports.checkType('object', ...objects)
for (let i = objects.length; --i >= 0;) {
checkObject(objects[i], cacheData)
}
}
function checkObject (object, comparedData) {
for (let key in object) {
expect(key in comparedData).to.equal(true)
if (typeof object[key] === 'object' && !Array.isArray(object[key])) checkObject(object[key], comparedData[key])
else if (checkArray(comparedData[key], object[key])) continue
else expect(`${object[key]}`).to.match(comparedData[key])
}
}
function checkArray (comparedData, ...objects) {
for (let k = objects.length; --k >= 0;) {
let object = objects[k]
if (Array.isArray(object)) {
let j = 0
for (let i = 0, length = object.length; i < length; i++) {
if (typeof object[i] === 'object' && !Array.isArray(object[i])) checkObject(object[i], comparedData[j])
else if (checkArray(comparedData[j], object[i])) continue
else expect(`${object[i]}`).to.match(comparedData[j])
j = (j + 1) % comparedData.length
}
} else return false
}
return true
}
exports.checkArray = checkArray
exports.checkValue = (...objects) => {
for (let k = 0; k < objects.length; k++) {
const object = objects[k]
expect(Boolean(object)).to.equal(true)
}
}
exports.checkAllKeys = function checkAllKeys (keyNames, ...objects) {
exports.checkType('object', ...objects)
for (let i = 0; i < keyNames.length; i++) {
for (let j = 0; j < objects.length; j++) {
exports.checkEqual(true, Boolean(objects[j][keyNames[i]]))
}
}
}
exports.checkAbove = function checkAbove (n, ...objects) {
for (let i = 0; i < objects.length; i++) {
expect(objects[i]).to.be.above(n)
}
}
exports.checkEmpty = require('./checkEmpty')
exports.checkNotEmpty = require('./checkNotEmpty')
exports.checkBelow = require('./checkBelow')
exports.checkMost = require('./checkMost')
exports.checkLeast = require('./checkLeast')
exports.checkWithin = require('./checkWithin')
exports.init = data => {
cacheData = data
}