summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/unit/test_UrlbarUtils_copySnakeKeysToCamel.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/unit/test_UrlbarUtils_copySnakeKeysToCamel.js')
-rw-r--r--browser/components/urlbar/tests/unit/test_UrlbarUtils_copySnakeKeysToCamel.js226
1 files changed, 226 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/unit/test_UrlbarUtils_copySnakeKeysToCamel.js b/browser/components/urlbar/tests/unit/test_UrlbarUtils_copySnakeKeysToCamel.js
new file mode 100644
index 0000000000..4b5352bc2a
--- /dev/null
+++ b/browser/components/urlbar/tests/unit/test_UrlbarUtils_copySnakeKeysToCamel.js
@@ -0,0 +1,226 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Tests `UrlbarUtils.copySnakeKeysToCamel()`.
+
+"use strict";
+
+add_task(async function noSnakes() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ foo: "foo key",
+ bar: "bar key",
+ }),
+ {
+ foo: "foo key",
+ bar: "bar key",
+ }
+ );
+});
+
+add_task(async function oneSnake() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ foo: "foo key",
+ snake_key: "snake key",
+ bar: "bar key",
+ }),
+ {
+ foo: "foo key",
+ snake_key: "snake key",
+ bar: "bar key",
+ snakeKey: "snake key",
+ }
+ );
+});
+
+add_task(async function manySnakeKeys() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ foo: "foo key",
+ snake_one: "snake key 1",
+ bar: "bar key",
+ and_snake_two_also: "snake key 2",
+ snake_key_3: "snake key 3",
+ snake_key_4_too: "snake key 4",
+ }),
+ {
+ foo: "foo key",
+ snake_one: "snake key 1",
+ bar: "bar key",
+ and_snake_two_also: "snake key 2",
+ snake_key_3: "snake key 3",
+ snake_key_4_too: "snake key 4",
+ snakeOne: "snake key 1",
+ andSnakeTwoAlso: "snake key 2",
+ snakeKey3: "snake key 3",
+ snakeKey4Too: "snake key 4",
+ }
+ );
+});
+
+add_task(async function singleChars() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ a: "a key",
+ b_c: "b_c key",
+ d_e_f: "d_e_f key",
+ g_h_i_j: "g_h_i_j key",
+ }),
+ {
+ a: "a key",
+ b_c: "b_c key",
+ d_e_f: "d_e_f key",
+ g_h_i_j: "g_h_i_j key",
+ bC: "b_c key",
+ dEF: "d_e_f key",
+ gHIJ: "g_h_i_j key",
+ }
+ );
+});
+
+add_task(async function numbers() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ snake_1: "snake 1 key",
+ snake_2_too: "snake 2 key",
+ "3_snakes": "snake 3 key",
+ }),
+ {
+ snake_1: "snake 1 key",
+ snake_2_too: "snake 2 key",
+ "3_snakes": "snake 3 key",
+ snake1: "snake 1 key",
+ snake2Too: "snake 2 key",
+ "3Snakes": "snake 3 key",
+ }
+ );
+});
+
+add_task(async function leadingUnderscores() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ _foo: "foo key",
+ __bar: "bar key",
+ _snake_with_leading: "snake key 1",
+ __snake_with_two_leading: "snake key 2",
+ }),
+ {
+ _foo: "foo key",
+ __bar: "bar key",
+ _snake_with_leading: "snake key 1",
+ __snake_with_two_leading: "snake key 2",
+ _snakeWithLeading: "snake key 1",
+ __snakeWithTwoLeading: "snake key 2",
+ }
+ );
+});
+
+add_task(async function trailingUnderscores() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ foo_: "foo key",
+ bar__: "bar key",
+ snake_with_trailing_: "snake key 1",
+ snake_with_two_trailing__: "snake key 2",
+ }),
+ {
+ foo_: "foo key",
+ bar__: "bar key",
+ snake_with_trailing_: "snake key 1",
+ snake_with_two_trailing__: "snake key 2",
+ snakeWithTrailing_: "snake key 1",
+ snakeWithTwoTrailing__: "snake key 2",
+ }
+ );
+});
+
+add_task(async function leadingAndTrailingUnderscores() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({
+ _foo_: "foo key",
+ _extra_long_snake_: "snake key",
+ }),
+ {
+ _foo_: "foo key",
+ _extra_long_snake_: "snake key",
+ _extraLongSnake_: "snake key",
+ }
+ );
+});
+
+add_task(async function consecutiveUnderscores() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel({ weird__snake: "snake key" }),
+ {
+ weird__snake: "snake key",
+ weird_Snake: "snake key",
+ }
+ );
+});
+
+add_task(async function nested() {
+ let obj = UrlbarUtils.copySnakeKeysToCamel({
+ foo: "foo key",
+ nested: {
+ bar: "bar key",
+ baz: {
+ snake_in_baz: "snake_in_baz key",
+ },
+ snake_in_nested: {
+ snake_in_snake_in_nested: "snake_in_snake_in_nested key",
+ },
+ },
+ snake_key: {
+ snake_in_snake_key: "snake_in_snake_key key",
+ },
+ });
+
+ Assert.equal(obj.foo, "foo key");
+ Assert.equal(obj.nested.bar, "bar key");
+ Assert.deepEqual(obj.nested.baz, {
+ snake_in_baz: "snake_in_baz key",
+ snakeInBaz: "snake_in_baz key",
+ });
+ Assert.deepEqual(obj.nested.snake_in_nested, {
+ snake_in_snake_in_nested: "snake_in_snake_in_nested key",
+ snakeInSnakeInNested: "snake_in_snake_in_nested key",
+ });
+ Assert.equal(obj.nested.snake_in_nested, obj.nested.snakeInNested);
+ Assert.deepEqual(obj.snake_key, {
+ snake_in_snake_key: "snake_in_snake_key key",
+ snakeInSnakeKey: "snake_in_snake_key key",
+ });
+ Assert.equal(obj.snake_key, obj.snakeKey);
+});
+
+add_task(async function noOverwrite_ok() {
+ Assert.deepEqual(
+ UrlbarUtils.copySnakeKeysToCamel(
+ {
+ foo: "foo key",
+ snake_key: "snake key",
+ },
+ false
+ ),
+ {
+ foo: "foo key",
+ snake_key: "snake key",
+ snakeKey: "snake key",
+ }
+ );
+});
+
+add_task(async function noOverwrite_throws() {
+ Assert.throws(
+ () =>
+ UrlbarUtils.copySnakeKeysToCamel(
+ {
+ snake_key: "snake key",
+ snakeKey: "snake key",
+ },
+ false
+ ),
+ /Can't copy snake_case key/
+ );
+});