测试 API 参考#
- group nanoarrow_testing
用于测试 nanoarrow 结构和函数的实用程序。
集成测试 JSON#
- group nanoarrow_testing-json
有关 JSON 表示的详细信息,请参阅测试格式文档。此表示形式不是规范的,但可用于实现与其他实现的集成测试。
-
class TestingJSONWriter#
- #include <nanoarrow_testing.hpp>
Arrow 集成测试 JSON 格式的写入器。
公共函数
-
inline void set_float_precision(int value)#
设置写入器的浮点精度。
默认情况下,浮点精度为 -1,它使用 JSON 序列化程序在输出中对值进行编码。在为集成测试专门编写文件时,应将浮点值四舍五入到小数点后 3 位,以避免序列化问题。
-
inline void set_include_metadata(bool value)#
设置是否在模式或字段的输出中包含元数据。
使用 false 以跳过在输出中写入模式/字段元数据。
-
ArrowErrorCode WriteDataFile(std::ostream &out, ArrowArrayStream *stream)#
将 ArrowArrayStream 作为数据文件 JSON 对象写入 out。
创建类似于
{"schema": {...}, "batches": [...], ...}
的输出。
-
ArrowErrorCode WriteSchema(std::ostream &out, const ArrowSchema *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)#
读取表示模式的 JSON。
读取
{"fields": [...], "metadata": [...]}
形式的 JSON 对象,并在成功时传播out
。
-
ArrowErrorCode ReadField(const std::string &field_json, ArrowSchema *out, ArrowError *error = nullptr)#
读取表示字段的 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 文件和规范。值得注意的是
Map 类型在子名称为“entries”、“key”和“value”的情况下被认为是相等的。
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 指定应使用所有小数位(默认值)。
-
inline int64_t num_differences() const#
返回前一次调用找到的差异数。
-
inline void WriteDifferences(std::ostream &out)#
将差异的易于理解的摘要转储到 out。
-
inline void ClearDifferences()#
清除所有现有的差异。
-
inline ArrowErrorCode CompareArrayStream(ArrowArrayStream *actual, ArrowArrayStream *expected, ArrowError *error = nullptr)#
比较一系列 record batch。
使用以下策略将 actual 与 expected 进行比较
比较 schema 是否相等,如果发现差异则返回
比较成对的 record batch,如果一个流比另一个流先结束,则返回。
如果比较在没有错误的情况下运行,则返回 NANOARROW_OK。调用者必须查询 num_differences() 以在成功时获得比较结果。
-
inline ArrowErrorCode CompareSchema(const ArrowSchema *actual, const ArrowSchema *expected, ArrowError *error = nullptr, const std::string &path = "")#
比较顶层 ArrowSchema 结构体。
如果比较在没有错误的情况下运行,则返回 NANOARROW_OK。调用者必须查询 num_differences() 以在成功时获得比较结果。
-
inline ArrowErrorCode SetSchema(const ArrowSchema *schema, ArrowError *error = nullptr)#
设置 ArrowSchema 以便在将来对 CompareBatch() 的调用中使用。
-
inline ArrowErrorCode CompareBatch(const ArrowArray *actual, const ArrowArray *expected, ArrowError *error = nullptr, const std::string &path = "")#
比较顶级 ArrowArray 结构。
如果比较在没有错误的情况下运行,则返回 NANOARROW_OK。调用者必须查询 num_differences() 以在成功时获得比较结果。
-
class TestingJSONWriter#