mirror of
https://github.com/asadbek064/hyparquet.git
synced 2025-12-07 23:31:57 +00:00
39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
|
|
import { describe, expect, it } from 'vitest'
|
||
|
|
import { offsetArrayBuffer } from '../src/asyncbuffer.js'
|
||
|
|
|
||
|
|
describe('offsetArrayBuffer', () => {
|
||
|
|
it('creates a valid offset array buffer', () => {
|
||
|
|
const buffer = new ArrayBuffer(10)
|
||
|
|
const offsetBuffer = offsetArrayBuffer(buffer, 5)
|
||
|
|
expect(offsetBuffer.byteLength).toBe(15)
|
||
|
|
})
|
||
|
|
|
||
|
|
it('correctly slices the array buffer with offset', () => {
|
||
|
|
const buffer = new ArrayBuffer(10)
|
||
|
|
const offsetBuffer = offsetArrayBuffer(buffer, 5)
|
||
|
|
const view = new Uint8Array(buffer)
|
||
|
|
for (let i = 0; i < view.length; i++) {
|
||
|
|
view[i] = i // Populate the buffer with data [0, 1, 2, ...]
|
||
|
|
}
|
||
|
|
|
||
|
|
const slicedBuffer = offsetBuffer.slice(5, 10) // This should give us [0, 1, 2, 3, 4] from the original buffer
|
||
|
|
const slicedView = new Uint8Array(slicedBuffer)
|
||
|
|
|
||
|
|
for (let i = 0; i < slicedView.length; i++) {
|
||
|
|
expect(slicedView[i]).toBe(i) // Each item should match its index
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
it('throws error for negative offset', () => {
|
||
|
|
const buffer = new ArrayBuffer(10)
|
||
|
|
expect(() => offsetArrayBuffer(buffer, -5)).toThrow('offset must be positive')
|
||
|
|
})
|
||
|
|
|
||
|
|
it('throws error for out of bounds slice', () => {
|
||
|
|
const buffer = new ArrayBuffer(10)
|
||
|
|
const offsetBuffer = offsetArrayBuffer(buffer, 5)
|
||
|
|
expect(() => offsetBuffer.slice(3, 7)).toThrow('start out of bounds')
|
||
|
|
expect(() => offsetBuffer.slice(5, 20)).toThrow('end out of bounds')
|
||
|
|
})
|
||
|
|
})
|