public static void TestProperties() { // Test the various properties exposed by ParquetFileWriter. using var writerPropertiesBuilder = new WriterPropertiesBuilder(); using var writerProperties = writerPropertiesBuilder .Compression(Compression.Zstd) .DisableDictionary() .CreatedBy("Some crazy unit test") .Build(); var columns = new Column[] { new Column <int>("Index"), new Column <float>("Value") }; var kvm = (IReadOnlyDictionary <string, string>) new Dictionary <string, string> { { "some key", "some value" }, { "α ∧ ¬β", "2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm" } }; using var buffer = new ResizableBuffer(); using var outStream = new BufferOutputStream(buffer); using var fileWriter = new ParquetFileWriter(outStream, columns, writerProperties, kvm); Assert.AreEqual(2, fileWriter.NumColumns); Assert.AreEqual(0, fileWriter.NumRows); Assert.AreEqual(0, fileWriter.NumRowGroups); Assert.IsNull(fileWriter.FileMetaData); Assert.AreEqual(Column.CreateSchemaNode(columns), fileWriter.Schema.GroupNode); Assert.AreEqual(Column.CreateSchemaNode(columns), fileWriter.Schema.SchemaRoot); Assert.AreEqual(columns[0].Name, fileWriter.ColumnDescriptor(0).Name); Assert.AreEqual(columns[1].Name, fileWriter.ColumnDescriptor(1).Name); Assert.AreEqual(kvm, fileWriter.KeyValueMetadata); Assert.AreEqual(Compression.Zstd, fileWriter.WriterProperties.Compression(new ColumnPath(""))); Assert.AreEqual(false, fileWriter.WriterProperties.DictionaryEnabled(new ColumnPath(""))); Assert.AreEqual("Some crazy unit test", fileWriter.WriterProperties.CreatedBy); using (var groupWriter = fileWriter.AppendRowGroup()) { Assert.AreEqual(0, fileWriter.NumRows); Assert.AreEqual(1, fileWriter.NumRowGroups); Assert.IsNull(fileWriter.FileMetaData); using (var writer = groupWriter.NextColumn().LogicalWriter <int>()) { writer.WriteBatch(new[] { 1, 2, 3, 4, 5, 6 }); } Assert.AreEqual(0, fileWriter.NumRows); Assert.AreEqual(1, fileWriter.NumRowGroups); Assert.IsNull(fileWriter.FileMetaData); using (var writer = groupWriter.NextColumn().LogicalWriter <float>()) { writer.WriteBatch(new[] { 1f, 2f, 3f, 4f, 5f, 6f }); } Assert.AreEqual(0, fileWriter.NumRows); Assert.AreEqual(1, fileWriter.NumRowGroups); Assert.IsNull(fileWriter.FileMetaData); } Assert.AreEqual(0, fileWriter.NumRows); Assert.AreEqual(1, fileWriter.NumRowGroups); Assert.IsNull(fileWriter.FileMetaData); fileWriter.Close(); //Assert.AreEqual(0, fileWriter.NumRows); // 2021-04-08: calling this results in a segfault when the writer has been closed //Assert.AreEqual(1, fileWriter.NumRowGroups); // 2021-04-08: calling this results in a segfault when the writer has been closed Assert.IsNotNull(fileWriter.FileMetaData); Assert.AreEqual(2, fileWriter.FileMetaData?.NumColumns); Assert.AreEqual(6, fileWriter.FileMetaData?.NumRows); Assert.AreEqual(1, fileWriter.FileMetaData?.NumRowGroups); Assert.AreEqual(kvm, fileWriter.FileMetaData?.KeyValueMetadata); }