tenfourfox/dom/activities/tests/unit/test_activityFilters.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

158 lines
9.0 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function run_test() {
Components.utils.import("resource:///modules/ActivitiesServiceFilter.jsm")
do_check_true(!!ActivitiesServiceFilter);
// No requests, no filters:
do_check_true(ActivitiesServiceFilter.match(null, null));
do_check_true(ActivitiesServiceFilter.match({}, {}));
// No filters:
do_check_true(ActivitiesServiceFilter.match({foobar: 42}, null));
// Empty request:
do_check_true(ActivitiesServiceFilter.match({}, {a: 'foobar', b: [1, 2, 3], c: 42}));
// Simple match:
do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_false(ActivitiesServiceFilter.match({a: 'foobar', b: 2, c: true},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_true(ActivitiesServiceFilter.match({a: 'foobar', b: 2, c: 42},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_false(ActivitiesServiceFilter.match({a: 'foobar2'},
{a: 'foobar', b: [1, 2, 3], c: 42}));
// Simple match in array:
do_check_true(ActivitiesServiceFilter.match({b: 2},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_false(ActivitiesServiceFilter.match({b: 4},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_true(ActivitiesServiceFilter.match({b: [2, 4]},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_false(ActivitiesServiceFilter.match({b: [4, 5]},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_false(ActivitiesServiceFilter.match({a: [4, 'foobar2']},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_true(ActivitiesServiceFilter.match({a: [4, 'foobar']},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_true(ActivitiesServiceFilter.match({a: ['foo', 'bar']},
{a: 'foo'}));
// Unknown property
do_check_true(ActivitiesServiceFilter.match({k: 4},
{a: 'foobar', b: [1, 2, 3], c: 42}));
do_check_true(ActivitiesServiceFilter.match({k: [1,2,3,4]},
{a: 'foobar', b: [1, 2, 3], c: 42}));
// Required/non required
do_check_false(ActivitiesServiceFilter.match({},
{a: { required: true, value: 'foobar'}}));
do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
{a: { required: true, value: 'foobar'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'foobar2'},
{a: { required: true, value: 'foobar'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'foobar2'},
{a: { required: true, value: ['a', 'b', 'foobar']}}));
do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
{a: { required: true, value: ['a', 'b', 'foobar']}}));
do_check_true(ActivitiesServiceFilter.match({a: ['k', 'z', 'foobar']},
{a: { required: true, value: ['a', 'b', 'foobar']}}));
do_check_false(ActivitiesServiceFilter.match({a: ['k', 'z', 'foobar2']},
{a: { required: true, value: ['a', 'b', 'foobar']}}));
// Empty values
do_check_true(ActivitiesServiceFilter.match({a: 42},
{a: { required: true}}));
do_check_false(ActivitiesServiceFilter.match({},
{a: { required: true}}));
// Boolean
do_check_true(ActivitiesServiceFilter.match({a: false},
{a: { required: true, value: false}}));
do_check_false(ActivitiesServiceFilter.match({a: true},
{a: { required: true, value: false}}));
do_check_true(ActivitiesServiceFilter.match({a: [false, true]},
{a: { required: true, value: false}}));
do_check_true(ActivitiesServiceFilter.match({a: [false, true]},
{a: { required: true, value: [false,true]}}));
// Number
do_check_true(ActivitiesServiceFilter.match({a: 42},
{a: { required: true, value: 42}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, value: 42}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 1}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 2}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 3}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, max: 1}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, max: 2}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, max: 3}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 1, max: 1}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 1, max: 2}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 2, max: 2}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, value: 'foo'}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 100, max: 0}}));
do_check_true(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 'a', max: 'b'}}));
do_check_false(ActivitiesServiceFilter.match({a: 2},
{a: { required: true, min: 10, max: 1}}));
// String
do_check_true(ActivitiesServiceFilter.match({a: 'foo'},
{a: { required: true, value: 'foo'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'foo2'},
{a: { required: true, value: 'foo'}}));
// Number VS string
do_check_true(ActivitiesServiceFilter.match({a: '42'},
{a: { required: true, value: 42}}));
do_check_true(ActivitiesServiceFilter.match({a: 42},
{a: { required: true, value: '42'}}));
do_check_true(ActivitiesServiceFilter.match({a: '-42e+12'},
{a: { required: true, value: -42e+12}}));
do_check_true(ActivitiesServiceFilter.match({a: 42},
{a: { required: true, min: '1', max: '50'}}));
do_check_true(ActivitiesServiceFilter.match({a: '42'},
{a: 42 }));
do_check_true(ActivitiesServiceFilter.match({a: 42},
{a: '42' }));
do_check_false(ActivitiesServiceFilter.match({a: 42},
{a: { min: '44' }}));
do_check_false(ActivitiesServiceFilter.match({a: 42},
{a: { max: '0' }}));
// String + Pattern
do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
{a: { required: true, pattern: 'foobar'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'aafoobar'},
{a: { required: true, pattern: 'foobar'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'aaFOOsdsad'},
{a: { required: true, pattern: 'foo', patternFlags: 'i'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'aafoobarasdsad'},
{a: { required: true, pattern: 'foo'}}));
do_check_false(ActivitiesServiceFilter.match({a: 'aaFOOsdsad'},
{a: { required: true, pattern: 'foobar'}}));
do_check_true(ActivitiesServiceFilter.match({a: 'FoOBaR'},
{a: { required: true, pattern: 'foobar', patternFlags: 'i'}}));
// Bug 923274
do_check_true(ActivitiesServiceFilter.match({a:[]}, {a:'a'}));
do_check_false(ActivitiesServiceFilter.match({a:[]}, {a: { required: true, value: 'a'}}));
}