@@ -23,7 +23,7 @@ public void TestDenseArray()
2323 var array = new Array ( context , tmpArrayPath ) ;
2424 Assert . IsNotNull ( array ) ;
2525
26- var array_schema = BuildDenseArraySchema ( context ) ;
26+ var array_schema = ArrayTest . BuildDenseArraySchema ( context ) ;
2727 Assert . IsNotNull ( array_schema ) ;
2828
2929 array . Create ( array_schema ) ;
@@ -75,7 +75,7 @@ public void TestSparseArray()
7575 var array = new Array ( context , tmpArrayPath ) ;
7676 Assert . IsNotNull ( array ) ;
7777
78- var array_schema = BuildSparseArraySchema ( context ) ;
78+ var array_schema = ArrayTest . BuildSparseArraySchema ( context ) ;
7979 Assert . IsNotNull ( array_schema ) ;
8080
8181 array . Create ( array_schema ) ;
@@ -133,7 +133,7 @@ public void TestConsolidateFragments()
133133
134134 using var uri = new TemporaryDirectory ( "array_consolidate_fragments" ) ;
135135
136- using ( var schema = BuildDenseArraySchema ( context ) )
136+ using ( var schema = ArrayTest . BuildDenseArraySchema ( context ) )
137137 using ( var array = new Array ( context , uri ) )
138138 {
139139 array . Create ( schema ) ;
@@ -170,7 +170,102 @@ public void TestConsolidateFragments()
170170 Assert . AreEqual ( FragmentCount , fragmentInfo . FragmentToVacuumCount ) ;
171171 }
172172
173- private ArraySchema BuildDenseArraySchema ( Context context )
173+ [ TestMethod ]
174+ public void TestDelete ( )
175+ {
176+ var context = Context . GetDefault ( ) ;
177+
178+ using var uri = new TemporaryDirectory ( "array_delete" ) ;
179+
180+ using ( var schema = BuildDenseArraySchema ( context ) )
181+ {
182+ Array . Create ( context , uri , schema ) ;
183+ }
184+
185+ Assert . AreEqual ( ObjectType . Array , context . GetObjectType ( uri ) ) ;
186+
187+ Array . Delete ( context , uri ) ;
188+
189+ Assert . AreEqual ( ObjectType . Invalid , context . GetObjectType ( uri ) ) ;
190+ }
191+
192+ /// <summary>
193+ /// Base-64 encoded zip file of an array with an old format version.
194+ /// </summary>
195+ /// <remarks>
196+ /// The array was taken from <see href="https://github.com/TileDB-Inc/TileDB-Py/blob/3ea00dbc2eabce972bea8af1ea8a4dc420e00a72/tiledb/tests/test_libtiledb.py#L311-L341"/>
197+ /// and repackaged to a zip file, because <c>System.Formats.Tar</c> is available only in .NET 7+.
198+ /// </remarks>
199+ const string OldVersionArrayZip = """
200+ UEsDBBQAAAAAAAQHtFIAAAAAAAAAAAAAAABDAAAAX18xNjIxNDYxMzY3OTcyXzE2MjE0NjEzNjc5
201+ NzJfMWJlOWNlMDM3NDI1NGMyNGI2NjBlZDE3OGU3OWQ1ZTdfNS5va1BLAwQUAAAACAAEB7RSkZnF
202+ iBEAAAAsAAAARQAAAF9fMTYyMTQ2MTM2Nzk3Ml8xNjIxNDYxMzY3OTcyXzFiZTljZTAzNzQyNTRj
203+ MjRiNjYwZWQxNzhlNzlkNWU3XzUvLnRkYmNkgAAJKAYBRijNBKVZoTQAUEsDBBQAAAAIAAQHtFIu
204+ OY4+jQAAAI0EAABYAAAAX18xNjIxNDYxMzY3OTcyXzE2MjE0NjEzNjc5NzJfMWJlOWNlMDM3NDI1
205+ NGMyNGI2NjBlZDE3OGU3OWQ1ZTdfNS9fX2ZyYWdtZW50X21ldGFkYXRhLnRkYmNlYGCwYIAABSjN
206+ wghlMAiBSUYGkAAjK4gAs5DUiwCxAJTPiCRWwfg4KSEhoSVJgZXdJ0CMgXEJAz/IAH2oWpgeYu0C
207+ qedmQLULJlbBmJziwAqym2nUCphxMH2jVoxaAbECAZiQFIMAM5TWYUAFDgzEgRwofR5KG0ENngql
208+ f0DpaKjF+6C0ItTiFqgDAFBLAwQUAAAACAAEB7RSiHDSEyYAAABAAAAARgAAAF9fMTYyMTQ2MTM2
209+ Nzk3Ml8xNjIxNDYxMzY3OTcyXzFiZTljZTAzNzQyNTRjMjRiNjYwZWQxNzhlNzlkNWU3XzUvZC50
210+ ZGJjZIAACSCWAWIBKJ8RSUxjq/5fBYm5DAwRQHEmqAImBu1IHgZuAFBLAwQUAAAAAACkCbRSAAAA
211+ AAAAAAAAAAAAQwAAAF9fMTYyMTQ2MjM4Nzg5N18xNjIxNDYyMzg3ODk3Xzk5ZWQxNDgxMzc5ZTQ0
212+ ZTk4N2U0NTM1YWIyYWExYjBjXzUub2tQSwMEFAAAAAgApAm0UpGZxYgRAAAALAAAAEUAAABfXzE2
213+ MjE0NjIzODc4OTdfMTYyMTQ2MjM4Nzg5N185OWVkMTQ4MTM3OWU0NGU5ODdlNDUzNWFiMmFhMWIw
214+ Y181Ly50ZGJjZIAACSgGAUYozQSlWaE0AFBLAwQUAAAACACkCbRSLjmOPo0AAACNBAAAWAAAAF9f
215+ MTYyMTQ2MjM4Nzg5N18xNjIxNDYyMzg3ODk3Xzk5ZWQxNDgxMzc5ZTQ0ZTk4N2U0NTM1YWIyYWEx
216+ YjBjXzUvX19mcmFnbWVudF9tZXRhZGF0YS50ZGJjZWBgsGCAAAUozcIIZTAIgUlGBpAAIyuIALOQ
217+ 1IsAsQCUz4gkVsH4OCkhIaElSYGV3SdAjIFxCQM/yAB9qFqYHmLtAqnnZkC1CyZWwZic4sAKsptp
218+ 1AqYcTB9o1aMWgGxAgGYkBSDADOU1mFABQ4MxIEcKH0eShtBDZ4KpX9A6WioxfugtCLU4haoAwBQ
219+ SwMEFAAAAAgApAm0Uohw0hMmAAAAQAAAAEYAAABfXzE2MjE0NjIzODc4OTdfMTYyMTQ2MjM4Nzg5
220+ N185OWVkMTQ4MTM3OWU0NGU5ODdlNDUzNWFiMmFhMWIwY181L2QudGRiY2SAAAkglgFiASifEUlM
221+ Y6v+XwWJuQwMEUBxJqgCJgbtSB4GbgBQSwMEFAAAAAgAAwe0UsP6HbxgAAAAkAAAABIAAABfX2Fy
222+ cmF5X3NjaGVtYS50ZGJjZWBgiGGAgAYozcIIZTAIgUlGBpAAIyuIALOQ1FsAsQCUz4gkVsGYnMrA
223+ 5MbGxlgqwMwi4RjDphYm8FGew8DV4ZPCnEOsSoo5CzgTzJoSmgwTeTqSFhSlxDIwsnNcAwBQSwME
224+ FAAAAAAAAwe0UgAAAAAAAAAAAAAAAAoAAABfX2xvY2sudGRiUEsBAhQAFAAAAAAABAe0UgAAAAAA
225+ AAAAAAAAAEMAAAAAAAAAAAAgAAAAAAAAAF9fMTYyMTQ2MTM2Nzk3Ml8xNjIxNDYxMzY3OTcyXzFi
226+ ZTljZTAzNzQyNTRjMjRiNjYwZWQxNzhlNzlkNWU3XzUub2tQSwECFAAUAAAACAAEB7RSkZnFiBEA
227+ AAAsAAAARQAAAAAAAAAAACAAAABhAAAAX18xNjIxNDYxMzY3OTcyXzE2MjE0NjEzNjc5NzJfMWJl
228+ OWNlMDM3NDI1NGMyNGI2NjBlZDE3OGU3OWQ1ZTdfNS8udGRiUEsBAhQAFAAAAAgABAe0Ui45jj6N
229+ AAAAjQQAAFgAAAAAAAAAAAAgAAAA1QAAAF9fMTYyMTQ2MTM2Nzk3Ml8xNjIxNDYxMzY3OTcyXzFi
230+ ZTljZTAzNzQyNTRjMjRiNjYwZWQxNzhlNzlkNWU3XzUvX19mcmFnbWVudF9tZXRhZGF0YS50ZGJQ
231+ SwECFAAUAAAACAAEB7RSiHDSEyYAAABAAAAARgAAAAAAAAAAACAAAADYAQAAX18xNjIxNDYxMzY3
232+ OTcyXzE2MjE0NjEzNjc5NzJfMWJlOWNlMDM3NDI1NGMyNGI2NjBlZDE3OGU3OWQ1ZTdfNS9kLnRk
233+ YlBLAQIUABQAAAAAAKQJtFIAAAAAAAAAAAAAAABDAAAAAAAAAAAAIAAAAGICAABfXzE2MjE0NjIz
234+ ODc4OTdfMTYyMTQ2MjM4Nzg5N185OWVkMTQ4MTM3OWU0NGU5ODdlNDUzNWFiMmFhMWIwY181Lm9r
235+ UEsBAhQAFAAAAAgApAm0UpGZxYgRAAAALAAAAEUAAAAAAAAAAAAgAAAAwwIAAF9fMTYyMTQ2MjM4
236+ Nzg5N18xNjIxNDYyMzg3ODk3Xzk5ZWQxNDgxMzc5ZTQ0ZTk4N2U0NTM1YWIyYWExYjBjXzUvLnRk
237+ YlBLAQIUABQAAAAIAKQJtFIuOY4+jQAAAI0EAABYAAAAAAAAAAAAIAAAADcDAABfXzE2MjE0NjIz
238+ ODc4OTdfMTYyMTQ2MjM4Nzg5N185OWVkMTQ4MTM3OWU0NGU5ODdlNDUzNWFiMmFhMWIwY181L19f
239+ ZnJhZ21lbnRfbWV0YWRhdGEudGRiUEsBAhQAFAAAAAgApAm0Uohw0hMmAAAAQAAAAEYAAAAAAAAA
240+ AAAgAAAAOgQAAF9fMTYyMTQ2MjM4Nzg5N18xNjIxNDYyMzg3ODk3Xzk5ZWQxNDgxMzc5ZTQ0ZTk4
241+ N2U0NTM1YWIyYWExYjBjXzUvZC50ZGJQSwECFAAUAAAACAADB7RSw/odvGAAAACQAAAAEgAAAAAA
242+ AAAAACAAAADEBAAAX19hcnJheV9zY2hlbWEudGRiUEsBAhQAFAAAAAAAAwe0UgAAAAAAAAAAAAAA
243+ AAoAAAAAAAAAAAAgAAAAVAUAAF9fbG9jay50ZGJQSwUGAAAAAAoACgA0BAAAfAUAAAAA
244+ """ ;
245+
246+ [ TestMethod ]
247+ public void TestUpgradeVersion ( )
248+ {
249+ var context = Context . GetDefault ( ) ;
250+
251+ using var uri = new TemporaryDirectory ( "array_upgrade_version" ) ;
252+
253+ TestUtil . UnzipBase64String ( uri , OldVersionArrayZip ) ;
254+
255+ using ( var schema = Array . LoadArraySchema ( context , uri ) )
256+ {
257+ Assert . AreEqual ( 5u , schema . FormatVersion ( ) ) ;
258+ }
259+
260+ Array . UpgradeVersion ( context , uri ) ;
261+
262+ using ( var schema = Array . LoadArraySchema ( context , uri ) )
263+ {
264+ Assert . IsTrue ( schema . FormatVersion ( ) >= 15u , "Array was not upgraded." ) ;
265+ }
266+ }
267+
268+ private static ArraySchema BuildDenseArraySchema ( Context context )
174269 {
175270 var dimension = Dimension . Create < short > ( context , "dim1" , 1 , 10 , 5 ) ;
176271 Assert . IsNotNull ( dimension ) ;
@@ -199,7 +294,7 @@ private ArraySchema BuildDenseArraySchema(Context context)
199294 return array_schema ;
200295 }
201296
202- private ArraySchema BuildSparseArraySchema ( Context context )
297+ private static ArraySchema BuildSparseArraySchema ( Context context )
203298 {
204299 var dim1 = Dimension . Create < short > ( context , "dim1" , 1 , 10 , 5 ) ;
205300 Assert . IsNotNull ( dim1 ) ;
0 commit comments