feat(README, filledDataView, sizedDataView)

This commit is contained in:
2025-08-08 12:32:55 +03:00
parent c5c0c17db2
commit c3e0e286a8
17 changed files with 322 additions and 30 deletions

View File

@ -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', () => {

View File

@ -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', () => {

View File

@ -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', () => {

View File

@ -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, () => {

View File

@ -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])

View File

@ -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, () => {

View File

@ -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)

View File

@ -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', () => {

View File

@ -1,5 +1,5 @@
import { expect, test } from "vitest";
import { filledDataView, sizedDataView } from ".";
import { filledDataView, sizedDataView } from '../src'
import { memcpy } from "../src";
test('memcpy', () => {