| 'use strict' |
| var tmatch = require('../') |
| var t = require('tap') |
| |
| t.test('set', function (t) { |
| var obj = { a: 1 } |
| var pattern = new Set([obj, 4]) |
| var a = new Set([1, 2, 3, 4, obj]) |
| var b = new Set([obj, 2, 4, 3, 1]) |
| var c = new Set([4, 3, 2, 1, { a: 1 }]) |
| |
| t.ok(tmatch(a, pattern)) |
| t.ok(tmatch(b, pattern)) |
| t.notOk(tmatch(c, pattern)) |
| t.notOk(tmatch({not: 'a set'}, pattern)) |
| |
| t.ok(tmatch(a, b)) |
| t.notOk(tmatch(a, c)) |
| t.notOk(tmatch(b, c)) |
| t.ok(tmatch(new Set(), new Set())) |
| t.notOk(tmatch(a, Array.from(a))) |
| t.end() |
| }) |
| |
| t.test('map', function (t) { |
| var obj = { a: 1 } |
| var pattern = new Map([[5, { a: 1 }], [obj, '6']]) |
| |
| var a = new Map([[1, 2], [3, 4], [5, obj], [ obj, 6 ]]) |
| var b = new Map([[3, 4], [5, obj], [ obj, 6 ], [1, 2]]) |
| // values match, but not strictly |
| var c = new Map([[3, 4], [5, { a: '1' }], [ obj, 6 ], [1, 2]]) |
| // keys don't match |
| var d = new Map([[3, 4], [5, { a: 1 }], [ { a: 1 }, 6 ], [1, 2]]) |
| |
| t.ok(tmatch(a, pattern)) |
| t.ok(tmatch(b, pattern)) |
| t.ok(tmatch(c, pattern)) |
| t.notOk(tmatch(d, pattern)) |
| t.notOk(tmatch({not: 'a map'}, pattern)) |
| |
| t.ok(tmatch(a, b)) |
| t.ok(tmatch(a, c)) |
| t.ok(tmatch(b, c)) |
| t.ok(tmatch(new Map(), new Map())) |
| t.notOk(tmatch(a, Array.from(a))) |
| t.notOk(tmatch(a, d)) |
| t.notOk(tmatch(a, d)) |
| t.end() |
| }) |