feat(Sequence)
This commit is contained in:
43
test/Sequence.test.js
Normal file
43
test/Sequence.test.js
Normal file
@ -0,0 +1,43 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { ConstString, Int, isHeadless, parse, Sequence, serialize, sizeof } from "../src";
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from '.'
|
||||
|
||||
describe(Sequence.name, () => {
|
||||
const Type = Sequence([Int(8, 'unsigned'), String, Boolean])
|
||||
const type = [255, 'hello', true]
|
||||
const type_dv = filledDataView([
|
||||
0xFF,
|
||||
0x00, 0x00, 0x00, 0x05,
|
||||
0x68, 0x65, 0x6C, 0x6C, 0x6F,
|
||||
0x01,
|
||||
])
|
||||
|
||||
test('serialize', () => {
|
||||
let actual = sizedDataView(10)
|
||||
expect(() => serialize(actual, type, Type)).toThrow()
|
||||
|
||||
actual = sizedDataView(sizeof(type, Type))
|
||||
serialize(actual, type, Type)
|
||||
|
||||
expectDataViewEqual(actual, type_dv)
|
||||
})
|
||||
|
||||
test('parse', () => {
|
||||
expect(parse(type_dv, Type)).toEqual(type)
|
||||
})
|
||||
|
||||
test('isHeadless', () => {
|
||||
expect(isHeadless(Sequence([Number, String]))).toBeTruthy()
|
||||
expect(isHeadless(Sequence([Number, ConstString(4)]))).toBeFalsy()
|
||||
})
|
||||
|
||||
test('sizeof', () => {
|
||||
expect(sizeof(Sequence([Number, ConstString(4)]))).toEqual(12)
|
||||
|
||||
expect(() => sizeof(Sequence([Number, String]))).toThrow()
|
||||
expect(() => sizeof([1], Sequence([Number, String]))).toThrow()
|
||||
expect(() => sizeof([1, 'hello', 3], Sequence([Number, String]))).toThrow()
|
||||
|
||||
expect(sizeof([1, 'hello'], Sequence([Number, String]))).toEqual(17)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user