Skip to content

Commit c822d62

Browse files
authored
Merge pull request #1841 from alicevision/fix/unitTestDeps
[sfmDataIO] Fix Alembic dependency requirement for unit test
2 parents 71c98e0 + e37ab23 commit c822d62

File tree

3 files changed

+266
-222
lines changed

3 files changed

+266
-222
lines changed
+94-82
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,111 @@
11
# Headers
22
set(sfmDataIO_files_headers
3-
sfmDataIO.hpp
4-
bafIO.hpp
5-
colmap.hpp
6-
gtIO.hpp
7-
jsonIO.hpp
8-
middlebury.hpp
9-
plyIO.hpp
10-
viewIO.hpp
11-
sceneSample.hpp
3+
sfmDataIO.hpp
4+
bafIO.hpp
5+
colmap.hpp
6+
gtIO.hpp
7+
jsonIO.hpp
8+
middlebury.hpp
9+
plyIO.hpp
10+
viewIO.hpp
11+
sceneSample.hpp
1212
)
1313

1414
# Sources
1515
set(sfmDataIO_files_sources
16-
sfmDataIO.cpp
17-
bafIO.cpp
18-
colmap.cpp
19-
gtIO.cpp
20-
jsonIO.cpp
21-
middlebury.cpp
22-
plyIO.cpp
23-
viewIO.cpp
24-
sceneSample.cpp
16+
sfmDataIO.cpp
17+
bafIO.cpp
18+
colmap.cpp
19+
gtIO.cpp
20+
jsonIO.cpp
21+
middlebury.cpp
22+
plyIO.cpp
23+
viewIO.cpp
24+
sceneSample.cpp
2525
)
2626

27-
if(ALICEVISION_HAVE_ALEMBIC)
28-
list(APPEND sfmDataIO_files_headers
29-
AlembicExporter.hpp
30-
AlembicImporter.hpp
31-
)
32-
list(APPEND sfmDataIO_files_sources
33-
AlembicExporter.cpp
34-
AlembicImporter.cpp
35-
)
27+
if (ALICEVISION_HAVE_ALEMBIC)
28+
list(APPEND sfmDataIO_files_headers
29+
AlembicExporter.hpp
30+
AlembicImporter.hpp
31+
)
32+
list(APPEND sfmDataIO_files_sources
33+
AlembicExporter.cpp
34+
AlembicImporter.cpp
35+
)
3636
endif()
3737

3838
alicevision_add_library(aliceVision_sfmDataIO
39-
SOURCES ${sfmDataIO_files_headers} ${sfmDataIO_files_sources}
40-
PUBLIC_LINKS
41-
aliceVision_sfmData
42-
aliceVision_camera
43-
PRIVATE_LINKS
44-
assimp::assimp
45-
aliceVision_image
46-
Boost::regex
47-
Boost::boost
39+
SOURCES ${sfmDataIO_files_headers} ${sfmDataIO_files_sources}
40+
PUBLIC_LINKS
41+
aliceVision_sfmData
42+
aliceVision_camera
43+
PRIVATE_LINKS
44+
assimp::assimp
45+
aliceVision_image
46+
Boost::regex
47+
Boost::boost
4848
)
4949

5050

51-
if(ALICEVISION_HAVE_ALEMBIC)
52-
target_link_libraries(aliceVision_sfmDataIO
53-
PRIVATE Alembic::Alembic
54-
)
55-
# There is a missing include dependency in Alembic cmake export.
56-
target_include_directories(aliceVision_sfmDataIO
57-
PRIVATE "${ILMBASE_INCLUDE_DIR}"
58-
)
51+
if (ALICEVISION_HAVE_ALEMBIC)
52+
target_link_libraries(aliceVision_sfmDataIO
53+
PRIVATE Alembic::Alembic
54+
)
55+
# There is a missing include dependency in Alembic cmake export.
56+
target_include_directories(aliceVision_sfmDataIO
57+
PRIVATE "${ILMBASE_INCLUDE_DIR}"
58+
)
5959
endif()
6060

6161
# Unit tests
6262

6363
alicevision_add_test(sfmDataIO_test.cpp
64-
NAME "sfmDataIO"
65-
LINKS aliceVision_sfmData
66-
aliceVision_sfmDataIO
67-
aliceVision_feature
68-
aliceVision_system
64+
NAME "sfmDataIO"
65+
LINKS aliceVision_sfmData
66+
aliceVision_sfmDataIO
67+
aliceVision_feature
68+
aliceVision_system
6969
)
7070

71-
alicevision_add_test(sfmDataIOCompatibility_test.cpp
72-
NAME "sfmDataIOCompatibility"
73-
LINKS aliceVision_sfmData
74-
aliceVision_sfmDataIO
75-
aliceVision_feature
76-
aliceVision_system
71+
alicevision_add_test(sfmDataIOCompatibilityJson_test.cpp
72+
NAME "sfmDataIOCompatibilityJson"
73+
LINKS aliceVision_sfmData
74+
aliceVision_sfmDataIO
75+
aliceVision_feature
76+
aliceVision_system
7777
)
7878

79-
if(ALICEVISION_HAVE_ALEMBIC)
80-
alicevision_add_test(alembicIO_test.cpp NAME "sfmDataIO_alembic" LINKS aliceVision_sfmDataIO aliceVision_sfm Alembic::Alembic)
79+
if (ALICEVISION_HAVE_ALEMBIC)
80+
alicevision_add_test(sfmDataIOCompatibilityAbc_test.cpp
81+
NAME "sfmDataIOCompatibilityAbc"
82+
LINKS aliceVision_sfmData
83+
aliceVision_sfmDataIO
84+
aliceVision_feature
85+
aliceVision_system
86+
)
87+
alicevision_add_test(alembicIO_test.cpp
88+
NAME "sfmDataIO_alembic"
89+
LINKS aliceVision_sfmDataIO
90+
aliceVision_sfm
91+
Alembic::Alembic
92+
)
8193
endif()
8294

8395

8496
alicevision_add_test(middlebury_test.cpp
85-
NAME "sfmDataIO_middlebury"
86-
LINKS aliceVision_sfmData
87-
aliceVision_numeric
88-
aliceVision_sfmDataIO
89-
)
97+
NAME "sfmDataIO_middlebury"
98+
LINKS aliceVision_sfmData
99+
aliceVision_numeric
100+
aliceVision_sfmDataIO
101+
)
90102

91103
alicevision_add_test(colmap_test.cpp
92-
NAME "sfmDataIO_colmap"
93-
LINKS aliceVision_sfmData
94-
aliceVision_numeric
95-
aliceVision_sfmDataIO
96-
)
104+
NAME "sfmDataIO_colmap"
105+
LINKS aliceVision_sfmData
106+
aliceVision_numeric
107+
aliceVision_sfmDataIO
108+
)
97109

98110

99111
# SWIG Binding
@@ -114,11 +126,11 @@ if (ALICEVISION_BUILD_SWIG_BINDING)
114126
)
115127

116128
target_include_directories(sfmDataIO
117-
PRIVATE
118-
../include
119-
${ALICEVISION_ROOT}/include
120-
${Python3_INCLUDE_DIRS}
121-
${Python3_NumPy_INCLUDE_DIRS}
129+
PRIVATE
130+
../include
131+
${ALICEVISION_ROOT}/include
132+
${Python3_INCLUDE_DIRS}
133+
${Python3_NumPy_INCLUDE_DIRS}
122134
)
123135
set_property(
124136
TARGET sfmDataIO
@@ -130,20 +142,20 @@ if (ALICEVISION_BUILD_SWIG_BINDING)
130142
)
131143

132144
target_link_libraries(sfmDataIO
133-
PUBLIC
134-
aliceVision_sfmDataIO
145+
PUBLIC
146+
aliceVision_sfmDataIO
135147
)
136148

137149
install(
138-
TARGETS
139-
sfmDataIO
140-
DESTINATION
141-
${CMAKE_INSTALL_PREFIX}
150+
TARGETS
151+
sfmDataIO
152+
DESTINATION
153+
${CMAKE_INSTALL_PREFIX}
142154
)
143155
install(
144-
FILES
145-
${CMAKE_CURRENT_BINARY_DIR}/sfmDataIO.py
146-
DESTINATION
147-
${CMAKE_INSTALL_PREFIX}
156+
FILES
157+
${CMAKE_CURRENT_BINARY_DIR}/sfmDataIO.py
158+
DESTINATION
159+
${CMAKE_INSTALL_PREFIX}
148160
)
149161
endif()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
// This file is part of the AliceVision project.
2+
// Copyright (c) 2025 AliceVision contributors.
3+
// This Source Code Form is subject to the terms of the Mozilla Public License,
4+
// v. 2.0. If a copy of the MPL was not distributed with this file,
5+
// You can obtain one at https://mozilla.org/MPL/2.0/.
6+
7+
#include <aliceVision/system/Timer.hpp>
8+
#include <aliceVision/sfmData/SfMData.hpp>
9+
#include <aliceVision/sfmDataIO/sfmDataIO.hpp>
10+
#include <aliceVision/sfmDataIO/sceneSample.hpp>
11+
12+
#include <boost/preprocessor/stringize.hpp>
13+
14+
#include <filesystem>
15+
#include <sstream>
16+
17+
#define BOOST_TEST_MODULE sfmDataIO
18+
19+
#include <boost/test/unit_test.hpp>
20+
21+
using namespace aliceVision;
22+
using namespace aliceVision::sfmDataIO;
23+
24+
namespace fs = std::filesystem;
25+
26+
BOOST_AUTO_TEST_CASE(Compatibility_generate_abc_files_current_version)
27+
{
28+
sfmData::SfMData sfmData;
29+
generateSampleScene(sfmData);
30+
31+
fs::path pathSource(__FILE__);
32+
{
33+
fs::path outputPath = pathSource.parent_path() / "compatibilityData" /
34+
"scene_v" BOOST_PP_STRINGIZE(ALICEVISION_SFMDATAIO_VERSION_MAJOR) "." BOOST_PP_STRINGIZE(ALICEVISION_SFMDATAIO_VERSION_MINOR) "." BOOST_PP_STRINGIZE(ALICEVISION_SFMDATAIO_VERSION_REVISION) ".abc";
35+
BOOST_CHECK(sfmDataIO::save(sfmData, outputPath.string(), ESfMData::ALL));
36+
}
37+
}
38+
39+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_0)
40+
{
41+
sfmData::SfMData sfmData;
42+
generateSampleScene(sfmData);
43+
44+
fs::path pathSource(__FILE__);
45+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.0.abc";
46+
47+
sfmData::SfMData sfmDataLoad;
48+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
49+
50+
BOOST_CHECK(sfmData == sfmDataLoad);
51+
}
52+
53+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_1)
54+
{
55+
sfmData::SfMData sfmData;
56+
generateSampleScene(sfmData);
57+
58+
fs::path pathSource(__FILE__);
59+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.1.abc";
60+
61+
sfmData::SfMData sfmDataLoad;
62+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
63+
64+
BOOST_CHECK(sfmData == sfmDataLoad);
65+
}
66+
67+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_2)
68+
{
69+
sfmData::SfMData sfmData;
70+
generateSampleScene(sfmData);
71+
72+
fs::path pathSource(__FILE__);
73+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.2.abc";
74+
75+
sfmData::SfMData sfmDataLoad;
76+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
77+
78+
BOOST_CHECK(sfmData == sfmDataLoad);
79+
}
80+
81+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_3)
82+
{
83+
sfmData::SfMData sfmData;
84+
generateSampleScene(sfmData);
85+
86+
fs::path pathSource(__FILE__);
87+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.3.abc";
88+
89+
// TODO when we will have files to compare
90+
sfmData::SfMData sfmDataLoad;
91+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
92+
93+
BOOST_CHECK(sfmData == sfmDataLoad);
94+
}
95+
96+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_4)
97+
{
98+
sfmData::SfMData sfmData;
99+
generateSampleScene(sfmData);
100+
101+
fs::path pathSource(__FILE__);
102+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.4.abc";
103+
104+
// TODO when we will have files to compare
105+
sfmData::SfMData sfmDataLoad;
106+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
107+
108+
BOOST_CHECK(sfmData == sfmDataLoad);
109+
}
110+
111+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_5)
112+
{
113+
sfmData::SfMData sfmData;
114+
generateSampleScene(sfmData);
115+
116+
fs::path pathSource(__FILE__);
117+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.5.abc";
118+
119+
// TODO when we will have files to compare
120+
sfmData::SfMData sfmDataLoad;
121+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
122+
123+
BOOST_CHECK(sfmData == sfmDataLoad);
124+
}
125+
126+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_6)
127+
{
128+
sfmData::SfMData sfmData;
129+
generateSampleScene(sfmData);
130+
131+
fs::path pathSource(__FILE__);
132+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.6.abc";
133+
134+
// TODO when we will have files to compare
135+
sfmData::SfMData sfmDataLoad;
136+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
137+
138+
BOOST_CHECK(sfmData == sfmDataLoad);
139+
}
140+
141+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_8)
142+
{
143+
sfmData::SfMData sfmData;
144+
generateSampleScene(sfmData);
145+
146+
fs::path pathSource(__FILE__);
147+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.8.abc";
148+
149+
// TODO when we will have files to compare
150+
sfmData::SfMData sfmDataLoad;
151+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
152+
153+
BOOST_CHECK(sfmData == sfmDataLoad);
154+
}
155+
156+
BOOST_AUTO_TEST_CASE(Compatibility_abc_1_2_11)
157+
{
158+
sfmData::SfMData sfmData;
159+
generateSampleScene(sfmData);
160+
161+
fs::path pathSource(__FILE__);
162+
fs::path toLoad = pathSource.parent_path() / "compatibilityData" / "scene_v1.2.11.abc";
163+
164+
// TODO when we will have files to compare
165+
sfmData::SfMData sfmDataLoad;
166+
BOOST_CHECK(sfmDataIO::load(sfmDataLoad, toLoad.string(), ESfMData::ALL));
167+
168+
BOOST_CHECK(sfmData == sfmDataLoad);
169+
}

0 commit comments

Comments
 (0)