1// Licensed to the Apache Software Foundation (ASF) under one 2// or more contributor license agreements. See the NOTICE file 3// distributed with this work for additional information 4// regarding copyright ownership. The ASF licenses this file 5// to you under the Apache License, Version 2.0 (the 6// "License"); you may not use this file except in compliance 7// with the License. You may obtain a copy of the License at 8// 9// http://www.apache.org/licenses/LICENSE-2.0 10// 11// Unless required by applicable law or agreed to in writing, 12// software distributed under the License is distributed on an 13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14// KIND, either express or implied. See the License for the 15// specific language governing permissions and limitations 16// under the License. 17 18import { 19 generateRandomTables, 20 generateDictionaryTables 21} from '../../../data/tables'; 22 23import { validateRecordBatchIterator } from '../validate'; 24import { Table, RecordBatchJSONWriter } from '../../../Arrow'; 25 26/* tslint:disable */ 27const { parse: bignumJSONParse } = require('json-bignum'); 28 29describe('RecordBatchJSONWriter', () => { 30 for (const table of generateRandomTables([10, 20, 30])) { 31 testJSONWriter(table, `[${table.schema.fields.join(', ')}]`); 32 } 33 for (const table of generateDictionaryTables([10, 20, 30])) { 34 testJSONWriter(table, `${table.schema.fields[0]}`); 35 } 36}); 37 38function testJSONWriter(table: Table, name: string) { 39 describe(`should write the Arrow IPC JSON format (${name})`, () => { 40 test(`Table`, validateTable.bind(0, table)); 41 }); 42} 43 44async function validateTable(source: Table) { 45 const writer = RecordBatchJSONWriter.writeAll(source); 46 const result = Table.from(bignumJSONParse(await writer.toString())); 47 validateRecordBatchIterator(3, source.chunks); 48 expect(result).toEqualTable(source); 49} 50