Blender V5.0
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 "testing/testing.h"
8
9# include "DNA_volume_types.h"
10
11# include "BKE_idtype.hh"
12# include "BKE_lib_id.hh"
13# include "BKE_main.hh"
14# include "BKE_volume.hh"
15# include "BKE_volume_grid.hh"
16
17namespace blender::bke::tests {
18
19class VolumeTest : public ::testing::Test {
20 public:
21 Main *bmain;
22
23 static void SetUpTestSuite()
24 {
26 }
27
28 static void TearDownTestSuite() {}
29
30 void SetUp() override
31 {
32 bmain = BKE_main_new();
33 }
34
35 void TearDown() override
36 {
37 BKE_main_free(bmain);
38 }
39};
40
41TEST_F(VolumeTest, add_grid_with_name_and_find)
42{
43 Volume *volume = BKE_id_new<Volume>(bmain, nullptr);
44 GVolumeGrid grid{VOLUME_GRID_FLOAT};
45 grid.get_for_write().set_name("My Grid");
46 const VolumeGridData *grid_data = grid.release();
47 BKE_volume_grid_add(volume, *grid_data);
48 EXPECT_EQ(grid_data, BKE_volume_grid_find(volume, "My Grid"));
49 EXPECT_TRUE(grid_data->is_mutable());
50 BKE_id_free(bmain, volume);
51}
52
53TEST_F(VolumeTest, add_grid_in_two_volumes)
54{
55 Volume *volume_a = BKE_id_new<Volume>(bmain, nullptr);
56 Volume *volume_b = BKE_id_new<Volume>(bmain, nullptr);
57 GVolumeGrid grid{VOLUME_GRID_FLOAT};
58 grid.get_for_write().set_name("My Grid");
59 const VolumeGridData *grid_data = grid.release();
60 BKE_volume_grid_add(volume_a, *grid_data);
61 EXPECT_TRUE(grid_data->is_mutable());
62 grid_data->add_user();
63 BKE_volume_grid_add(volume_b, *grid_data);
64 EXPECT_FALSE(grid_data->is_mutable());
65
66 VolumeGridData *grid_from_a = BKE_volume_grid_get_for_write(volume_a, 0);
67 const VolumeGridData *grid_from_b = BKE_volume_grid_get(volume_b, 0);
68 EXPECT_NE(grid_data, grid_from_a);
69 EXPECT_TRUE(grid_from_a->is_mutable());
70 EXPECT_TRUE(grid_from_b->is_mutable());
71
72 BKE_id_free(bmain, volume_a);
73 BKE_id_free(bmain, volume_b);
74}
75
76} // namespace blender::bke::tests
77
78#endif /* WITH_OPENVDB */
void BKE_idtype_init()
Definition idtype.cc:121
void BKE_id_free(Main *bmain, void *idv)
void * BKE_id_new(Main *bmain, short type, const char *name)
Definition lib_id.cc:1514
Main * BKE_main_new()
Definition main.cc:89
void BKE_main_free(Main *bmain)
Definition main.cc:192
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, blender::StringRef 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)
struct Volume Volume
TEST_F(ArmatureDeformTest, MeshDeform)