Blender V4.3
volume_test.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#ifdef WITH_OPENVDB
6
7# include "openvdb/openvdb.h"
8
9# include "testing/testing.h"
10
11# include "DNA_volume_types.h"
12
13# include "BKE_idtype.hh"
14# include "BKE_lib_id.hh"
15# include "BKE_main.hh"
16# include "BKE_volume.hh"
17# include "BKE_volume_grid.hh"
18
19namespace blender::bke::tests {
20
21class VolumeTest : public ::testing::Test {
22 public:
23 Main *bmain;
24
25 static void SetUpTestSuite()
26 {
28 }
29
30 static void TearDownTestSuite() {}
31
32 void SetUp() override
33 {
34 bmain = BKE_main_new();
35 }
36
37 void TearDown() override
38 {
39 BKE_main_free(bmain);
40 }
41};
42
43TEST_F(VolumeTest, add_grid_with_name_and_find)
44{
45 Volume *volume = static_cast<Volume *>(BKE_id_new(bmain, ID_VO, nullptr));
46 GVolumeGrid grid{VOLUME_GRID_FLOAT};
47 grid.get_for_write().set_name("My Grid");
48 const VolumeGridData *grid_data = grid.release();
49 BKE_volume_grid_add(volume, *grid_data);
50 EXPECT_EQ(grid_data, BKE_volume_grid_find(volume, "My Grid"));
51 EXPECT_TRUE(grid_data->is_mutable());
52 BKE_id_free(bmain, volume);
53}
54
55TEST_F(VolumeTest, add_grid_in_two_volumes)
56{
57 Volume *volume_a = static_cast<Volume *>(BKE_id_new(bmain, ID_VO, nullptr));
58 Volume *volume_b = static_cast<Volume *>(BKE_id_new(bmain, ID_VO, nullptr));
59 GVolumeGrid grid{VOLUME_GRID_FLOAT};
60 grid.get_for_write().set_name("My Grid");
61 const VolumeGridData *grid_data = grid.release();
62 BKE_volume_grid_add(volume_a, *grid_data);
63 EXPECT_TRUE(grid_data->is_mutable());
64 grid_data->add_user();
65 BKE_volume_grid_add(volume_b, *grid_data);
66 EXPECT_FALSE(grid_data->is_mutable());
67
68 VolumeGridData *grid_from_a = BKE_volume_grid_get_for_write(volume_a, 0);
69 const VolumeGridData *grid_from_b = BKE_volume_grid_get(volume_b, 0);
70 EXPECT_NE(grid_data, grid_from_a);
71 EXPECT_TRUE(grid_from_a->is_mutable());
72 EXPECT_TRUE(grid_from_b->is_mutable());
73
74 BKE_id_free(bmain, volume_a);
75 BKE_id_free(bmain, volume_b);
76}
77
78} // namespace blender::bke::tests
79
80#endif /* WITH_OPENVDB */
void BKE_idtype_init()
Definition idtype.cc:127
void BKE_id_free(Main *bmain, void *idv)
void * BKE_id_new(Main *bmain, short type, const char *name)
Definition lib_id.cc:1482
Main * BKE_main_new(void)
Definition main.cc:45
void BKE_main_free(Main *bmain)
Definition main.cc:175
Volume data-block.
void BKE_volume_grid_add(Volume *volume, const blender::bke::VolumeGridData &grid)
blender::bke::VolumeGridData * BKE_volume_grid_get_for_write(Volume *volume, int grid_index)
const blender::bke::VolumeGridData * BKE_volume_grid_find(const Volume *volume, const char *name)
const blender::bke::VolumeGridData * BKE_volume_grid_get(const Volume *volume, int grid_index)
@ VOLUME_GRID_FLOAT
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
@ ID_VO
TEST_F(BKE_armature_find_selected_bones_test, some_bones_selected)