@@ -1119,6 +1119,69 @@ TEST_CASE_METHOD(
11191119 REQUIRE (schema->is_enumeration_loaded (" test_enmr" ) == true );
11201120}
11211121
1122+ TEST_CASE_METHOD (
1123+ EnumerationFx,
1124+ " Array - Load All Enumerations - All Schemas" ,
1125+ " [enumeration][array][load-all-enumerations][all-schemas]" ) {
1126+ create_array ();
1127+ auto array = get_array (QueryType::READ);
1128+ auto schema = array->array_schema_latest_ptr ();
1129+ REQUIRE (schema->is_enumeration_loaded (" test_enmr" ) == false );
1130+ std::string schema_name_1 = schema->name ();
1131+
1132+ // Evolve once to add an enumeration.
1133+ auto ase = make_shared<ArraySchemaEvolution>(HERE (), memory_tracker_);
1134+ std::vector<std::string> var_values{" one" , " two" , " three" };
1135+ auto var_enmr = create_enumeration (
1136+ var_values, false , Datatype::STRING_ASCII, " ase_var_enmr" );
1137+ ase->add_enumeration (var_enmr);
1138+ auto attr4 = make_shared<Attribute>(HERE (), " attr4" , Datatype::UINT16);
1139+ attr4->set_enumeration_name (" ase_var_enmr" );
1140+ CHECK_NOTHROW (ase->evolve_schema (schema));
1141+ // Apply evolution to the array and reopen.
1142+ CHECK_NOTHROW (Array::evolve_array_schema (
1143+ ctx_.resources (), uri_, ase.get (), array->get_encryption_key ()));
1144+ CHECK (array->reopen ().ok ());
1145+ CHECK_NOTHROW (array->load_all_enumerations ());
1146+ auto all_schemas = array->array_schemas_all ();
1147+ schema = array->array_schema_latest_ptr ();
1148+ std::string schema_name_2 = schema->name ();
1149+
1150+ // Check all schemas.
1151+ CHECK (all_schemas[schema_name_1]->is_enumeration_loaded (" test_enmr" ) == true );
1152+ CHECK (all_schemas[schema_name_2]->is_enumeration_loaded (" test_enmr" ) == true );
1153+ CHECK (
1154+ all_schemas[schema_name_2]->is_enumeration_loaded (" ase_var_enmr" ) ==
1155+ true );
1156+
1157+ // Evolve a second time to drop an enumeration.
1158+ ase = make_shared<ArraySchemaEvolution>(HERE (), memory_tracker_);
1159+ ase->drop_enumeration (" test_enmr" );
1160+ ase->drop_attribute (" attr1" );
1161+ CHECK_NOTHROW (ase->evolve_schema (schema));
1162+ // Apply evolution to the array and reopen.
1163+ CHECK_NOTHROW (Array::evolve_array_schema (
1164+ ctx_.resources (), uri_, ase.get (), array->get_encryption_key ()));
1165+ CHECK (array->reopen ().ok ());
1166+ CHECK_NOTHROW (array->load_all_enumerations ());
1167+ all_schemas = array->array_schemas_all ();
1168+ schema = array->array_schema_latest_ptr ();
1169+ std::string schema_name_3 = schema->name ();
1170+
1171+ // Check all schemas.
1172+ CHECK (all_schemas[schema_name_1]->is_enumeration_loaded (" test_enmr" ) == true );
1173+ CHECK (all_schemas[schema_name_2]->is_enumeration_loaded (" test_enmr" ) == true );
1174+ CHECK (
1175+ all_schemas[schema_name_2]->is_enumeration_loaded (" ase_var_enmr" ) ==
1176+ true );
1177+ CHECK_THROWS_WITH (
1178+ all_schemas[schema_name_3]->is_enumeration_loaded (" test_enmr" ),
1179+ Catch::Matchers::ContainsSubstring (" No enumeration named" ));
1180+ CHECK (
1181+ all_schemas[schema_name_3]->is_enumeration_loaded (" ase_var_enmr" ) ==
1182+ true );
1183+ }
1184+
11221185TEST_CASE_METHOD (
11231186 EnumerationFx,
11241187 " Array - Load All Enumerations - Repeated" ,
0 commit comments