コード例 #1
0
ファイル: main.cpp プロジェクト: yandex/libmastermind
		bp::dict
		get_couple_groupset(int group, const std::string &groupset_id) const {
			auto groupset = impl.couples().get_couple_groupset(group, groupset_id);

			bp::dict result;

			result["free_effective_space"] = groupset.free_effective_space();
			result["free_reserved_space"] = groupset.free_reserved_space();

			result["type"] = groupset.type();
			result["status"] = groupset.status();
			result["id"] = groupset.id();

			bp::list group_ids;
			for (int g : groupset.group_ids()) {
				group_ids.append(g);
			}

			result["group_ids"] = group_ids;

			gil_guard_t gil_guard;
			result["hosts"] = detail::convert(groupset.hosts(), gil_guard);
			result["settings"] = detail::convert(groupset.settings(), gil_guard);

			return result;
		}
コード例 #2
0
TEST(ProcessLib_Parameter, GroupBasedParameterNode)
{
    const char xml[] =
            "<parameter>"
            "<type>Group</type>"
            "<group_id_property>PointGroupIDs</group_id_property>"
            "<index_values><index>0</index><value>0</value></index_values>"
            "<index_values><index>1</index><value>100</value></index_values>"
            "<index_values><index>3</index><value>300</value></index_values>"
            "</parameter>";
    auto const ptree = readXml(xml);

    std::unique_ptr<MeshLib::Mesh> mesh(
        MeshLib::MeshGenerator::generateLineMesh(4u, 1.0));
    std::vector<int> group_ids({0, 1, 2, 3, 4});
    MeshLib::addPropertyToMesh(*mesh, "PointGroupIDs",
                               MeshLib::MeshItemType::Node, 1, group_ids);

    BaseLib::ConfigTree conf(ptree, "", BaseLib::ConfigTree::onerror,
                             BaseLib::ConfigTree::onwarning);
    std::unique_ptr<ProcessLib::ParameterBase> parameter_base =
        ProcessLib::createGroupBasedParameter(
            "", conf.getConfigSubtree("parameter"), *mesh);

    auto parameter =
        dynamic_cast<ProcessLib::Parameter<double>*>(parameter_base.get());
    double t = 0;
    ProcessLib::SpatialPosition x;
    x.setNodeID(0);
    ASSERT_EQ(0.0, (*parameter)(t, x)[0]);
    x.setNodeID(1);
    ASSERT_EQ(100.0, (*parameter)(t, x)[0]);
    x.setNodeID(2);
    ASSERT_ANY_THROW((*parameter)(t, x));
    x.setNodeID(3);
    ASSERT_EQ(300.0, (*parameter)(t, x)[0]);
    x.setNodeID(4);
    ASSERT_ANY_THROW((*parameter)(t, x));
}