https://gitlab.opengeosys.org/ogs/ogs.git
Raw File
Tip revision: b774201761caf7b2a2b5866a286023c258960ecd authored by Lars Bilke on 30 July 2021, 06:28:10 UTC
Merge branch 'ccache-windows' into 'master'
Tip revision: b774201
TestQtPrjInterface.cpp
/**
 * \copyright
 * Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license
 *
 *
 */

#include <gtest/gtest.h>

#include <cstdio>

#include "Applications/DataHolderLib/BoundaryCondition.h"
#include "Applications/DataHolderLib/Project.h"
#include "Applications/DataHolderLib/SourceTerm.h"
#include "Applications/FileIO/XmlIO/Qt/XmlPrjInterface.h"
#include "GeoLib/GEOObjects.h"
#include "InfoLib/TestInfo.h"

TEST(TestQtPrjInterface, QtXmlPrjReader)
{
    struct TestParams
    {
        std::string const file_name;
        std::size_t n_geo;
        std::size_t n_mesh;
        std::size_t n_bc;
        std::size_t n_st;
    };

    std::vector<TestParams> test_files;

    std::string name =
        TestInfoLib::TestInfo::data_path +
        "/Elliptic/nonuniform_bc_SteadyStateDiffusion/neumann_nonuniform.prj";
    test_files.push_back({name, 0, 3, 2, 0});
    name =
        TestInfoLib::TestInfo::data_path +
        "/Elliptic/nonuniform_bc_SteadyStateDiffusion/neumann_nonuniform.prj";
    test_files.push_back({name, 0, 3, 2, 0});

    for (auto& test_file : test_files)
    {
        DataHolderLib::Project project;
        FileIO::XmlPrjInterface xml(project);
        int result = xml.readFile(test_file.file_name);
        EXPECT_EQ(1, result);

        auto const geo_names = project.getGEOObjects().getGeometryNames();
        EXPECT_EQ(test_file.n_geo, geo_names.size());
        EXPECT_EQ(test_file.n_mesh, project.getMeshObjects().size());

        std::vector<std::unique_ptr<DataHolderLib::BoundaryCondition>> const&
            bcs = project.getBoundaryConditions();
        EXPECT_EQ(test_file.n_bc, bcs.size());
        for (auto& bc : bcs)
        {
            EXPECT_FALSE(bc->getProcessVarName().empty());
            EXPECT_FALSE(bc->getParamName().empty());
            EXPECT_FALSE(
                DataHolderLib::BoundaryCondition::ConditionType::NONE ==
                bc->getType());
            EXPECT_FALSE(bc->getBaseObjName().empty());
            if (bc->getBaseObjType() == DataHolderLib::BaseObjType::GEOMETRY)
            {
                EXPECT_FALSE(bc->getObjName().empty());
            }
        }

        std::vector<std::unique_ptr<DataHolderLib::SourceTerm>> const& sts =
            project.getSourceTerms();
        EXPECT_EQ(test_file.n_st, sts.size());
        for (auto& st : sts)
        {
            EXPECT_FALSE(st->getProcessVarName().empty());
            EXPECT_FALSE(st->getParamName().empty());
            EXPECT_FALSE(DataHolderLib::SourceTerm::ConditionType::NONE ==
                         st->getType());
            EXPECT_FALSE(st->getBaseObjName().empty());
            if (st->getBaseObjType() == DataHolderLib::BaseObjType::GEOMETRY)
            {
                EXPECT_FALSE(st->getObjName().empty());
            }
        }
    }
}
back to top