blob: bc1285400921f40aec4840d169d50f7aef6b9763 [file] [log] [blame]
/* eslint-disable no-sparse-arrays */
import { expect, test } from '@jest/globals';
import * as protojs from './protojs.js';
const objectLike1 = {
'2': [1, 2, 3],
};
const arrayLike1 = [undefined, [1, 2, 3]];
const rObjectLike1 = [, undefined, [, 1, 2, 3]];
const objectLike2 = {
'1': {
'1': 12,
'2': [
{
'6': [false, false, false],
'7': {
'1': false,
'2': 'Hola',
},
},
{
'6': [true, true, false],
'7': {
'1': false,
'2': 'Test',
},
},
{
'6': [],
'7': {
'1': true,
'2': 'Bye',
},
},
],
'3': 1663,
},
};
const arrayLike2 = [
[
12,
[
[
undefined,
undefined,
undefined,
undefined,
undefined,
[false, false, false],
[false, 'Hola'],
],
[
undefined,
undefined,
undefined,
undefined,
undefined,
[true, true, false],
[false, 'Test'],
],
[
undefined,
undefined,
undefined,
undefined,
undefined,
[],
[true, 'Bye'],
],
],
1663,
],
];
const rObjectLike2 = [
,
[
,
12,
[
,
[
,
undefined,
undefined,
undefined,
undefined,
undefined,
[, false, false, false],
[, false, 'Hola'],
],
[
,
undefined,
undefined,
undefined,
undefined,
undefined,
[, true, true, false],
[, false, 'Test'],
],
[
,
undefined,
undefined,
undefined,
undefined,
undefined,
[],
[, true, 'Bye'],
],
],
1663,
],
];
test('can convert object-like to array-like', () => {
// [ object-like input, array-like verified output ]
const entries = [
[objectLike1, arrayLike1],
[rObjectLike1, arrayLike1],
[objectLike2, arrayLike2],
[rObjectLike2, arrayLike2],
];
entries.forEach(([input, verifiedOutput]) => {
const converted = protojs.inverseCorrectArrayKeys(input);
expect(converted).toStrictEqual(verifiedOutput);
});
});
test('can convert array-like to object-like', () => {
// [ array-like input, object-like verified output ]
const entries = [
[arrayLike1, rObjectLike1],
[arrayLike2, rObjectLike2],
];
entries.forEach(([input, verifiedOutput]) => {
const converted = protojs.correctArrayKeys(input);
expect(converted).toStrictEqual(verifiedOutput);
});
});
test('empty object can be converted to array-like form', () => {
const object = {
1: {},
};
const converted = protojs.inverseCorrectArrayKeys(object);
expect(converted).toStrictEqual([[]]);
});