测试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": [...], ...}的输出。
-
inline void set_float_precision(int value)#
-
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传播。
-
ArrowErrorCode ReadDataFile(const std::string &data_file_json, ArrowArrayStream *out, int num_batch = kNumBatchReadAll, ArrowError *error = nullptr)#
-
class TestingJSONComparison#
- #include <nanoarrow_testing.hpp>
集成测试比较实用程序。
用于比较 ArrowSchema、ArrowArray 和 ArrowArrayStream 实例的实用程序。这应仅在集成测试的上下文中使用,因为比较逻辑特定于集成测试 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() 以获取成功时的比较结果。
-
class TestingJSONWriter#