From 799013a9cdde6f7dceb4a83915775c3145ed3ab3 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 18 Mar 2024 11:55:59 +0100 Subject: [PATCH] tests: add unit tests for VRML file with textures --- data/tests/TestVRMLTextures.FCStd | Bin 0 -> 35083 bytes tests/src/App/CMakeLists.txt | 1 + tests/src/App/VRMLObject.cpp | 97 ++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 data/tests/TestVRMLTextures.FCStd create mode 100644 tests/src/App/VRMLObject.cpp diff --git a/data/tests/TestVRMLTextures.FCStd b/data/tests/TestVRMLTextures.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..2c9e210d1297be57b2086a51816873d2a9fdd405 GIT binary patch literal 35083 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 N5dWDk-~O3#{|mz9S1JGi literal 0 HcmV?d00001 diff --git a/tests/src/App/CMakeLists.txt b/tests/src/App/CMakeLists.txt index 0bc121285f..cdd545cadf 100644 --- a/tests/src/App/CMakeLists.txt +++ b/tests/src/App/CMakeLists.txt @@ -20,4 +20,5 @@ target_sources( ${CMAKE_CURRENT_SOURCE_DIR}/PropertyExpressionEngine.cpp ${CMAKE_CURRENT_SOURCE_DIR}/StringHasher.cpp ${CMAKE_CURRENT_SOURCE_DIR}/VarSet.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/VRMLObject.cpp ) diff --git a/tests/src/App/VRMLObject.cpp b/tests/src/App/VRMLObject.cpp new file mode 100644 index 0000000000..f6e2a6ef36 --- /dev/null +++ b/tests/src/App/VRMLObject.cpp @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +/*************************************************************************** + * Copyright (c) 2024 Werner Mayer * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#include "gtest/gtest.h" +#include "gmock/gmock.h" + +#include +#include +#include +#include +#include + +// NOLINTBEGIN + +class VRMLObjectTest: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + tests::initApplication(); + } + + void SetUp() override + { + document = App::GetApplication().openDocument(fileName().c_str()); + } + + void TearDown() override + { + if (document) { + App::GetApplication().closeDocument(document->getName()); + } + } + + std::string fileName() const + { + std::string resDir(DATADIR); + resDir.append("/tests/TestVRMLTextures.FCStd"); + return resDir; + } + + App::Document* getDocument() const + { + return document; + } + +private: + App::Document* document {}; +}; + +TEST_F(VRMLObjectTest, loadVRMLWithTextures) +{ + App::Document* doc = getDocument(); + ASSERT_TRUE(doc); + + auto vrml = dynamic_cast(doc->getActiveObject()); + ASSERT_TRUE(vrml); + + auto res = vrml->Resources.getValues(); + EXPECT_EQ(res.size(), 6); + EXPECT_EQ(res[0], std::string("FreeCAD/FreeCAD1.png")); + EXPECT_EQ(res[1], std::string("FreeCAD/FreeCAD2.png")); + EXPECT_EQ(res[2], std::string("FreeCAD/FreeCAD3.png")); + EXPECT_EQ(res[3], std::string("FreeCAD/FreeCAD4.png")); + EXPECT_EQ(res[4], std::string("FreeCAD/FreeCAD5.png")); + EXPECT_EQ(res[5], std::string("FreeCAD/FreeCAD6.png")); + + auto url = vrml->Urls.getValues(); + EXPECT_EQ(url.size(), 6); + for (const auto& it : url) { + Base::FileInfo fi(it); + EXPECT_TRUE(fi.isFile()); + EXPECT_TRUE(fi.exists()); + } +} + +// NOLINTEND