11import test from 'ava';
2+
3+ import { Arg } from '../src';
24import { areArgumentArraysEqual } from '../src/Utilities';
3- import { Arg } from '../src/index';
45
56const testObject = { "foo": "bar" };
67const testArray = ["a", 1, true];
7- const testFunc = () => {};
8+
9+ // #90: Infinite recursion in deepEqual https://github.com/ffMathy/FluffySpoon.JavaScript.Testing.Faking/blob/master/spec/issues/90.test.ts
10+ const parent = {} as any;
11+ parent.child = parent;
12+ const root = {} as any;
13+ root.path = { to: { nested: root } };
14+
15+ const testFunc = () => { };
816
917//#region areArgumentArraysEqual
1018test('areArgumentArraysEqual should return valid result for primitive arguments', t => {
1119 // single
12- t.true(areArgumentArraysEqual([''],['']));
13- t.true(areArgumentArraysEqual(['a'],['a']));
14- t.true(areArgumentArraysEqual([0],[0]));
15- t.true(areArgumentArraysEqual([1],[1]));
16- t.true(areArgumentArraysEqual([true],[true]));
17- t.true(areArgumentArraysEqual([false],[false]));
18- t.true(areArgumentArraysEqual([undefined],[undefined]));
19- t.true(areArgumentArraysEqual([null],[null]));
20- t.true(areArgumentArraysEqual([testObject],[testObject]));
21- t.true(areArgumentArraysEqual([testArray],[testArray]));
22- t.true(areArgumentArraysEqual([testFunc],[testFunc]));
20+ t.true(areArgumentArraysEqual([''], ['']));
21+ t.true(areArgumentArraysEqual(['a'], ['a']));
22+ t.true(areArgumentArraysEqual([0], [0]));
23+ t.true(areArgumentArraysEqual([1], [1]));
24+ t.true(areArgumentArraysEqual([true], [true]));
25+ t.true(areArgumentArraysEqual([false], [false]));
26+ t.true(areArgumentArraysEqual([undefined], [undefined]));
27+ t.true(areArgumentArraysEqual([null], [null]));
28+ t.true(areArgumentArraysEqual([testObject], [testObject]));
29+ t.true(areArgumentArraysEqual([testArray], [testArray]));
30+ t.true(areArgumentArraysEqual([testFunc], [testFunc]));
31+ t.true(areArgumentArraysEqual([parent], [parent]));
32+ t.true(areArgumentArraysEqual([root], [root]));
2333
24- t.false(areArgumentArraysEqual(['a'],['b']));
25- t.false(areArgumentArraysEqual([1],[2]));
26- t.false(areArgumentArraysEqual([true],[false]));
27- t.false(areArgumentArraysEqual([undefined],[null]));
28- t.false(areArgumentArraysEqual([testObject],[testArray]));
34+ t.false(areArgumentArraysEqual(['a'], ['b']));
35+ t.false(areArgumentArraysEqual([1], [2]));
36+ t.false(areArgumentArraysEqual([true], [false]));
37+ t.false(areArgumentArraysEqual([undefined], [null]));
38+ t.false(areArgumentArraysEqual([testObject], [testArray]));
2939
3040 // multi
31- t.true(areArgumentArraysEqual([1,2, 3], [1,2, 3]));
41+ t.true(areArgumentArraysEqual([1, 2, 3], [1, 2, 3]));
3242
33- t.false(areArgumentArraysEqual([1,2, 3], [3,2, 1]));
34- t.false(areArgumentArraysEqual([1,2,3, 4], [1,2, 3]));
35- t.false(areArgumentArraysEqual([1,2, 3], [1,2,3, 4]));
36- })
43+ t.false(areArgumentArraysEqual([1, 2, 3], [3, 2, 1]));
44+ t.false(areArgumentArraysEqual([1, 2, 3, 4], [1, 2, 3]));
45+ t.false(areArgumentArraysEqual([1, 2, 3], [1, 2, 3, 4]));
46+ });
3747
3848test('areArgumentArraysEqual should return valid result using Arg.all()', t => {
39- t.true(areArgumentArraysEqual([Arg.all()],[]));
40- t.true(areArgumentArraysEqual([Arg.all()],[0]));
41- t.true(areArgumentArraysEqual([Arg.all()],[1]));
42- t.true(areArgumentArraysEqual([Arg.all()],['string']));
43- t.true(areArgumentArraysEqual([Arg.all()],[true]));
44- t.true(areArgumentArraysEqual([Arg.all()],[false]));
45- t.true(areArgumentArraysEqual([Arg.all()],[null]));
46- t.true(areArgumentArraysEqual([Arg.all()],[undefined]));
47- t.true(areArgumentArraysEqual([Arg.all()],[1,2]));
48- t.true(areArgumentArraysEqual([Arg.all()],['string1', 'string2']));
49+ t.true(areArgumentArraysEqual([Arg.all()], []));
50+ t.true(areArgumentArraysEqual([Arg.all()], [0]));
51+ t.true(areArgumentArraysEqual([Arg.all()], [1]));
52+ t.true(areArgumentArraysEqual([Arg.all()], ['string']));
53+ t.true(areArgumentArraysEqual([Arg.all()], [true]));
54+ t.true(areArgumentArraysEqual([Arg.all()], [false]));
55+ t.true(areArgumentArraysEqual([Arg.all()], [null]));
56+ t.true(areArgumentArraysEqual([Arg.all()], [undefined]));
57+ t.true(areArgumentArraysEqual([Arg.all()], [1, 2]));
58+ t.true(areArgumentArraysEqual([Arg.all()], ['string1', 'string2']));
59+ t.true(areArgumentArraysEqual([Arg.all()], [parent, root]));
4960})
5061
5162test('areArgumentArraysEqual should return valid result using Arg.any()', t => {
@@ -60,6 +71,8 @@ test('areArgumentArraysEqual should return valid result using Arg.any()', t => {
6071 t.true(areArgumentArraysEqual([Arg.any()], [testArray]));
6172 t.true(areArgumentArraysEqual([Arg.any()], [testFunc]));
6273 t.true(areArgumentArraysEqual([Arg.any()], []));
74+ t.true(areArgumentArraysEqual([Arg.any()], [parent]));
75+ t.true(areArgumentArraysEqual([Arg.any()], [root]));
6376
6477 t.true(areArgumentArraysEqual([Arg.any('string')], ['foo']));
6578 t.true(areArgumentArraysEqual([Arg.any('number')], [1]));
@@ -74,6 +87,8 @@ test('areArgumentArraysEqual should return valid result using Arg.any()', t => {
7487 t.false(areArgumentArraysEqual([Arg.any('object')], ['foo']));
7588 t.false(areArgumentArraysEqual([Arg.any('array')], ['bar']));
7689 t.false(areArgumentArraysEqual([Arg.any('function')], ['foo']));
90+ t.true(areArgumentArraysEqual([Arg.any('object')], [parent]));
91+ t.true(areArgumentArraysEqual([Arg.any('object')], [root]));
7792})
7893
7994test('areArgumentArraysEqual should return valid result using Arg.is()', t => {
0 commit comments