bool Partitioner::hasSamePartitionLocation(const Partitioner & target_partition )const{ if(mode_==OneToMany||target_partition.get_binding_mode_()==OneToMany){ /** in the current version, any the location detection in OneToMany mode is ommited.*/ return false; } if(getNumberOfPartitions()!=target_partition.getNumberOfPartitions()) return false; for(unsigned i=0;i<getNumberOfPartitions();i++){ if(!partition_info_list[i]->is_colocated(*target_partition.partition_info_list[i])){ return false; } } return true; }
std::stringstream input; input << "2 1 001\n" "%: 0\n" "2 1\n" "%: 1\n" "1 1\n"; int num_parts = 2; std::vector<SimulationObject*> objects {new MockObject(), new MockObject()}; auto pinfo = ProfileGuidedPartitioner(input).partition(&objects, num_parts); SECTION("correct number of partitions") { REQUIRE(pinfo->getNumberOfPartitions() == num_parts); } std::vector<SimulationObject*> partitioned_obs; for (int i = 0; i < num_parts; ++i) { for (auto o : *pinfo->getPartition(i)) { partitioned_obs.push_back(o); } } SECTION("all objects contained") { REQUIRE(partitioned_obs.size() == objects.size()); } SECTION("all objects valid") {