feat(README, filledDataView, sizedDataView)
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { ConstArray, isHeadless, parse, serialize, sizeof, sizeofHead } from "../src";
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from ".";
|
||||
import { expectDataViewEqual } from ".";
|
||||
import { filledDataView, sizedDataView } from "../src";
|
||||
|
||||
describe(ConstArray.name, () => {
|
||||
test('serialize, Number', () => {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { ConstDataView, parse, serialize, sizeofHead } from "../src";
|
||||
import { expectDataViewEqual, filledDataView } from ".";
|
||||
import { expectDataViewEqual } from ".";
|
||||
import { filledDataView } from "../src";
|
||||
|
||||
describe(ConstDataView.name, () => {
|
||||
test('serialize', () => {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { ConstString, parse, serialize, sizeofHead } from "../src";
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from ".";
|
||||
import { expectDataViewEqual } from ".";
|
||||
import { filledDataView, sizedDataView } from '../src'
|
||||
|
||||
describe(ConstString.name, () => {
|
||||
test('serialize', () => {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from '.';
|
||||
import { expectDataViewEqual } from '.';
|
||||
import { filledDataView, sizedDataView } from '../src'
|
||||
import { Int, parse, serialize, sizeof } from "../src";
|
||||
|
||||
describe(Int.name, () => {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { ConstString, Int, isHeadless, parse, Sequence, serialize, sizeof } from "../src";
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from '.'
|
||||
import { expectDataViewEqual } from '.'
|
||||
import { filledDataView, sizedDataView } from '../src'
|
||||
|
||||
describe(Sequence.name, () => {
|
||||
const Type = Sequence([Int(8, 'unsigned'), String, Boolean])
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { ConstDataView, parse, serialize, sizeof, Struct } from "../src";
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from ".";
|
||||
import { filledDataView, sizedDataView } from '../src'
|
||||
import { expectDataViewEqual } from ".";
|
||||
|
||||
describe(Struct.name, () => {
|
||||
|
||||
|
||||
@ -1,19 +1,3 @@
|
||||
export function filledDataView(bytes) {
|
||||
const ab = new ArrayBuffer(bytes.length)
|
||||
const dv = new DataView(ab)
|
||||
|
||||
for (let i = 0; i < bytes.length; i++) {
|
||||
dv.setInt8(i, bytes[i])
|
||||
}
|
||||
|
||||
return dv
|
||||
}
|
||||
|
||||
export function sizedDataView(length) {
|
||||
const ab = new ArrayBuffer(length)
|
||||
return new DataView(ab)
|
||||
}
|
||||
|
||||
export function expectDataViewEqual(actual, expected) {
|
||||
const actualBytes = new Uint8Array(actual.buffer, actual.byteOffset, actual.byteLength)
|
||||
const expectedBytes = new Uint8Array(expected.buffer, expected.byteOffset, expected.byteLength)
|
||||
|
||||
@ -1,6 +1,38 @@
|
||||
import { describe, test, expect } from 'vitest'
|
||||
import { expectDataViewEqual, filledDataView, sizedDataView } from '.'
|
||||
import { isHeadless, parse, serialize, sizeof, sizeofHead } from '../src'
|
||||
import { expectDataViewEqual } from '.'
|
||||
import { filledDataView, sizedDataView } from '../src'
|
||||
import { Int, isHeadless, parse, serialize, sizeof, sizeofHead, Struct } from '../src'
|
||||
|
||||
describe('README', () => {
|
||||
test('header', () => {
|
||||
const User = Struct({
|
||||
id: Int(32, 'unsigned'),
|
||||
name: String,
|
||||
age: Number,
|
||||
array: [Array, Boolean],
|
||||
raw_data: DataView,
|
||||
})
|
||||
|
||||
const user = {
|
||||
id: 1,
|
||||
name: 'john',
|
||||
age: 20,
|
||||
array: [true, false],
|
||||
raw_data: filledDataView([0x00, 0x00, 0x00, 0xFF]),
|
||||
}
|
||||
|
||||
const dv = sizedDataView(sizeof(user, User))
|
||||
serialize(dv, user, User)
|
||||
|
||||
const user_copy = parse(dv, User)
|
||||
|
||||
expect(user_copy).toEqual(user)
|
||||
expectDataViewEqual(user_copy.raw_data, user.raw_data)
|
||||
})
|
||||
test('unknown sizeof', () => {
|
||||
expect(() => sizeof(Array, Boolean)).toThrowError('unknown size of Array,Boolean')
|
||||
})
|
||||
})
|
||||
|
||||
describe('serialize', () => {
|
||||
test('Boolean', () => {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { expect, test } from "vitest";
|
||||
import { filledDataView, sizedDataView } from ".";
|
||||
import { filledDataView, sizedDataView } from '../src'
|
||||
import { memcpy } from "../src";
|
||||
|
||||
test('memcpy', () => {
|
||||
|
||||
Reference in New Issue
Block a user