3434
3535#include " dataset/tiledbvcfdataset.h"
3636#include " read/reader.h"
37+ #include " stats/allele_count.h"
38+ #include " stats/variant_stats.h"
3739#include " utils/logger_public.h"
3840#include " write/writer.h"
3941
42+ #include < algorithm>
4043#include < cstring>
4144#include < fstream>
4245#include < iostream>
@@ -312,28 +315,20 @@ TEST_CASE(
312315
313316 // Verify skipped_delete_samples metadata on allele_count
314317 {
315- Array array (ctx, dataset_uri + " /allele_count" , TILEDB_READ );
316- const void * value = nullptr ;
317- tiledb_datatype_t type = TILEDB_ANY ;
318- uint32_t num = 0 ;
319- array.get_metadata (" skipped_delete_samples" , &type, &num, &value);
320- REQUIRE (value != nullptr );
321- REQUIRE (type == TILEDB_STRING_ASCII );
322- std::string meta (static_cast <const char *>(value), num);
323- REQUIRE (meta == sample_name);
318+ auto ctx_ptr = std::make_shared<tiledb::Context>();
319+ tiledb::Group group (*ctx_ptr, dataset_uri, TILEDB_READ );
320+ auto skipped = AlleleCount::get_skipped_delete_samples (ctx_ptr, group);
321+ REQUIRE (skipped.size () == 1 );
322+ REQUIRE (skipped[0 ] == sample_name);
324323 }
325324
326325 // Verify skipped_delete_samples metadata on variant_stats
327326 {
328- Array array (ctx, dataset_uri + " /variant_stats" , TILEDB_READ );
329- const void * value = nullptr ;
330- tiledb_datatype_t type = TILEDB_ANY ;
331- uint32_t num = 0 ;
332- array.get_metadata (" skipped_delete_samples" , &type, &num, &value);
333- REQUIRE (value != nullptr );
334- REQUIRE (type == TILEDB_STRING_ASCII );
335- std::string meta (static_cast <const char *>(value), num);
336- REQUIRE (meta == sample_name);
327+ auto ctx_ptr = std::make_shared<tiledb::Context>();
328+ tiledb::Group group (*ctx_ptr, dataset_uri, TILEDB_READ );
329+ auto skipped = VariantStats::get_skipped_delete_samples (ctx_ptr, group);
330+ REQUIRE (skipped.size () == 1 );
331+ REQUIRE (skipped[0 ] == sample_name);
337332 }
338333
339334 if (vfs.is_dir (dataset_uri)) {
@@ -384,26 +379,20 @@ TEST_CASE(
384379 dataset.delete_samples (dataset_uri, {" G1" }, {}, true );
385380 }
386381
387- // Verify metadata is "G1" on both arrays
382+ // Verify metadata records G1 on both arrays
388383 {
389- Array ac_array (ctx, dataset_uri + " /allele_count" , TILEDB_READ );
390- const void * value = nullptr ;
391- tiledb_datatype_t type = TILEDB_ANY ;
392- uint32_t num = 0 ;
393- ac_array.get_metadata (" skipped_delete_samples" , &type, &num, &value);
394- REQUIRE (value != nullptr );
395- std::string meta (static_cast <const char *>(value), num);
396- REQUIRE (meta == " G1" );
384+ auto ctx_ptr = std::make_shared<tiledb::Context>();
385+ tiledb::Group group (*ctx_ptr, dataset_uri, TILEDB_READ );
386+ auto skipped = AlleleCount::get_skipped_delete_samples (ctx_ptr, group);
387+ REQUIRE (skipped.size () == 1 );
388+ REQUIRE (skipped[0 ] == " G1" );
397389 }
398390 {
399- Array vs_array (ctx, dataset_uri + " /variant_stats" , TILEDB_READ );
400- const void * value = nullptr ;
401- tiledb_datatype_t type = TILEDB_ANY ;
402- uint32_t num = 0 ;
403- vs_array.get_metadata (" skipped_delete_samples" , &type, &num, &value);
404- REQUIRE (value != nullptr );
405- std::string meta (static_cast <const char *>(value), num);
406- REQUIRE (meta == " G1" );
391+ auto ctx_ptr = std::make_shared<tiledb::Context>();
392+ tiledb::Group group (*ctx_ptr, dataset_uri, TILEDB_READ );
393+ auto skipped = VariantStats::get_skipped_delete_samples (ctx_ptr, group);
394+ REQUIRE (skipped.size () == 1 );
395+ REQUIRE (skipped[0 ] == " G1" );
407396 }
408397
409398 // Delete G2 with skip_aggregate_stats=true
@@ -413,26 +402,22 @@ TEST_CASE(
413402 dataset.delete_samples (dataset_uri, {" G2" }, {}, true );
414403 }
415404
416- // Verify metadata accumulated to "G1,G2" on both arrays
405+ // Verify metadata records both G1 and G2 on both arrays
417406 {
418- Array ac_array (ctx, dataset_uri + " /allele_count" , TILEDB_READ );
419- const void * value = nullptr ;
420- tiledb_datatype_t type = TILEDB_ANY ;
421- uint32_t num = 0 ;
422- ac_array.get_metadata (" skipped_delete_samples" , &type, &num, &value);
423- REQUIRE (value != nullptr );
424- std::string meta (static_cast <const char *>(value), num);
425- REQUIRE (meta == " G1,G2" );
407+ auto ctx_ptr = std::make_shared<tiledb::Context>();
408+ tiledb::Group group (*ctx_ptr, dataset_uri, TILEDB_READ );
409+ auto skipped = AlleleCount::get_skipped_delete_samples (ctx_ptr, group);
410+ REQUIRE (skipped.size () == 2 );
411+ REQUIRE (std::find (skipped.begin (), skipped.end (), " G1" ) != skipped.end ());
412+ REQUIRE (std::find (skipped.begin (), skipped.end (), " G2" ) != skipped.end ());
426413 }
427414 {
428- Array vs_array (ctx, dataset_uri + " /variant_stats" , TILEDB_READ );
429- const void * value = nullptr ;
430- tiledb_datatype_t type = TILEDB_ANY ;
431- uint32_t num = 0 ;
432- vs_array.get_metadata (" skipped_delete_samples" , &type, &num, &value);
433- REQUIRE (value != nullptr );
434- std::string meta (static_cast <const char *>(value), num);
435- REQUIRE (meta == " G1,G2" );
415+ auto ctx_ptr = std::make_shared<tiledb::Context>();
416+ tiledb::Group group (*ctx_ptr, dataset_uri, TILEDB_READ );
417+ auto skipped = VariantStats::get_skipped_delete_samples (ctx_ptr, group);
418+ REQUIRE (skipped.size () == 2 );
419+ REQUIRE (std::find (skipped.begin (), skipped.end (), " G1" ) != skipped.end ());
420+ REQUIRE (std::find (skipped.begin (), skipped.end (), " G2" ) != skipped.end ());
436421 }
437422
438423 // Verify G3 still present, G1 and G2 are gone
0 commit comments