226 lines
5.1 KiB
JavaScript
226 lines
5.1 KiB
JavaScript
/* 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/
|
|
);
|
|
});
|