binary-data
Version:
Declarative binary data encoder / decoder.
1 lines • 27.4 kB
Source Map (JSON)
{"version":3,"sources":["array.js"],"names":["array","require","describe","rstream","test","itemBytes","items","wstream","itemType","decode","encode","jest","fn","bytes","type","length","expect","toHaveBeenCalledTimes","toBe","requiredSize","toThrow","first","second","shift","toEqual","encodingLength","meta","context","lengthType","toBeCalledWith","lengthBytes","a","schema","firstItem","secondItem","callback","mockImplementation"],"mappings":"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","file":"array.js","sourcesContent":["'use strict';\n\nconst array = require('types/array');\n\ndescribe('array', () => {\n const rstream = {};\n\n describe('fixed length', () => {\n describe('length is the number of items', () => {\n test('encode', () => {\n const itemBytes = 7;\n const items = [10, 20];\n const wstream = {};\n\n const itemType = {\n decode() {},\n encode: jest.fn(),\n };\n\n itemType.encode.bytes = itemBytes;\n\n const type = array(itemType, items.length);\n type.encode(items, wstream);\n\n expect(itemType.encode).toHaveBeenCalledTimes(items.length);\n expect(type.encode.bytes).toBe(itemBytes * items.length);\n });\n\n test('throws when length != items.length', () => {\n const items = [10, 20];\n const wstream = {};\n\n const itemType = {\n decode() {},\n encode: jest.fn(),\n };\n\n const requiredSize = items.length + 1;\n const type = array(itemType, requiredSize);\n\n expect(() => type.encode(items, wstream)).toThrow(\n `Argument #1 required length ${requiredSize} instead of ${\n items.length\n }`\n );\n });\n\n test('decode', () => {\n const length = 2;\n const bytes = 10;\n\n const first = 1;\n const second = 2;\n const items = [first, second];\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = bytes;\n\n const type = array(itemType, length);\n\n expect(type.decode(rstream)).toEqual([first, second]);\n expect(type.decode.bytes).toBe(bytes * length);\n });\n\n test('encodingLength', () => {\n const items = [10, 20];\n const bytes = 3;\n\n const itemType = {\n encode() {},\n decode() {},\n encodingLength() {\n return bytes;\n },\n };\n\n const type = array(itemType, items.length);\n\n expect(type.encodingLength(items)).toBe(items.length * bytes);\n });\n });\n\n describe('length is the number of bytes', () => {\n test('encode', () => {\n const bytes = 7;\n const items = [10, 20];\n const length = bytes * items.length;\n const wstream = {};\n\n const itemType = {\n encode: jest.fn(),\n decode() {},\n encodingLength() {\n return bytes;\n },\n };\n\n itemType.encode.bytes = bytes;\n\n const type = array(itemType, length, 'bytes');\n type.encode(items, wstream);\n\n expect(itemType.encode).toHaveBeenCalledTimes(items.length);\n expect(type.encode.bytes).toBe(length);\n });\n\n test('decode', () => {\n const first = 1;\n const second = 2;\n const items = [first, second];\n\n const bytes = 3;\n const length = bytes * items.length;\n\n const meta = {\n bytes: 0,\n context: {},\n };\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = bytes;\n const type = array(itemType, length, 'bytes');\n\n expect(type.decode(rstream, meta)).toEqual([first, second]);\n expect(type.decode.bytes).toBe(length);\n });\n\n test('encodingLength', () => {\n const items = [10, 20];\n const bytes = 3;\n const length = items.length * bytes;\n\n const itemType = {\n encode() {},\n decode() {},\n encodingLength() {\n return bytes;\n },\n };\n\n const type = array(itemType, length, 'bytes');\n\n expect(type.encodingLength(items)).toBe(length);\n });\n });\n });\n\n describe('length is type', () => {\n describe('length is the number of items', () => {\n test('encode', () => {\n const items = [100, 200, 300];\n const wstream = {};\n\n const lengthType = {\n decode() {},\n encode: jest.fn(),\n };\n\n lengthType.encode.bytes = 2;\n\n const itemType = {\n decode() {},\n encode: jest.fn(),\n };\n\n itemType.encode.bytes = 3;\n\n const type = array(itemType, lengthType);\n type.encode(items, wstream);\n\n expect(lengthType.encode).toHaveBeenCalledTimes(1);\n expect(lengthType.encode).toBeCalledWith(items.length, wstream);\n expect(itemType.encode).toHaveBeenCalledTimes(items.length);\n expect(type.encode.bytes).toBe(\n itemType.encode.bytes * items.length + lengthType.encode.bytes\n );\n });\n\n test('decode', () => {\n const first = 1;\n const second = 2;\n const items = [first, second];\n\n const { length } = items;\n const itemBytes = 3;\n const lengthBytes = 3;\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = itemBytes;\n\n const lengthType = {\n decode() {\n return length;\n },\n encode() {},\n };\n\n lengthType.decode.bytes = lengthBytes;\n\n const type = array(itemType, lengthType);\n\n expect(type.decode(rstream)).toEqual([first, second]);\n expect(type.decode.bytes).toBe(itemBytes * length + lengthBytes);\n });\n\n test('encodingLength', () => {\n const items = [10, 20];\n const itemBytes = 3;\n const lengthBytes = 5;\n\n const lengthType = {\n encode() {},\n decode() {},\n encodingLength() {\n return lengthBytes;\n },\n };\n\n const itemType = {\n encode() {},\n decode() {},\n encodingLength() {\n return itemBytes;\n },\n };\n\n const type = array(itemType, lengthType);\n\n expect(type.encodingLength(items)).toBe(\n items.length * itemBytes + lengthBytes\n );\n });\n });\n\n describe('length is the number of bytes', () => {\n test('encode', () => {\n const items = [100, 200, 300];\n const itemBytes = 4;\n const wstream = {};\n\n const lengthType = {\n decode() {},\n encode: jest.fn(),\n };\n\n lengthType.encode.bytes = 2;\n\n const itemType = {\n decode() {},\n encode: jest.fn(),\n encodingLength() {\n return itemBytes;\n },\n };\n\n itemType.encode.bytes = itemBytes;\n\n const type = array(itemType, lengthType, 'bytes');\n type.encode(items, wstream);\n\n expect(lengthType.encode).toHaveBeenCalledTimes(1);\n expect(lengthType.encode).toBeCalledWith(\n items.length * itemBytes,\n wstream\n );\n expect(itemType.encode).toHaveBeenCalledTimes(items.length);\n expect(type.encode.bytes).toBe(\n itemBytes * items.length + lengthType.encode.bytes\n );\n });\n\n test('decode', () => {\n const first = 1;\n const second = 2;\n const items = [first, second];\n\n const { length } = items;\n const itemBytes = 3;\n const lengthBytes = 3;\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = itemBytes;\n\n const lengthType = {\n decode() {\n return length * itemBytes;\n },\n encode() {},\n };\n\n lengthType.decode.bytes = lengthBytes;\n\n const type = array(itemType, lengthType, 'bytes');\n\n expect(type.decode(rstream)).toEqual([first, second]);\n expect(type.decode.bytes).toBe(itemBytes * length + lengthBytes);\n });\n\n test('encodingLength', () => {\n const items = [10, 20];\n const itemBytes = 3;\n const lengthBytes = 5;\n\n const lengthType = {\n encode() {},\n decode() {},\n encodingLength() {\n return lengthBytes;\n },\n };\n\n const itemType = {\n encode() {},\n decode() {},\n encodingLength() {\n return itemBytes;\n },\n };\n\n const type = array(itemType, lengthType, 'bytes');\n\n expect(type.encodingLength(items)).toBe(\n items.length * itemBytes + lengthBytes\n );\n });\n });\n });\n\n describe('item is an user defined type', () => {\n test('encode', () => {\n const wstream = {};\n const items = [{ a: 100 }, { a: 200 }, { a: 300 }];\n const itemBytes = 4;\n\n const schema = {\n a: {\n encode: jest.fn(),\n decode() {},\n },\n };\n\n schema.a.encode.bytes = itemBytes;\n\n const type = array(schema, items.length);\n type.encode(items, wstream);\n\n expect(schema.a.encode).toHaveBeenCalledTimes(items.length);\n expect(type.encode.bytes).toBe(itemBytes * items.length);\n });\n\n test('decode', () => {\n const firstItem = 1;\n const secondItem = 2;\n const items = [firstItem, secondItem];\n\n const { length } = items;\n const itemBytes = 2;\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = itemBytes;\n\n const schema = {\n a: itemType,\n };\n\n const type = array(schema, length);\n\n expect(type.decode(rstream)).toEqual([\n { a: firstItem },\n { a: secondItem },\n ]);\n expect(type.decode.bytes).toBe(itemBytes * length);\n });\n\n test('encodingLength', () => {\n const itemBytes = 3;\n const items = [{ a: 100 }, { a: 200 }, { a: 300 }];\n\n const schema = {\n a: {\n encode() {},\n decode() {},\n encodingLength() {\n return itemBytes;\n },\n },\n };\n\n const type = array(schema, items.length);\n\n expect(type.encodingLength(items)).toBe(itemBytes * items.length);\n });\n });\n\n describe('length is function', () => {\n describe('length is the number of items', () => {\n test('decode', () => {\n const first = 1;\n const second = 2;\n const items = [first, second];\n\n const { length } = items;\n const bytes = 3;\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = bytes;\n const callback = jest.fn().mockImplementation(() => length);\n\n const type = array(itemType, callback);\n\n expect(type.decode(rstream)).toEqual([first, second]);\n expect(callback).toHaveBeenCalledTimes(1);\n expect(type.decode.bytes).toBe(bytes * length);\n });\n\n test('encode', () => {\n const wstream = {};\n const items = [100, 200, 300];\n const { length } = items;\n const bytes = 4;\n\n const itemType = {\n decode() {},\n encode: jest.fn(),\n };\n\n itemType.encode.bytes = bytes;\n\n const callback = jest.fn().mockImplementation(() => length);\n\n const type = array(itemType, callback);\n type.encode(items, wstream);\n\n expect(callback).toHaveBeenCalledTimes(1);\n expect(itemType.encode).toHaveBeenCalledTimes(items.length);\n expect(type.encode.bytes).toBe(bytes * items.length);\n });\n\n test('encodingLength', () => {\n const items = [10, 20];\n const bytes = 3;\n\n const itemType = {\n encode() {},\n decode() {},\n encodingLength() {\n return bytes;\n },\n };\n\n const type = array(itemType, () => {});\n\n expect(type.encodingLength(items)).toBe(items.length * bytes);\n });\n });\n\n describe('length is the number of bytes', () => {\n test('decode', () => {\n const first = 1;\n const second = 2;\n const items = [first, second];\n\n const bytes = 3;\n const { length } = items;\n\n const itemType = {\n decode() {\n return items.shift();\n },\n encode() {},\n };\n\n itemType.decode.bytes = bytes;\n const callback = jest.fn().mockImplementation(() => length * bytes);\n\n const type = array(itemType, callback, 'bytes');\n\n expect(type.decode(rstream)).toEqual([first, second]);\n expect(callback).toHaveBeenCalledTimes(1);\n expect(type.decode.bytes).toBe(length * bytes);\n });\n\n test('encode', () => {\n const wstream = {};\n const items = [100, 200, 300];\n\n const bytes = 4;\n const { length } = items;\n\n const callback = jest.fn().mockImplementation(() => length * bytes);\n\n const itemType = {\n decode() {},\n encode: jest.fn(),\n encodingLength() {\n return bytes;\n },\n };\n\n itemType.encode.bytes = bytes;\n\n const type = array(itemType, callback, 'bytes');\n type.encode(items, wstream);\n\n expect(callback).toHaveBeenCalledTimes(1);\n expect(itemType.encode).toHaveBeenCalledTimes(length);\n expect(type.encode.bytes).toBe(bytes * length);\n });\n\n test('encodingLength', () => {\n const items = [10, 20];\n const bytes = 3;\n const length = items.length * bytes;\n\n const itemType = {\n encode() {},\n decode() {},\n encodingLength() {\n return bytes;\n },\n };\n\n const schema = array(itemType, () => {}, 'bytes');\n\n expect(schema.encodingLength(items)).toBe(length);\n });\n });\n });\n});\n"]}