38
38
namespace TestSky {
39
39
40
40
TEST_CASE (" [SceneTree][Sky] Constructor" ) {
41
- Sky *test_sky = memnew (Sky);
41
+ Ref<Sky> test_sky;
42
+ test_sky.instantiate ();
42
43
43
44
CHECK (test_sky->get_process_mode () == Sky::PROCESS_MODE_AUTOMATIC);
44
45
CHECK (test_sky->get_radiance_size () == Sky::RADIANCE_SIZE_256);
45
46
CHECK (test_sky->get_material ().is_null ());
46
- memdelete (test_sky);
47
47
}
48
48
49
49
TEST_CASE (" [SceneTree][Sky] Radiance size setter and getter" ) {
50
- Sky *test_sky = memnew (Sky);
50
+ Ref<Sky> test_sky;
51
+ test_sky.instantiate ();
51
52
52
53
// Check default.
53
54
CHECK (test_sky->get_radiance_size () == Sky::RADIANCE_SIZE_256);
@@ -61,25 +62,25 @@ TEST_CASE("[SceneTree][Sky] Radiance size setter and getter") {
61
62
ERR_PRINT_ON;
62
63
63
64
CHECK (test_sky->get_radiance_size () == Sky::RADIANCE_SIZE_1024);
64
-
65
- memdelete (test_sky);
66
65
}
67
66
68
67
TEST_CASE (" [SceneTree][Sky] Process mode setter and getter" ) {
69
- Sky *test_sky = memnew (Sky);
68
+ Ref<Sky> test_sky;
69
+ test_sky.instantiate ();
70
70
71
71
// Check default.
72
72
CHECK (test_sky->get_process_mode () == Sky::PROCESS_MODE_AUTOMATIC);
73
73
74
74
test_sky->set_process_mode (Sky::PROCESS_MODE_INCREMENTAL);
75
75
CHECK (test_sky->get_process_mode () == Sky::PROCESS_MODE_INCREMENTAL);
76
-
77
- memdelete (test_sky);
78
76
}
79
77
80
78
TEST_CASE (" [SceneTree][Sky] Material setter and getter" ) {
81
- Sky *test_sky = memnew (Sky);
82
- Ref<Material> material = memnew (Material);
79
+ Ref<Sky> test_sky;
80
+ test_sky.instantiate ();
81
+
82
+ Ref<Material> material;
83
+ material.instantiate ();
83
84
84
85
SUBCASE (" Material passed to the class should remain the same" ) {
85
86
test_sky->set_material (material);
@@ -92,8 +93,10 @@ TEST_CASE("[SceneTree][Sky] Material setter and getter") {
92
93
CHECK (test_sky->get_material () == material);
93
94
}
94
95
SUBCASE (" Material rewrite testing" ) {
95
- Ref<Material> material1 = memnew (Material);
96
- Ref<Material> material2 = memnew (Material);
96
+ Ref<Material> material1;
97
+ Ref<Material> material2;
98
+ material1.instantiate ();
99
+ material2.instantiate ();
97
100
98
101
test_sky->set_material (material1);
99
102
test_sky->set_material (material2);
@@ -104,19 +107,22 @@ TEST_CASE("[SceneTree][Sky] Material setter and getter") {
104
107
}
105
108
106
109
SUBCASE (" Assign same material to two skys" ) {
107
- Sky *sky2 = memnew (Sky);
110
+ Ref<Sky> sky2;
111
+ sky2.instantiate ();
108
112
109
113
test_sky->set_material (material);
110
114
sky2->set_material (material);
111
115
CHECK_MESSAGE (test_sky->get_material () == sky2->get_material (),
112
116
" Both skys should have the same material." );
113
- memdelete (sky2);
114
117
}
115
118
116
119
SUBCASE (" Swapping materials between two skys" ) {
117
- Sky *sky2 = memnew (Sky);
118
- Ref<Material> material1 = memnew (Material);
119
- Ref<Material> material2 = memnew (Material);
120
+ Ref<Sky> sky2;
121
+ sky2.instantiate ();
122
+ Ref<Material> material1;
123
+ Ref<Material> material2;
124
+ material1.instantiate ();
125
+ material2.instantiate ();
120
126
121
127
test_sky->set_material (material1);
122
128
sky2->set_material (material2);
@@ -130,10 +136,85 @@ TEST_CASE("[SceneTree][Sky] Material setter and getter") {
130
136
131
137
CHECK (test_sky->get_material () == material2);
132
138
CHECK (sky2->get_material () == material1);
133
- memdelete (sky2);
134
139
}
140
+ }
141
+
142
+ TEST_CASE (" [SceneTree][Sky] Invalid radiance size handling" ) {
143
+ Ref<Sky> test_sky;
144
+ test_sky.instantiate ();
145
+
146
+ // Attempt to set an invalid radiance size.
147
+ ERR_PRINT_OFF;
148
+ test_sky->set_radiance_size (Sky::RADIANCE_SIZE_MAX);
149
+ ERR_PRINT_ON;
150
+
151
+ // Verify that the radiance size remains unchanged.
152
+ CHECK (test_sky->get_radiance_size () == Sky::RADIANCE_SIZE_256);
153
+ }
154
+
155
+ TEST_CASE (" [SceneTree][Sky] Process mode variations" ) {
156
+ Ref<Sky> test_sky;
157
+ test_sky.instantiate ();
158
+
159
+ // Test all process modes.
160
+ const Sky::ProcessMode process_modes[] = {
161
+ Sky::PROCESS_MODE_AUTOMATIC,
162
+ Sky::PROCESS_MODE_QUALITY,
163
+ Sky::PROCESS_MODE_INCREMENTAL,
164
+ Sky::PROCESS_MODE_REALTIME
165
+ };
166
+
167
+ for (Sky::ProcessMode mode : process_modes) {
168
+ test_sky->set_process_mode (mode);
169
+ CHECK (test_sky->get_process_mode () == mode);
170
+ }
171
+ }
172
+
173
+ TEST_CASE (" [SceneTree][Sky] Radiance size variations" ) {
174
+ Ref<Sky> test_sky;
175
+ test_sky.instantiate ();
176
+
177
+ // Test all radiance sizes except MAX.
178
+ const Sky::RadianceSize radiance_sizes[] = {
179
+ Sky::RADIANCE_SIZE_32,
180
+ Sky::RADIANCE_SIZE_64,
181
+ Sky::RADIANCE_SIZE_128,
182
+ Sky::RADIANCE_SIZE_256,
183
+ Sky::RADIANCE_SIZE_512,
184
+ Sky::RADIANCE_SIZE_1024,
185
+ Sky::RADIANCE_SIZE_2048
186
+ };
187
+
188
+ for (Sky::RadianceSize size : radiance_sizes) {
189
+ test_sky->set_radiance_size (size);
190
+ CHECK (test_sky->get_radiance_size () == size);
191
+ }
192
+ }
193
+
194
+ TEST_CASE (" [SceneTree][Sky] Null material handling" ) {
195
+ Ref<Sky> test_sky;
196
+ test_sky.instantiate ();
197
+
198
+ SUBCASE (" Setting null material" ) {
199
+ test_sky->set_material (Ref<Material>());
200
+ CHECK (test_sky->get_material ().is_null ());
201
+ }
202
+
203
+ SUBCASE (" Overwriting existing material with null" ) {
204
+ Ref<Material> material;
205
+ material.instantiate ();
206
+ test_sky->set_material (material);
207
+ test_sky->set_material (Ref<Material>());
208
+
209
+ CHECK (test_sky->get_material ().is_null ());
210
+ }
211
+ }
135
212
136
- memdelete (test_sky);
213
+ TEST_CASE (" [SceneTree][Sky] RID generation" ) {
214
+ Ref<Sky> test_sky;
215
+ test_sky.instantiate ();
216
+ // Check validity.
217
+ CHECK (!test_sky->get_rid ().is_valid ());
137
218
}
138
219
139
220
} // namespace TestSky
0 commit comments