Blender V4.3
file_handler_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#include "BKE_file_handler.hh"
6
7#include "BLI_string.h"
8
9#include "testing/testing.h"
10
11namespace blender::bke::tests {
12#define MAX_FILE_HANDLERS_TEST_SIZE 8
14
15static void file_handler_add_test(const int test_number,
16 const char *idname,
17 const char *label,
18 const char *file_extensions_str,
19 blender::Vector<std::string> expected_file_extensions)
20{
21 EXPECT_LE(test_number, MAX_FILE_HANDLERS_TEST_SIZE);
22 EXPECT_GE(test_number, 1);
23 EXPECT_EQ(file_handlers().size(), test_number - 1);
24
25 std::unique_ptr<FileHandlerType> file_handler = std::make_unique<FileHandlerType>();
26
27 test_file_handlers[test_number - 1] = file_handler.get();
28
29 STRNCPY(file_handler->idname, idname);
30 STRNCPY(file_handler->file_extensions_str, file_extensions_str);
31 STRNCPY(file_handler->label, label);
32
33 file_handler_add(std::move(file_handler));
34 EXPECT_EQ(file_handlers().size(), test_number);
35 EXPECT_EQ(file_handlers()[test_number - 1].get(), test_file_handlers[test_number - 1]);
36 EXPECT_EQ(file_handlers()[test_number - 1]->file_extensions, expected_file_extensions);
37}
38
39TEST(file_handler, add)
40{
42 "Test_FH_blender1",
43 "File Handler Test 1",
44 ".blender;.blend;.ble",
45 {".blender", ".blend", ".ble"});
46 file_handler_add_test(2, "Test_FH_blender2", "File Handler Test 2", ".ble", {".ble"});
47 file_handler_add_test(3, "Test_FH_blender3", "File Handler Test 3", ";;.ble", {".ble"});
48 file_handler_add_test(4, "Test_FH_blender4", "File Handler Test 4", ";.ble;", {".ble"});
49 file_handler_add_test(5, "Test_FH_blender5", "File Handler Test 5", "d", {});
50 file_handler_add_test(6, "Test_FH_blender6", "File Handler Test 6", ";;", {});
51 file_handler_add_test(7, "Test_FH_blender7", "File Handler Test 7", ".", {});
52 file_handler_add_test(8, "Test_FH_blender8", "File Handler Test 8", "", {});
53}
54
55TEST(file_handler, find)
56{
58 EXPECT_EQ(file_handler_find("Test_FH_blender1"), test_file_handlers[0]);
59 EXPECT_EQ(file_handler_find("Test_FH_blender2"), test_file_handlers[1]);
60 EXPECT_EQ(file_handler_find("Test_FH_blender3"), test_file_handlers[2]);
61 EXPECT_EQ(file_handler_find("Test_FH_blender4"), test_file_handlers[3]);
62 EXPECT_EQ(file_handler_find("Test_FH_blender5"), test_file_handlers[4]);
63 EXPECT_EQ(file_handler_find("Test_FH_blender6"), test_file_handlers[5]);
64 EXPECT_EQ(file_handler_find("Test_FH_blender7"), test_file_handlers[6]);
65 EXPECT_EQ(file_handler_find("Test_FH_blender8"), test_file_handlers[7]);
66 EXPECT_EQ(file_handler_find("Test_FH_blende"), nullptr);
67 EXPECT_EQ(file_handler_find("TstFH_blen"), nullptr);
68}
69
70TEST(file_handler, remove)
71{
73
74 file_handler_remove(file_handler_find("Test_FH_blender2"));
75
77 EXPECT_EQ(file_handler_find("Test_FH_blender2"), nullptr);
78
80 EXPECT_EQ(file_handler_find("Test_FH_blender1"), test_file_handlers[0]);
81 EXPECT_EQ(file_handler_find("Test_FH_blender3"), test_file_handlers[2]);
82 EXPECT_EQ(file_handler_find("Test_FH_blender4"), test_file_handlers[3]);
83 EXPECT_EQ(file_handler_find("Test_FH_blender5"), test_file_handlers[4]);
84 EXPECT_EQ(file_handler_find("Test_FH_blender6"), test_file_handlers[5]);
85 EXPECT_EQ(file_handler_find("Test_FH_blender7"), test_file_handlers[6]);
86 EXPECT_EQ(file_handler_find("Test_FH_blender8"), test_file_handlers[7]);
87
95
96 file_handler_remove(file_handler_find("Test_FH_blender8"));
97
99 EXPECT_EQ(file_handler_find("Test_FH_blender8"), nullptr);
100
102 EXPECT_EQ(file_handler_find("Test_FH_blender1"), test_file_handlers[0]);
103 EXPECT_EQ(file_handler_find("Test_FH_blender3"), test_file_handlers[2]);
104 EXPECT_EQ(file_handler_find("Test_FH_blender4"), test_file_handlers[3]);
105 EXPECT_EQ(file_handler_find("Test_FH_blender5"), test_file_handlers[4]);
106 EXPECT_EQ(file_handler_find("Test_FH_blender6"), test_file_handlers[5]);
107 EXPECT_EQ(file_handler_find("Test_FH_blender7"), test_file_handlers[6]);
108
115}
116} // namespace blender::bke::tests
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define STRNCPY(dst, src)
Definition BLI_string.h:593
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
const char * label
#define MAX_FILE_HANDLERS_TEST_SIZE
TEST(action_groups, ReconstructGroupsWithReordering)
static void file_handler_add_test(const int test_number, const char *idname, const char *label, const char *file_extensions_str, blender::Vector< std::string > expected_file_extensions)
static FileHandlerType * test_file_handlers[MAX_FILE_HANDLERS_TEST_SIZE]
FileHandlerType * file_handler_find(StringRef idname)
void file_handler_add(std::unique_ptr< FileHandlerType > file_handler)
void file_handler_remove(FileHandlerType *file_handler)
Span< std::unique_ptr< FileHandlerType > > file_handlers()