测试API参考#

group Nanoarrow 测试 辅助函数

用于测试 nanoarrow 结构和函数的实用程序。

集成测试JSON#

group 集成测试辅助函数

有关 JSON 表示的详细信息,请参阅测试格式文档。此表示不是规范的,但可用于与其他实现进行集成测试。

class TestingJSONWriter#
#include <nanoarrow_testing.hpp>

用于 Arrow 集成测试 JSON 格式的写入器。

公共函数

inline void set_float_precision(int value)#

设置写入器的浮点精度。

浮点精度默认为 -1,这意味着使用 JSON 序列化器将值编码到输出中。当专门为集成测试编写文件时,浮点值应四舍五入到小数点后三位,以避免序列化问题。

inline void set_include_metadata(bool value)#

设置元数据是否应包含在 schema 或字段的输出中。

使用 false 跳过在输出中写入 schema/字段元数据。

ArrowErrorCode WriteDataFile(std::ostream &out, ArrowArrayStream *stream)#

ArrowArrayStream 写入为 out 的数据文件 JSON 对象。

创建类似 {"schema": {...}, "batches": [...], ...} 的输出。

ArrowErrorCode WriteSchema(std::ostream &out, const ArrowSchema *schema)#

将 schema 写入 out。

创建类似 {"fields": [...], "metadata": [...]} 的输出。

ArrowErrorCode WriteField(std::ostream &out, const ArrowSchema *field)#

将字段写入 out。

创建类似 {"name" : "col", "type": {...}, ...} 的输出

ArrowErrorCode WriteType(std::ostream &out, const ArrowSchema *field)#

写入字段的类型部分。

创建类似 {"name": "int", ...} 的输出

ArrowErrorCode WriteMetadata(std::ostream &out, const char *metadata)#

写入字段的元数据部分。

创建类似 [{"key": "...", "value": "..."}, ...] 的输出。

ArrowErrorCode WriteBatch(std::ostream &out, const ArrowSchema *schema, const ArrowArrayView *value)#

将“批次”写入 out。

创建类似 {"count": 123, "columns": [...]} 的输出。

ArrowErrorCode WriteColumn(std::ostream &out, const ArrowSchema *field, const ArrowArrayView *value)#

将列写入 out。

创建类似 {"name": "col", "count": 123, "VALIDITY": [...], ...} 的输出。

class TestingJSONReader#
#include <nanoarrow_testing.hpp>

用于 Arrow 集成测试 JSON 格式的读取器。

公共函数

ArrowErrorCode ReadDataFile(const std::string &data_file_json, ArrowArrayStream *out, int num_batch = kNumBatchReadAll, ArrowError *error = nullptr)#

读取表示数据文件对象的 JSON。

读取形式为 {"schema": {...}, "batches": [...], ...} 的 JSON 对象,成功时将 out 传播。

ArrowErrorCode ReadSchema(const std::string &schema_json, ArrowSchema *out, ArrowError *error = nullptr)#

读取表示 Schema 的 JSON。

读取形式为 {"fields": [...], "metadata": [...]} 的 JSON 对象,成功时将 out 传播。

ArrowErrorCode ReadField(const std::string &field_json, ArrowSchema *out, ArrowError *error = nullptr)#

读取表示 Field 的 JSON。

读取形式为 {"name" : "col", "type": {...}, ...} 的 JSON 对象,成功时将 out 传播。

ArrowErrorCode ReadBatch(const std::string &batch_json, const ArrowSchema *schema, ArrowArray *out, ArrowError *error = nullptr)#

读取表示 RecordBatch 的 JSON。

读取形式为 {"count": 123, "columns": [...]} 的 JSON 对象,成功时将 out 传播。

ArrowErrorCode ReadColumn(const std::string &column_json, const ArrowSchema *schema, ArrowArray *out, ArrowError *error = nullptr)#

读取表示 Column 的 JSON。

读取形式为 {"name": "col", "count": 123, "VALIDITY": [...], ...} 的 JSON 对象,成功时将 out 传播。

class TestingJSONComparison#
#include <nanoarrow_testing.hpp>

集成测试比较实用程序。

用于比较 ArrowSchemaArrowArrayArrowArrayStream 实例的实用程序。这应仅在集成测试的上下文中使用,因为比较逻辑特定于集成测试 JSON 文件和规范。特别地

  • 无论子名称“entries”、“key”和“value”如何,Map 类型都被认为是相等的。

  • Float32 和 Float64 值根据其 JSON 序列化进行比较。

公共函数

inline void set_compare_batch_flags(bool value)#

比较顶层 RecordBatch 标志(例如,可空性)

一些 Arrow 实现将批次导出为可空,另一些则导出为不可空。使用 false 将这两种类型的批次视为等效。

inline void set_compare_metadata_order(bool value)#

比较元数据顺序。

一些 Arrow 实现使用重排元数据项的结构(例如,哈希映射)存储元数据。使用 false 将其键/值已重排的元数据视为等效。

inline void set_compare_float_precision(int value)#

设置浮点精度。

Arrow 集成测试 JSON 文档指出,值应精确到小数点后 3 位,以避免浮点序列化问题。使用 -1 指定应使用所有小数位(默认值)。

int64_t num_differences() const#

返回上一次调用发现的差异数量。

void WriteDifferences(std::ostream &out)#

将差异的人类可读摘要转储到 out。

void ClearDifferences()#

清除任何现有差异。

ArrowErrorCode CompareArrayStream(ArrowArrayStream *actual, ArrowArrayStream *expected, ArrowError *error = nullptr)#

比较记录批次流。

使用以下策略比较实际值和预期值

  • 比较 schema 是否相等,如果发现差异则返回。

  • 比较记录批次对,如果其中一个流在另一个流之前完成,则返回。

如果比较无错误运行,则返回 NANOARROW_OK。调用者必须查询 num_differences() 以获取成功时的比较结果。

ArrowErrorCode CompareSchema(const ArrowSchema *actual, const ArrowSchema *expected, ArrowError *error = nullptr, const std::string &path = "")#

比较顶层 ArrowSchema 结构。

如果比较无错误运行,则返回 NANOARROW_OK。调用者必须查询 num_differences() 以获取成功时的比较结果。

ArrowErrorCode SetSchema(const ArrowSchema *schema, ArrowError *error = nullptr)#

设置将用于未来对 CompareBatch() 的调用的 ArrowSchema

ArrowErrorCode CompareBatch(const ArrowArray *actual, const ArrowArray *expected, ArrowError *error = nullptr, const std::string &path = "")#

比较顶层 ArrowArray 结构。

如果比较无错误运行,则返回 NANOARROW_OK。调用者必须查询 num_differences() 以获取成功时的比较结果。