diff --git a/tests/meson.build b/tests/meson.build index a6726f7bc..1e84f423c 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -10,7 +10,7 @@ run_test = configure_file( testenv = environment() testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data')) -foreach test : ['insertSorted', 'jsParse', 'markup', 'url'] +foreach test : ['insertSorted', 'jsParse', 'markup', 'params', 'url'] test(test, run_test, args: 'unit/@0@.js'.format(test), env: testenv, diff --git a/tests/unit/params.js b/tests/unit/params.js new file mode 100644 index 000000000..6ac4cc10c --- /dev/null +++ b/tests/unit/params.js @@ -0,0 +1,32 @@ +const JsUnit = imports.jsUnit; +const Params = imports.misc.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' });