@@ -1070,4 +1070,44 @@ end
10701070 @test tbl. col16[1 ] == Dates. Time (0 , 0 , 0 )
10711071 end
10721072 end # @testset "misc"
1073+
1074+ @testset " DataAPI.metadata" begin
1075+ df = DataFrame (a= 1 , b= 2 , c= 3 )
1076+ for i in 1 : 2
1077+ io = IOBuffer ()
1078+ if i == 1 # skip writing metadata in the first iteration
1079+ Arrow. write (io, df)
1080+ else
1081+ Arrow. write (io, df, metadata= metadata (df), colmetadata= colmetadata (df))
1082+ end
1083+ seekstart (io)
1084+ tbl = Arrow. Table (io)
1085+
1086+ @test DataAPI. metadatasupport (typeof (tbl)) == (read= true , write= false )
1087+ @test metadata (tbl) == metadata (df)
1088+ @test metadata (tbl; style= true ) == metadata (df; style= true )
1089+ @test_throws Exception metadata (tbl, " xyz" )
1090+ @test metadata (tbl, " xyz" , " something" ) == " something"
1091+ @test metadata (tbl, " xyz" , " something" ; style= true ) == (" something" , :default )
1092+ @test metadatakeys (tbl) == metadatakeys (df)
1093+
1094+ @test DataAPI. colmetadatasupport (typeof (tbl)) == (read= true , write= false )
1095+ @test colmetadata (tbl) == colmetadata (df)
1096+ @test colmetadata (tbl; style= true ) == colmetadata (df; style= true )
1097+ @test_throws MethodError colmetadata (tbl, " xyz" )
1098+ @test_throws KeyError colmetadata (tbl, :xyz )
1099+ @test colmetadata (tbl, :b ) == colmetadata (df, :b )
1100+ @test_throws MethodError colmetadata (tbl, :b , " xyz" )
1101+ @test colmetadata (tbl, :b , " xyz" , " something" ) == " something"
1102+ @test colmetadata (tbl, :b , " xyz" , " something" ; style= true ) == (" something" , :default )
1103+ @test Set (colmetadatakeys (tbl)) == Set (colmetadatakeys (df))
1104+
1105+ # add metadata for the second iteration
1106+ metadata! (df, " tkey" , " tvalue" )
1107+ metadata! (df, " tkey2" , " tvalue2" )
1108+ colmetadata! (df, :a , " ackey" , " acvalue" )
1109+ colmetadata! (df, :a , " ackey2" , " acvalue2" )
1110+ colmetadata! (df, :c , " cckey" , " ccvalue" )
1111+ end
1112+ end # @testset "DataAPI.metadata"
10731113end
0 commit comments