1 /*############################################################################
2 # Copyright (C) 2020 Intel Corporation
3 #
4 # SPDX-License-Identifier: MIT
5 ############################################################################*/
6
7 #include <gtest/gtest.h>
8
9 #include "src/dispatcher_common.h"
10
11 // leave table formatting alone
12 // clang-format off
13
14 struct TestPropVal {
15 mfxVariantType varType;
16 const char *name;
17 mfxU64 validData;
18 mfxU64 invalidData;
19 };
20
21 // all valid properties (CPU runtime) except non-filtering parameters (SetHandle, etc.)
22 // ApiVersion.Major and ApiVersion.Minor need to be used together, so not included here (handled in other test cases)
23 static const TestPropVal TestPropIntTab[] = {
24 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.Impl", MFX_IMPL_TYPE_SOFTWARE, 0xffffffff },
25 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.AccelerationMode", MFX_ACCEL_MODE_NA, 0xffffffff },
26 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.ApiVersion.Version", (MFX_VERSION_MAJOR << 16) | (MFX_VERSION_MINOR), (99 << 16) | (0) },
27 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.VendorID", 0x8086, 0xefefefef },
28 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.VendorImplID", 0, 0xffffffff },
29 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxSurfacePoolMode", MFX_ALLOCATION_UNLIMITED, 0xefefefef },
30
31 { MFX_VARIANT_TYPE_U16, "mfxImplDescription.mfxDeviceDescription.device.DeviceID", 0, 0xefef },
32 { MFX_VARIANT_TYPE_U16, "mfxImplDescription.mfxDeviceDescription.device.MediaAdapterType", MFX_MEDIA_UNKNOWN, MFX_MEDIA_INTEGRATED },
33
34 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxDecoderDescription.decoder.CodecID", MFX_CODEC_AVC, MFX_CODEC_VC1 },
35 { MFX_VARIANT_TYPE_U16, "mfxImplDescription.mfxDecoderDescription.decoder.MaxcodecLevel", MFX_LEVEL_AVC_52, MFX_LEVEL_AVC_62 },
36 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxDecoderDescription.decoder.decprofile.Profile", MFX_PROFILE_AVC_HIGH, MFX_PROFILE_AVC_HIGH_422 },
37 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxDecoderDescription.decoder.decprofile.decmemdesc.MemHandleType", MFX_RESOURCE_SYSTEM_SURFACE, MFX_RESOURCE_DX12_RESOURCE },
38 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxDecoderDescription.decoder.decprofile.decmemdesc.ColorFormats", MFX_FOURCC_I420, MFX_FOURCC_NV12 },
39
40 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxEncoderDescription.encoder.CodecID", MFX_CODEC_HEVC, MFX_CODEC_VC1 },
41 { MFX_VARIANT_TYPE_U16, "mfxImplDescription.mfxEncoderDescription.encoder.MaxcodecLevel", MFX_LEVEL_HEVC_51, MFX_LEVEL_HEVC_62 },
42 { MFX_VARIANT_TYPE_U16, "mfxImplDescription.mfxEncoderDescription.encoder.BiDirectionalPrediction", 1, 0xefef },
43 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxEncoderDescription.encoder.encprofile.Profile", MFX_PROFILE_AV1_MAIN, MFX_PROFILE_AV1_PRO },
44 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxEncoderDescription.encoder.encprofile.encmemdesc.MemHandleType", MFX_RESOURCE_SYSTEM_SURFACE, MFX_RESOURCE_DX12_RESOURCE },
45 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxEncoderDescription.encoder.encprofile.encmemdesc.ColorFormats", MFX_FOURCC_I420, MFX_FOURCC_NV12 },
46
47 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxVPPDescription.filter.FilterFourCC", MFX_EXTBUFF_VPP_COLOR_CONVERSION, MFX_EXTBUFF_VPP_DEINTERLACING },
48 { MFX_VARIANT_TYPE_U16, "mfxImplDescription.mfxVPPDescription.filter.MaxDelayInFrames", 1, 0xefef },
49 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxVPPDescription.filter.memdesc.MemHandleType", MFX_RESOURCE_SYSTEM_SURFACE, MFX_RESOURCE_DX12_RESOURCE },
50 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxVPPDescription.filter.memdesc.format.InFormat", MFX_FOURCC_I420, MFX_FOURCC_NV12 },
51 { MFX_VARIANT_TYPE_U32, "mfxImplDescription.mfxVPPDescription.filter.memdesc.format.OutFormats", MFX_FOURCC_I010, MFX_FOURCC_P010 },
52 };
53
54 #define NUM_TEST_PROP_INT (sizeof(TestPropIntTab) / sizeof(TestPropVal))
55
56 struct TestPropPtr {
57 mfxVariantType varType;
58 const char *name;
59 const void *validData;
60 const void *invalidData;
61 };
62
63 static const mfxRange32U cpuRangeValid = { 64, 4096, 8 };
64 static const mfxRange32U cpuRangeInvalidMin = { 32, 4096, 8 };
65 static const mfxRange32U cpuRangeInvalidMax = { 64, 9000, 8 };
66 static const mfxRange32U cpuRangeInvalidStep = { 64, 4096, 4 };
67
68 static const TestPropPtr TestPropPtrTab[] = {
69 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.ImplName", "oneAPI VPL CPU Implementation", "INVALID" },
70 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.License", "MIT", "INVALID" },
71 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.Keywords", "CPU", "INVALID" },
72
73 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxDeviceDescription.device.DeviceID", "0000", "efef" },
74
75 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxDecoderDescription.decoder.decprofile.decmemdesc.Width", reinterpret_cast<const void *>(&cpuRangeValid), reinterpret_cast<const void *>(&cpuRangeInvalidMin) },
76 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxDecoderDescription.decoder.decprofile.decmemdesc.Height", reinterpret_cast<const void *>(&cpuRangeValid), reinterpret_cast<const void *>(&cpuRangeInvalidMax) },
77
78 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxEncoderDescription.encoder.encprofile.encmemdesc.Width", reinterpret_cast<const void *>(&cpuRangeValid), reinterpret_cast<const void *>(&cpuRangeInvalidStep) },
79 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxEncoderDescription.encoder.encprofile.encmemdesc.Height", reinterpret_cast<const void *>(&cpuRangeValid), reinterpret_cast<const void *>(&cpuRangeInvalidMin) },
80
81 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxVPPDescription.filter.memdesc.Width", reinterpret_cast<const void *>(&cpuRangeValid), reinterpret_cast<const void *>(&cpuRangeInvalidMax) },
82 { MFX_VARIANT_TYPE_PTR, "mfxImplDescription.mfxVPPDescription.filter.memdesc.Height", reinterpret_cast<const void *>(&cpuRangeValid), reinterpret_cast<const void *>(&cpuRangeInvalidStep) },
83
84 { MFX_VARIANT_TYPE_PTR, "mfxImplementedFunctions.FunctionsName", "MFXVideoDECODE_VPP_Init", "INVALID" },
85 };
86
87 #define NUM_TEST_PROP_PTR (sizeof(TestPropPtrTab) / sizeof(TestPropPtr))
88
89 // set all properties in a separate cfg object for each
TEST(Dispatcher_SW_MultiProp,AllPropsValidOnePerConfig)90 TEST(Dispatcher_SW_MultiProp, AllPropsValidOnePerConfig) {
91 SKIP_IF_DISP_SW_DISABLED();
92
93 mfxStatus sts = MFX_ERR_NONE;
94 mfxLoader loader = nullptr;
95
96 loader = MFXLoad();
97 EXPECT_FALSE(loader == nullptr);
98
99 for (mfxU32 i = 0; i < NUM_TEST_PROP_INT; i++) {
100 sts = SetSingleProperty<mfxU64>(loader, TestPropIntTab[i].name, TestPropIntTab[i].varType, (mfxU64)TestPropIntTab[i].validData);
101 EXPECT_EQ(sts, MFX_ERR_NONE);
102 }
103
104 for (mfxU32 i = 0; i < NUM_TEST_PROP_PTR; i++) {
105 sts = SetSingleProperty<mfxHDL>(loader, TestPropPtrTab[i].name, TestPropPtrTab[i].varType, (mfxHDL)TestPropPtrTab[i].validData);
106 EXPECT_EQ(sts, MFX_ERR_NONE);
107 }
108
109 // create session with first implementation
110 mfxSession session = nullptr;
111 sts = MFXCreateSession(loader, 0, &session);
112 EXPECT_EQ(sts, MFX_ERR_NONE);
113 EXPECT_NE(session, nullptr);
114
115 sts = MFXClose(session);
116 EXPECT_EQ(sts, MFX_ERR_NONE);
117
118 // free internal resources
119 MFXUnload(loader);
120 }
121
122 // set all properties in the same cfg object for each
TEST(Dispatcher_SW_MultiProp,AllPropsValidSingleConfig)123 TEST(Dispatcher_SW_MultiProp, AllPropsValidSingleConfig) {
124 SKIP_IF_DISP_SW_DISABLED();
125
126 mfxStatus sts = MFX_ERR_NONE;
127 mfxLoader loader = nullptr;
128
129 loader = MFXLoad();
130 EXPECT_FALSE(loader == nullptr);
131
132 mfxConfig cfg = MFXCreateConfig(loader);
133 EXPECT_FALSE(cfg == nullptr);
134
135 for (mfxU32 i = 0; i < NUM_TEST_PROP_INT; i++) {
136 sts = SetSingleProperty<mfxU64>(loader, cfg, TestPropIntTab[i].name, TestPropIntTab[i].varType, (mfxU64)TestPropIntTab[i].validData);
137 EXPECT_EQ(sts, MFX_ERR_NONE);
138 }
139
140 for (mfxU32 i = 0; i < NUM_TEST_PROP_PTR; i++) {
141 sts = SetSingleProperty<mfxHDL>(loader, cfg, TestPropPtrTab[i].name, TestPropPtrTab[i].varType, (mfxHDL)TestPropPtrTab[i].validData);
142 EXPECT_EQ(sts, MFX_ERR_NONE);
143 }
144
145 // create session with first implementation
146 mfxSession session = nullptr;
147 sts = MFXCreateSession(loader, 0, &session);
148 EXPECT_EQ(sts, MFX_ERR_NONE);
149 EXPECT_NE(session, nullptr);
150
151 sts = MFXClose(session);
152 EXPECT_EQ(sts, MFX_ERR_NONE);
153
154 // free internal resources
155 MFXUnload(loader);
156 }
157
TestAllPropsIntSingleInvalid(mfxU32 invalidIdx,bool bUseSingleConfig=false)158 static mfxStatus TestAllPropsIntSingleInvalid(mfxU32 invalidIdx, bool bUseSingleConfig = false) {
159 mfxStatus sts = MFX_ERR_NONE;
160 mfxLoader loader = nullptr;
161
162 loader = MFXLoad();
163 EXPECT_FALSE(loader == nullptr);
164
165 mfxConfig cfg = nullptr;
166 if (bUseSingleConfig) {
167 cfg = MFXCreateConfig(loader);
168 EXPECT_FALSE(cfg == nullptr);
169 }
170
171 for (mfxU32 i = 0; i < NUM_TEST_PROP_INT; i++) {
172 mfxU64 data = (i == invalidIdx ? (mfxU64)TestPropIntTab[i].invalidData : (mfxU64)TestPropIntTab[i].validData);
173
174 if (bUseSingleConfig)
175 sts = SetSingleProperty<mfxU64>(loader, cfg, TestPropIntTab[i].name, TestPropIntTab[i].varType, data);
176 else
177 sts = SetSingleProperty<mfxU64>(loader, TestPropIntTab[i].name, TestPropIntTab[i].varType, data);
178
179 EXPECT_EQ(sts, MFX_ERR_NONE);
180 }
181
182 // expect to fail with one invalid property
183 mfxSession session = nullptr;
184 sts = MFXCreateSession(loader, 0, &session);
185 EXPECT_EQ(sts, MFX_ERR_NOT_FOUND);
186
187 // free internal resources
188 MFXUnload(loader);
189
190 return sts;
191 }
192
TestAllPropsPtrSingleInvalid(mfxU32 invalidIdx,bool bUseSingleConfig=false)193 static mfxStatus TestAllPropsPtrSingleInvalid(mfxU32 invalidIdx, bool bUseSingleConfig = false) {
194 mfxStatus sts = MFX_ERR_NONE;
195 mfxLoader loader = nullptr;
196
197 loader = MFXLoad();
198 EXPECT_FALSE(loader == nullptr);
199
200 mfxConfig cfg = nullptr;
201 if (bUseSingleConfig) {
202 cfg = MFXCreateConfig(loader);
203 EXPECT_FALSE(cfg == nullptr);
204 }
205
206 for (mfxU32 i = 0; i < NUM_TEST_PROP_PTR; i++) {
207 mfxHDL data = (i == invalidIdx ? (mfxHDL)TestPropPtrTab[i].invalidData : (mfxHDL)TestPropPtrTab[i].validData);
208
209 if (bUseSingleConfig)
210 sts = SetSingleProperty<mfxHDL>(loader, cfg, TestPropPtrTab[i].name, TestPropPtrTab[i].varType, data);
211 else
212 sts = SetSingleProperty<mfxHDL>(loader, TestPropPtrTab[i].name, TestPropPtrTab[i].varType, data);
213
214 EXPECT_EQ(sts, MFX_ERR_NONE);
215 }
216
217 // expect to fail with one invalid property
218 mfxSession session = nullptr;
219 sts = MFXCreateSession(loader, 0, &session);
220 EXPECT_EQ(sts, MFX_ERR_NOT_FOUND);
221
222 // free internal resources
223 MFXUnload(loader);
224
225 return sts;
226 }
227
228 // end table formatting
229 // clang-format on
230
231 // set all properties to valid (INT), except set one to invalid
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_00)232 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_00) {
233 SKIP_IF_DISP_SW_DISABLED();
234 TestAllPropsIntSingleInvalid(0);
235 }
236
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_01)237 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_01) {
238 SKIP_IF_DISP_SW_DISABLED();
239 TestAllPropsIntSingleInvalid(1);
240 }
241
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_02)242 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_02) {
243 SKIP_IF_DISP_SW_DISABLED();
244 TestAllPropsIntSingleInvalid(2);
245 }
246
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_03)247 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_03) {
248 SKIP_IF_DISP_SW_DISABLED();
249 TestAllPropsIntSingleInvalid(3);
250 }
251
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_04)252 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_04) {
253 SKIP_IF_DISP_SW_DISABLED();
254 TestAllPropsIntSingleInvalid(4);
255 }
256
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_05)257 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_05) {
258 SKIP_IF_DISP_SW_DISABLED();
259 TestAllPropsIntSingleInvalid(5);
260 }
261
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_06)262 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_06) {
263 SKIP_IF_DISP_SW_DISABLED();
264 TestAllPropsIntSingleInvalid(6);
265 }
266
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_07)267 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_07) {
268 SKIP_IF_DISP_SW_DISABLED();
269 TestAllPropsIntSingleInvalid(7);
270 }
271
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_08)272 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_08) {
273 SKIP_IF_DISP_SW_DISABLED();
274 TestAllPropsIntSingleInvalid(8);
275 }
276
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_09)277 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_09) {
278 SKIP_IF_DISP_SW_DISABLED();
279 TestAllPropsIntSingleInvalid(9);
280 }
281
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_10)282 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_10) {
283 SKIP_IF_DISP_SW_DISABLED();
284 TestAllPropsIntSingleInvalid(10);
285 }
286
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_11)287 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_11) {
288 SKIP_IF_DISP_SW_DISABLED();
289 TestAllPropsIntSingleInvalid(11);
290 }
291
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_12)292 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_12) {
293 SKIP_IF_DISP_SW_DISABLED();
294 TestAllPropsIntSingleInvalid(12);
295 }
296
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_13)297 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_13) {
298 SKIP_IF_DISP_SW_DISABLED();
299 TestAllPropsIntSingleInvalid(13);
300 }
301
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_14)302 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_14) {
303 SKIP_IF_DISP_SW_DISABLED();
304 TestAllPropsIntSingleInvalid(14);
305 }
306
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_15)307 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_15) {
308 SKIP_IF_DISP_SW_DISABLED();
309 TestAllPropsIntSingleInvalid(15);
310 }
311
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_16)312 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_16) {
313 SKIP_IF_DISP_SW_DISABLED();
314 TestAllPropsIntSingleInvalid(16);
315 }
316
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_17)317 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_17) {
318 SKIP_IF_DISP_SW_DISABLED();
319 TestAllPropsIntSingleInvalid(17);
320 }
321
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_18)322 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_18) {
323 SKIP_IF_DISP_SW_DISABLED();
324 TestAllPropsIntSingleInvalid(18);
325 }
326
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_19)327 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_19) {
328 SKIP_IF_DISP_SW_DISABLED();
329 TestAllPropsIntSingleInvalid(19);
330 }
331
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_20)332 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_20) {
333 SKIP_IF_DISP_SW_DISABLED();
334 TestAllPropsIntSingleInvalid(20);
335 }
336
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_21)337 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_21) {
338 SKIP_IF_DISP_SW_DISABLED();
339 TestAllPropsIntSingleInvalid(21);
340 }
341
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_22)342 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_22) {
343 SKIP_IF_DISP_SW_DISABLED();
344 TestAllPropsIntSingleInvalid(22);
345 }
346
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsInt_InvalidProp_23)347 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsInt_InvalidProp_23) {
348 SKIP_IF_DISP_SW_DISABLED();
349 TestAllPropsIntSingleInvalid(23);
350 }
351
352 // set all properties to valid (PTR), except set one to invalid
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_00)353 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_00) {
354 SKIP_IF_DISP_SW_DISABLED();
355 TestAllPropsPtrSingleInvalid(0);
356 }
357
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_01)358 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_01) {
359 SKIP_IF_DISP_SW_DISABLED();
360 TestAllPropsPtrSingleInvalid(1);
361 }
362
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_02)363 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_02) {
364 SKIP_IF_DISP_SW_DISABLED();
365 TestAllPropsPtrSingleInvalid(2);
366 }
367
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_03)368 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_03) {
369 SKIP_IF_DISP_SW_DISABLED();
370 TestAllPropsPtrSingleInvalid(3);
371 }
372
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_04)373 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_04) {
374 SKIP_IF_DISP_SW_DISABLED();
375 TestAllPropsPtrSingleInvalid(4);
376 }
377
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_05)378 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_05) {
379 SKIP_IF_DISP_SW_DISABLED();
380 TestAllPropsPtrSingleInvalid(5);
381 }
382
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_06)383 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_06) {
384 SKIP_IF_DISP_SW_DISABLED();
385 TestAllPropsPtrSingleInvalid(6);
386 }
387
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_07)388 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_07) {
389 SKIP_IF_DISP_SW_DISABLED();
390 TestAllPropsPtrSingleInvalid(7);
391 }
392
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_08)393 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_08) {
394 SKIP_IF_DISP_SW_DISABLED();
395 TestAllPropsPtrSingleInvalid(8);
396 }
397
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_09)398 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_09) {
399 SKIP_IF_DISP_SW_DISABLED();
400 TestAllPropsPtrSingleInvalid(9);
401 }
402
TEST(Dispatcher_SW_MultiProp,MultiConfig_AllPropsPtr_InvalidProp_10)403 TEST(Dispatcher_SW_MultiProp, MultiConfig_AllPropsPtr_InvalidProp_10) {
404 SKIP_IF_DISP_SW_DISABLED();
405 TestAllPropsPtrSingleInvalid(10);
406 }
407
408 // repeat tests, but use same config object for all properties
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_00)409 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_00) {
410 SKIP_IF_DISP_SW_DISABLED();
411 TestAllPropsIntSingleInvalid(0, true);
412 }
413
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_01)414 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_01) {
415 SKIP_IF_DISP_SW_DISABLED();
416 TestAllPropsIntSingleInvalid(1, true);
417 }
418
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_02)419 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_02) {
420 SKIP_IF_DISP_SW_DISABLED();
421 TestAllPropsIntSingleInvalid(2, true);
422 }
423
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_03)424 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_03) {
425 SKIP_IF_DISP_SW_DISABLED();
426 TestAllPropsIntSingleInvalid(3, true);
427 }
428
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_04)429 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_04) {
430 SKIP_IF_DISP_SW_DISABLED();
431 TestAllPropsIntSingleInvalid(4, true);
432 }
433
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_05)434 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_05) {
435 SKIP_IF_DISP_SW_DISABLED();
436 TestAllPropsIntSingleInvalid(5, true);
437 }
438
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_06)439 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_06) {
440 SKIP_IF_DISP_SW_DISABLED();
441 TestAllPropsIntSingleInvalid(6, true);
442 }
443
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_07)444 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_07) {
445 SKIP_IF_DISP_SW_DISABLED();
446 TestAllPropsIntSingleInvalid(7, true);
447 }
448
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_08)449 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_08) {
450 SKIP_IF_DISP_SW_DISABLED();
451 TestAllPropsIntSingleInvalid(8, true);
452 }
453
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_09)454 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_09) {
455 SKIP_IF_DISP_SW_DISABLED();
456 TestAllPropsIntSingleInvalid(9, true);
457 }
458
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_10)459 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_10) {
460 SKIP_IF_DISP_SW_DISABLED();
461 TestAllPropsIntSingleInvalid(10, true);
462 }
463
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_11)464 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_11) {
465 SKIP_IF_DISP_SW_DISABLED();
466 TestAllPropsIntSingleInvalid(11, true);
467 }
468
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_12)469 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_12) {
470 SKIP_IF_DISP_SW_DISABLED();
471 TestAllPropsIntSingleInvalid(12, true);
472 }
473
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_13)474 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_13) {
475 SKIP_IF_DISP_SW_DISABLED();
476 TestAllPropsIntSingleInvalid(13, true);
477 }
478
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_14)479 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_14) {
480 SKIP_IF_DISP_SW_DISABLED();
481 TestAllPropsIntSingleInvalid(14, true);
482 }
483
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_15)484 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_15) {
485 SKIP_IF_DISP_SW_DISABLED();
486 TestAllPropsIntSingleInvalid(15, true);
487 }
488
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_16)489 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_16) {
490 SKIP_IF_DISP_SW_DISABLED();
491 TestAllPropsIntSingleInvalid(16, true);
492 }
493
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_17)494 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_17) {
495 SKIP_IF_DISP_SW_DISABLED();
496 TestAllPropsIntSingleInvalid(17, true);
497 }
498
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_18)499 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_18) {
500 SKIP_IF_DISP_SW_DISABLED();
501 TestAllPropsIntSingleInvalid(18, true);
502 }
503
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_19)504 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_19) {
505 SKIP_IF_DISP_SW_DISABLED();
506 TestAllPropsIntSingleInvalid(19, true);
507 }
508
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_20)509 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_20) {
510 SKIP_IF_DISP_SW_DISABLED();
511 TestAllPropsIntSingleInvalid(20, true);
512 }
513
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_21)514 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_21) {
515 SKIP_IF_DISP_SW_DISABLED();
516 TestAllPropsIntSingleInvalid(21, true);
517 }
518
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_22)519 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_22) {
520 SKIP_IF_DISP_SW_DISABLED();
521 TestAllPropsIntSingleInvalid(22, true);
522 }
523
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsInt_InvalidProp_23)524 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsInt_InvalidProp_23) {
525 SKIP_IF_DISP_SW_DISABLED();
526 TestAllPropsIntSingleInvalid(23, true);
527 }
528
529 // set all properties to valid (PTR), except set one to invalid
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_00)530 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_00) {
531 SKIP_IF_DISP_SW_DISABLED();
532 TestAllPropsPtrSingleInvalid(0, true);
533 }
534
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_01)535 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_01) {
536 SKIP_IF_DISP_SW_DISABLED();
537 TestAllPropsPtrSingleInvalid(1, true);
538 }
539
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_02)540 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_02) {
541 SKIP_IF_DISP_SW_DISABLED();
542 TestAllPropsPtrSingleInvalid(2, true);
543 }
544
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_03)545 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_03) {
546 SKIP_IF_DISP_SW_DISABLED();
547 TestAllPropsPtrSingleInvalid(3, true);
548 }
549
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_04)550 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_04) {
551 SKIP_IF_DISP_SW_DISABLED();
552 TestAllPropsPtrSingleInvalid(4, true);
553 }
554
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_05)555 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_05) {
556 SKIP_IF_DISP_SW_DISABLED();
557 TestAllPropsPtrSingleInvalid(5, true);
558 }
559
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_06)560 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_06) {
561 SKIP_IF_DISP_SW_DISABLED();
562 TestAllPropsPtrSingleInvalid(6, true);
563 }
564
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_07)565 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_07) {
566 SKIP_IF_DISP_SW_DISABLED();
567 TestAllPropsPtrSingleInvalid(7, true);
568 }
569
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_08)570 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_08) {
571 SKIP_IF_DISP_SW_DISABLED();
572 TestAllPropsPtrSingleInvalid(8, true);
573 }
574
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_09)575 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_09) {
576 SKIP_IF_DISP_SW_DISABLED();
577 TestAllPropsPtrSingleInvalid(9, true);
578 }
579
TEST(Dispatcher_SW_MultiProp,SingleConfig_AllPropsPtr_InvalidProp_10)580 TEST(Dispatcher_SW_MultiProp, SingleConfig_AllPropsPtr_InvalidProp_10) {
581 SKIP_IF_DISP_SW_DISABLED();
582 TestAllPropsPtrSingleInvalid(10, true);
583 }
584