tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_UrlbarUtils_copySnakeKeysToCamel.js (5251B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 // Tests `UrlbarUtils.copySnakeKeysToCamel()`.
      5 
      6 "use strict";
      7 
      8 add_task(async function noSnakes() {
      9  Assert.deepEqual(
     10    UrlbarUtils.copySnakeKeysToCamel({
     11      foo: "foo key",
     12      bar: "bar key",
     13    }),
     14    {
     15      foo: "foo key",
     16      bar: "bar key",
     17    }
     18  );
     19 });
     20 
     21 add_task(async function oneSnake() {
     22  Assert.deepEqual(
     23    UrlbarUtils.copySnakeKeysToCamel({
     24      foo: "foo key",
     25      snake_key: "snake key",
     26      bar: "bar key",
     27    }),
     28    {
     29      foo: "foo key",
     30      snake_key: "snake key",
     31      bar: "bar key",
     32      snakeKey: "snake key",
     33    }
     34  );
     35 });
     36 
     37 add_task(async function manySnakeKeys() {
     38  Assert.deepEqual(
     39    UrlbarUtils.copySnakeKeysToCamel({
     40      foo: "foo key",
     41      snake_one: "snake key 1",
     42      bar: "bar key",
     43      and_snake_two_also: "snake key 2",
     44      snake_key_3: "snake key 3",
     45      snake_key_4_too: "snake key 4",
     46    }),
     47    {
     48      foo: "foo key",
     49      snake_one: "snake key 1",
     50      bar: "bar key",
     51      and_snake_two_also: "snake key 2",
     52      snake_key_3: "snake key 3",
     53      snake_key_4_too: "snake key 4",
     54      snakeOne: "snake key 1",
     55      andSnakeTwoAlso: "snake key 2",
     56      snakeKey3: "snake key 3",
     57      snakeKey4Too: "snake key 4",
     58    }
     59  );
     60 });
     61 
     62 add_task(async function singleChars() {
     63  Assert.deepEqual(
     64    UrlbarUtils.copySnakeKeysToCamel({
     65      a: "a key",
     66      b_c: "b_c key",
     67      d_e_f: "d_e_f key",
     68      g_h_i_j: "g_h_i_j key",
     69    }),
     70    {
     71      a: "a key",
     72      b_c: "b_c key",
     73      d_e_f: "d_e_f key",
     74      g_h_i_j: "g_h_i_j key",
     75      bC: "b_c key",
     76      dEF: "d_e_f key",
     77      gHIJ: "g_h_i_j key",
     78    }
     79  );
     80 });
     81 
     82 add_task(async function numbers() {
     83  Assert.deepEqual(
     84    UrlbarUtils.copySnakeKeysToCamel({
     85      snake_1: "snake 1 key",
     86      snake_2_too: "snake 2 key",
     87      "3_snakes": "snake 3 key",
     88    }),
     89    {
     90      snake_1: "snake 1 key",
     91      snake_2_too: "snake 2 key",
     92      "3_snakes": "snake 3 key",
     93      snake1: "snake 1 key",
     94      snake2Too: "snake 2 key",
     95      "3Snakes": "snake 3 key",
     96    }
     97  );
     98 });
     99 
    100 add_task(async function leadingUnderscores() {
    101  Assert.deepEqual(
    102    UrlbarUtils.copySnakeKeysToCamel({
    103      _foo: "foo key",
    104      __bar: "bar key",
    105      _snake_with_leading: "snake key 1",
    106      __snake_with_two_leading: "snake key 2",
    107    }),
    108    {
    109      _foo: "foo key",
    110      __bar: "bar key",
    111      _snake_with_leading: "snake key 1",
    112      __snake_with_two_leading: "snake key 2",
    113      _snakeWithLeading: "snake key 1",
    114      __snakeWithTwoLeading: "snake key 2",
    115    }
    116  );
    117 });
    118 
    119 add_task(async function trailingUnderscores() {
    120  Assert.deepEqual(
    121    UrlbarUtils.copySnakeKeysToCamel({
    122      foo_: "foo key",
    123      bar__: "bar key",
    124      snake_with_trailing_: "snake key 1",
    125      snake_with_two_trailing__: "snake key 2",
    126    }),
    127    {
    128      foo_: "foo key",
    129      bar__: "bar key",
    130      snake_with_trailing_: "snake key 1",
    131      snake_with_two_trailing__: "snake key 2",
    132      snakeWithTrailing_: "snake key 1",
    133      snakeWithTwoTrailing__: "snake key 2",
    134    }
    135  );
    136 });
    137 
    138 add_task(async function leadingAndTrailingUnderscores() {
    139  Assert.deepEqual(
    140    UrlbarUtils.copySnakeKeysToCamel({
    141      _foo_: "foo key",
    142      _extra_long_snake_: "snake key",
    143    }),
    144    {
    145      _foo_: "foo key",
    146      _extra_long_snake_: "snake key",
    147      _extraLongSnake_: "snake key",
    148    }
    149  );
    150 });
    151 
    152 add_task(async function consecutiveUnderscores() {
    153  Assert.deepEqual(
    154    UrlbarUtils.copySnakeKeysToCamel({ weird__snake: "snake key" }),
    155    {
    156      weird__snake: "snake key",
    157      weird_Snake: "snake key",
    158    }
    159  );
    160 });
    161 
    162 add_task(async function nested() {
    163  let obj = UrlbarUtils.copySnakeKeysToCamel({
    164    foo: "foo key",
    165    nested: {
    166      bar: "bar key",
    167      baz: {
    168        snake_in_baz: "snake_in_baz key",
    169      },
    170      snake_in_nested: {
    171        snake_in_snake_in_nested: "snake_in_snake_in_nested key",
    172      },
    173    },
    174    snake_key: {
    175      snake_in_snake_key: "snake_in_snake_key key",
    176    },
    177  });
    178 
    179  Assert.equal(obj.foo, "foo key");
    180  Assert.equal(obj.nested.bar, "bar key");
    181  Assert.deepEqual(obj.nested.baz, {
    182    snake_in_baz: "snake_in_baz key",
    183    snakeInBaz: "snake_in_baz key",
    184  });
    185  Assert.deepEqual(obj.nested.snake_in_nested, {
    186    snake_in_snake_in_nested: "snake_in_snake_in_nested key",
    187    snakeInSnakeInNested: "snake_in_snake_in_nested key",
    188  });
    189  Assert.equal(obj.nested.snake_in_nested, obj.nested.snakeInNested);
    190  Assert.deepEqual(obj.snake_key, {
    191    snake_in_snake_key: "snake_in_snake_key key",
    192    snakeInSnakeKey: "snake_in_snake_key key",
    193  });
    194  Assert.equal(obj.snake_key, obj.snakeKey);
    195 });
    196 
    197 add_task(async function noOverwrite_ok() {
    198  Assert.deepEqual(
    199    UrlbarUtils.copySnakeKeysToCamel(
    200      {
    201        foo: "foo key",
    202        snake_key: "snake key",
    203      },
    204      false
    205    ),
    206    {
    207      foo: "foo key",
    208      snake_key: "snake key",
    209      snakeKey: "snake key",
    210    }
    211  );
    212 });
    213 
    214 add_task(async function noOverwrite_throws() {
    215  Assert.throws(
    216    () =>
    217      UrlbarUtils.copySnakeKeysToCamel(
    218        {
    219          snake_key: "snake key",
    220          snakeKey: "snake key",
    221        },
    222        false
    223      ),
    224    /Can't copy snake_case key/
    225  );
    226 });