You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.3 KiB

5 years ago
const is = {}
// /*/ // ⚡
export const tests = []
const t = (f) => tests.push(f)
// your functions are all tested against all these values:
export const setup = () => [
0,
NaN,
true,
'',
'💩',
undefined,
t,
[],
{},
[1, Array(1), [], 2],
{ length: 10 },
Object.create(null),
null,
console.log,
void 0,
]
const match = ({ eq, ctx }, fun, values) => eq(ctx.filter(fun), values)
// the array of value here is the ones that your function should
// return true too, while returning false to every others.
t((_) => match(_, is.num, [0, NaN]))
t((_) => match(_, is.nan, [NaN]))
t((_) => match(_, is.str, ['', '💩']))
t((_) => match(_, is.bool, [true]))
t((_) => match(_, is.undef, [undefined, undefined]))
t((_) => match(_, is.arr, [[], [1, Array(1), [], 2]]))
t((_) => match(_, is.obj, [{}, { length: 10 }, Object.create(null)]))
t((_) => match(_, is.fun, [t, console.log]))
t((_) => match(_, is.falsy, [0, NaN, '', undefined, null, void 0]))
// is.def
t(({ ctx }) => !ctx.filter(is.def).includes(undefined))
t(({ ctx }) => ctx.filter(is.def).length === ctx.length - 2)
// is.truthy
t((_) =>
match(_, is.truthy, [
true,
'💩',
t,
[],
{},
[1, Array(1), [], 2],
{ length: 10 },
Object.create(null),
console.log,
]),
)
Object.freeze(tests)