hyparquet/test/schemaTree.test.js
2024-01-20 12:28:36 -08:00

63 lines
1.5 KiB
JavaScript

import { describe, expect, it } from 'vitest'
import { parquetMetadata, parquetSchema } from '../src/hyparquet.js'
import { readFileToArrayBuffer } from './helpers.js'
describe('schemaTree', () => {
it('should parse schema tree from addrtype-missing-value.parquet', async () => {
const arrayBuffer = await readFileToArrayBuffer('test/files/addrtype-missing-value.parquet')
const metadata = parquetMetadata(arrayBuffer)
const result = parquetSchema(metadata)
expect(result).toEqual(addrtypeSchema)
})
it('should parse schema tree from rowgroups.parquet', async () => {
const arrayBuffer = await readFileToArrayBuffer('test/files/rowgroups.parquet')
const metadata = parquetMetadata(arrayBuffer)
const result = parquetSchema(metadata)
expect(result).toEqual(rowgroupsSchema)
})
})
// Parquet v1 from DuckDB
const addrtypeSchema = {
children: [
{
children: [],
count: 1,
element: {
converted_type: 0,
name: 'ADDRTYPE',
repetition_type: 1,
type: 6,
},
},
],
count: 2,
element: {
name: 'duckdb_schema',
num_children: 1,
repetition_type: 0,
},
}
// Parquet v2 from pandas with 2 row groups
const rowgroupsSchema = {
children: [
{
children: [],
count: 1,
element: {
name: 'numbers',
repetition_type: 1,
type: 2,
},
},
],
count: 2,
element: {
name: 'schema',
num_children: 1,
repetition_type: 0,
},
}