Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
// 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/
);
});