const JsUnit = imports.jsUnit;
import * as Params from 'resource:///org/gnome/shell/misc/params.js';

/**
 * Asserts that two "param" objects have the same properties
 * with the same values.
 *
 * @param {object} params the parsed params
 * @param {object} expected the expected params
 */
function assertParamsEqual(params, expected) {
    for (let p in params) {
        JsUnit.assertTrue(p in expected);
        JsUnit.assertEquals(params[p], expected[p]);
    }
}

let defaults = {
    foo: 'This is a test',
    bar: null,
    baz: 42,
};

assertParamsEqual(
    Params.parse(null, defaults),
    defaults);

assertParamsEqual(
    Params.parse({bar: 23}, defaults),
    {foo: 'This is a test', bar: 23, baz: 42});

JsUnit.assertRaises(
    () => {
        Params.parse({extraArg: 'quz'}, defaults);
    });

assertParamsEqual(
    Params.parse({extraArg: 'quz'}, defaults, true),
    {foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz'});