| /* 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([[]]); |
| }); |