// Copyright (C) 2023 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import { deserializeStateObject, isSerializedBigint, serializeStateObject, } from './upload_utils'; describe('isSerializedBigint', () => { it('should return true for a valid serialized bigint', () => { const value = { __kind: 'bigint', value: '1234567890', }; expect(isSerializedBigint(value)).toBeTruthy(); }); it('should return false for a null value', () => { expect(isSerializedBigint(null)).toBeFalsy(); }); it('should return false for a non-object value', () => { expect(isSerializedBigint(123)).toBeFalsy(); }); it('should return false for a non-serialized bigint value', () => { const value = { __kind: 'not-bigint', value: '1234567890', }; expect(isSerializedBigint(value)).toBeFalsy(); }); }); describe('serializeStateObject', () => { it('should serialize a simple object', () => { const object = { a: 1, b: 2, c: 3, }; const expectedJson = `{"a":1,"b":2,"c":3}`; expect(serializeStateObject(object)).toEqual(expectedJson); }); it('should serialize a bigint', () => { const object = { a: 123456789123456789n, }; const expectedJson = `{"a":{"__kind":"bigint","value":"123456789123456789"}}`; expect(serializeStateObject(object)).toEqual(expectedJson); }); it('should not serialize a non-serializable property', () => { const object = { a: 1, b: 2, c: 3, nonSerializableState: 4, }; const expectedJson = `{"a":1,"b":2,"c":3}`; expect(serializeStateObject(object)).toEqual(expectedJson); }); }); describe('deserializeStateObject', () => { it('should deserialize a simple object', () => { const json = `{"a":1,"b":2,"c":3}`; const expectedObject = { a: 1, b: 2, c: 3, }; expect(deserializeStateObject(json)).toEqual(expectedObject); }); it('should deserialize a bigint', () => { const json = `{"a":{"__kind":"bigint","value":"123456789123456789"}}`; const expectedObject = { a: 123456789123456789n, }; expect(deserializeStateObject(json)).toEqual(expectedObject); }); it('should deserialize a null', () => { const json = `{"a":null}`; const expectedObject = { a: null, }; expect(deserializeStateObject(json)).toEqual(expectedObject); }); });