diff --git a/src/nanoarrow/nanoarrow_testing.hpp b/src/nanoarrow/nanoarrow_testing.hpp index d9897ae30..1d120532b 100644 --- a/src/nanoarrow/nanoarrow_testing.hpp +++ b/src/nanoarrow/nanoarrow_testing.hpp @@ -51,6 +51,8 @@ class TestingJSONWriter { return EINVAL; } + out << "{"; + // Write fields out << R"("fields": )"; if (schema->n_children == 0) { @@ -69,6 +71,7 @@ class TestingJSONWriter { out << R"(, "metadata": )"; NANOARROW_RETURN_NOT_OK(WriteMetadata(out, schema->metadata)); + out << "}"; return NANOARROW_OK; } diff --git a/src/nanoarrow/nanoarrow_testing_test.cc b/src/nanoarrow/nanoarrow_testing_test.cc index 7a0b32cbd..c11548da1 100644 --- a/src/nanoarrow/nanoarrow_testing_test.cc +++ b/src/nanoarrow/nanoarrow_testing_test.cc @@ -307,6 +307,21 @@ TEST(NanoarrowTestingTest, NanoarrowTestingTestBatch) { R"({"count": 0, "columns": []})"); } +TEST(NanoarrowTestingTest, NanoarrowTestingTestSchema) { + TestColumn( + [](ArrowSchema* schema) { + ArrowSchemaInit(schema); + NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeStruct(schema, 2)); + NANOARROW_RETURN_NOT_OK( + ArrowSchemaSetType(schema->children[0], NANOARROW_TYPE_NA)); + NANOARROW_RETURN_NOT_OK( + ArrowSchemaSetType(schema->children[1], NANOARROW_TYPE_STRING)); + return NANOARROW_OK; + }, + [](ArrowArray* array) { return NANOARROW_OK; }, &WriteSchemaJSON, + R"({"fields": [{"name": null, "nullable": true, "type": {"name": "null"}, "children": [], "metadata": null}, {"name": null, "nullable": true, "type": {"name": "utf8"}, "children": [], "metadata": null}], "metadata": null})"); +} + TEST(NanoarrowTestingTest, NanoarrowTestingTestFieldBasic) { TestColumn( [](ArrowSchema* schema) {