TianoCore EDK2 master
Loading...
Searching...
No Matches
DxePrmContextBufferLibUnitTest.c
Go to the documentation of this file.
1
10#include <stdio.h>
11#include <string.h>
12#include <stdarg.h>
13#include <stddef.h>
14#include <setjmp.h>
15#include <cmocka.h>
16
17#include <Uefi.h>
18
19#include <Guid/ZeroGuid.h>
20#include <Library/BaseLib.h>
22#include <Library/DebugLib.h>
24#include <Library/PrintLib.h>
27#include <Library/UnitTestLib.h>
28#include <Protocol/PrmConfig.h>
29
30#define UNIT_TEST_NAME "PRM Context Buffer Library Unit Test"
31#define UNIT_TEST_VERSION "0.1"
32
34
36
37// *----------------------------------------------------------------------------------*
38// * Context Structures *
39// *----------------------------------------------------------------------------------*
40typedef struct {
41 PRM_MODULE_CONTEXT_BUFFERS *InstallationStructure;
42 EFI_HANDLE Handle;
43 PRM_GUID_SEARCH_TYPE GuidSearchType;
44 EFI_GUID *Guid;
45 EFI_GUID *ExpectedModuleGuid;
46 EFI_STATUS ExpectedStatus;
48
49typedef struct {
50 EFI_GUID *HandlerGuid;
51 PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
52 PRM_CONTEXT_BUFFER *ExpectedContextBuffer;
53 EFI_STATUS ExpectedStatus;
55
56// *----------------------------------------------------------------------------------*
57// * Test GUIDs *
58// *----------------------------------------------------------------------------------*
59
60// {52960b90-2f3a-4917-b91a-ed5f599a8809}
61#define HANDLER_TEST_GUID_1 {0x52960b90, 0x2f3a, 0x4917, { 0xb9, 0x1a, 0xed, 0x5f, 0x59, 0x9a, 0x88, 0x09 }}
62EFI_GUID mHandlerTestGuid1 = HANDLER_TEST_GUID_1;
63
64// {9316a80d-06dc-417b-b21d-6b3c2ae4ed6f}
65#define HANDLER_TEST_GUID_2 {0x9316a80d, 0x06dc, 0x417b, { 0xb2, 0x1d, 0x6b, 0x3c, 0x2a, 0xe4, 0xed, 0x6f }}
66EFI_GUID mHandlerTestGuid2 = HANDLER_TEST_GUID_2;
67
68// {d32ac8ba-6cc6-456f-9ed9-9233fa310434}
69#define HANDLER_TEST_GUID_3 {0xd32ac8ba, 0x6cc6, 0x456f, { 0x9e, 0xd9, 0x92, 0x33, 0xfa, 0x31, 0x04, 0x34 }}
70EFI_GUID mHandlerTestGuid3 = HANDLER_TEST_GUID_3;
71
72// {faadaa95-070b-4a34-a919-18305dc07370}
73#define MODULE_TEST_GUID_1 {0xfaadaa95, 0x070b, 0x4a34, { 0xa9, 0x19, 0x18, 0x30, 0x5d, 0xc0, 0x73, 0x70 }}
74EFI_GUID mModuleTestGuid1 = MODULE_TEST_GUID_1;
75
76// {0ea24584-731c-4863-9100-75780af509a7}
77#define MODULE_TEST_GUID_2 {0x0ea24584, 0x731c, 0x4863, { 0x91, 0x00, 0x75, 0x78, 0x0a, 0xf5, 0x09, 0xa7 }}
78EFI_GUID mModuleTestGuid2 = MODULE_TEST_GUID_2;
79
80// {f456b7a1-82a6-4427-8486-87e3a602df43}
81#define MODULE_TEST_GUID_3 {0xf456b7a1, 0x82a6, 0x4427, { 0x84, 0x86, 0x87, 0xe3, 0xa6, 0x02, 0xdf, 0x43 }}
82EFI_GUID mModuleTestGuid3 = MODULE_TEST_GUID_3;
83
84// {4a941a9c-9dcf-471b-94b5-d9e2d8c64a1b}
85#define NEGATIVE_TEST_GUID {0x4a941a9c, 0x9dcf, 0x471b, {0x94, 0xb5, 0xd9, 0xe2, 0xd8, 0xc6, 0x4a, 0x1b }}
86EFI_GUID mNegativeTestGuid = NEGATIVE_TEST_GUID;
87
88// *----------------------------------------------------------------------------------*
89// * PRM Static Test Structures *
90// *----------------------------------------------------------------------------------*
91
92PRM_DATA_BUFFER mTestStaticDataBuffer1 = {
93 {
94 PRM_DATA_BUFFER_HEADER_SIGNATURE,
95 sizeof (PRM_DATA_BUFFER)
96 }
97 // No data in the buffer (only a header)
98};
99
100PRM_CONTEXT_BUFFER mTestPrmContextBuffer1 = {
101 PRM_CONTEXT_BUFFER_SIGNATURE, // Signature
102 PRM_CONTEXT_BUFFER_INTERFACE_VERSION, // Version
103 0, // Reserved
104 HANDLER_TEST_GUID_1, // HandlerGuid
105 &mTestStaticDataBuffer1 // StaticDataBuffer
106};
107
108PRM_CONTEXT_BUFFER mTestPrmContextBuffer2[2] = {
109 // Context buffer #1
110 {
111 PRM_CONTEXT_BUFFER_SIGNATURE, // Signature
112 PRM_CONTEXT_BUFFER_INTERFACE_VERSION, // Version
113 0, // Reserved
114 HANDLER_TEST_GUID_2, // HandlerGuid
115 NULL // StaticDataBuffer
116 },
117 // Context buffer #2
118 {
119 PRM_CONTEXT_BUFFER_SIGNATURE, // Signature
120 PRM_CONTEXT_BUFFER_INTERFACE_VERSION, // Version
121 0, // Reserved
122 HANDLER_TEST_GUID_3, // HandlerGuid
123 &mTestStaticDataBuffer1 // StaticDataBuffer (reuse buffer StaticDataBuffer1)
124 }
125};
126
127PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers1 = {
128 MODULE_TEST_GUID_1,
129 1,
130 &mTestPrmContextBuffer1,
131 NULL
132};
133
134PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers2 = {
135 MODULE_TEST_GUID_2,
136 1,
137 &mTestPrmContextBuffer1,
138 NULL
139};
140
141PRM_MODULE_CONTEXT_BUFFERS mTestPrmModuleContextBuffers3 = {
142 MODULE_TEST_GUID_3,
143 2,
144 &mTestPrmContextBuffer2[0],
145 NULL
146};
147
148// *----------------------------------------------------------------------------------*
149// * Test Contexts *
150// *----------------------------------------------------------------------------------*
151
152// * Searches by module GUID *
153// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
154// + InstallationStructure | Handle | GuidSearchType | Guid | ExpectedModuleGuid | ExpectedStatus |
155// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
156PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers00 = { &mTestPrmModuleContextBuffers1, NULL, ByModuleGuid, &mModuleTestGuid1, &mModuleTestGuid1, EFI_SUCCESS };
157PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers01 = { &mTestPrmModuleContextBuffers2, NULL, ByModuleGuid, &mModuleTestGuid2, &mModuleTestGuid2, EFI_SUCCESS };
158PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers02 = { &mTestPrmModuleContextBuffers3, NULL, ByModuleGuid, &mModuleTestGuid3, &mModuleTestGuid3, EFI_SUCCESS };
159PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers03 = { &mTestPrmModuleContextBuffers3, NULL, ByModuleGuid, &mNegativeTestGuid, &gZeroGuid, EFI_NOT_FOUND };
160PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers04 = { &mTestPrmModuleContextBuffers1, NULL, ByModuleGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
161
162// * Searches by handler GUID *
163// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
164// + InstallationStructure | Handle | GuidSearchType | Guid | ExpectedModuleGuid | ExpectedStatus |
165// +--------------------------------+--------+----------------+--------------------+--------------------+--------------------+
166PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers05 = { &mTestPrmModuleContextBuffers1, NULL, ByHandlerGuid, &mHandlerTestGuid1, &mModuleTestGuid1, EFI_SUCCESS };
167PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers06 = { &mTestPrmModuleContextBuffers1, NULL, ByHandlerGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
168PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers07 = { &mTestPrmModuleContextBuffers2, NULL, ByHandlerGuid, &mHandlerTestGuid1, &mModuleTestGuid2, EFI_SUCCESS };
169PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers08 = { &mTestPrmModuleContextBuffers2, NULL, ByHandlerGuid, &mNegativeTestGuid, &gZeroGuid, EFI_NOT_FOUND };
170PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers09 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid1, &gZeroGuid, EFI_NOT_FOUND };
171PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers10 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid2, &mModuleTestGuid3, EFI_SUCCESS };
172PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers11 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &mHandlerTestGuid3, &mModuleTestGuid3, EFI_SUCCESS };
173PRM_CONTEXT_BUFFERS_TEST_CONTEXT mContextBuffers12 = { &mTestPrmModuleContextBuffers3, NULL, ByHandlerGuid, &gZeroGuid, &gZeroGuid, EFI_NOT_FOUND };
174
175PRM_CONTEXT_BUFFERS_TEST_CONTEXT *mContextBuffersArray[] = {
176 &mContextBuffers00,
177 &mContextBuffers01,
178 &mContextBuffers02,
179 &mContextBuffers03,
180 &mContextBuffers04,
181 &mContextBuffers05,
182 &mContextBuffers06,
183 &mContextBuffers07,
184 &mContextBuffers08,
185 &mContextBuffers09,
186 &mContextBuffers10,
187 &mContextBuffers11,
188 &mContextBuffers12
189};
190
191// +----------------------+----------------------------------+------------------------------------------+--------------------+
192// + HandlerGuid | ContextBuffers | ExpectedContextBuffer | ExpectedStatus |
193// +----------------------+----------------------------------+------------------------------------------+--------------------+
194PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer00 = { &mHandlerTestGuid1, &mTestPrmModuleContextBuffers1, &mTestPrmContextBuffer1, EFI_SUCCESS };
195PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer01 = { &mHandlerTestGuid1, &mTestPrmModuleContextBuffers2, &mTestPrmContextBuffer1, EFI_SUCCESS };
196PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer02 = { &mHandlerTestGuid2, &mTestPrmModuleContextBuffers3, &mTestPrmContextBuffer2[0], EFI_SUCCESS };
197PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer03 = { &mHandlerTestGuid3, &mTestPrmModuleContextBuffers3, &mTestPrmContextBuffer2[1], EFI_SUCCESS };
198PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer04 = { &mNegativeTestGuid, &mTestPrmModuleContextBuffers1, NULL, EFI_NOT_FOUND };
199PRM_CONTEXT_BUFFER_TEST_CONTEXT mContextBuffer05 = { &gZeroGuid, &mTestPrmModuleContextBuffers3, NULL, EFI_NOT_FOUND };
200
201PRM_CONTEXT_BUFFER_TEST_CONTEXT *mContextBufferArray[] = {
202 &mContextBuffer00,
203 &mContextBuffer01,
204 &mContextBuffer02,
205 &mContextBuffer03,
206 &mContextBuffer04,
207 &mContextBuffer05
208};
209
211
212// None
213
215
217
229EFIAPI
231 IN UNIT_TEST_CONTEXT Context
232 )
233{
234 EFI_GUID Guid;
235 PRM_CONTEXT_BUFFER *ContextBufferPtr;
236 PRM_MODULE_CONTEXT_BUFFERS ModuleContextBuffers;
237 PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffersPtr;
238
239 ZeroMem (&ModuleContextBuffers, sizeof (ModuleContextBuffers));
240 ZeroMem (&Guid, sizeof (Guid));
241
243 UT_ASSERT_EQUAL (FindContextBufferInModuleBuffers (NULL, &ModuleContextBuffers, (CONST PRM_CONTEXT_BUFFER **)&ContextBufferPtr), EFI_INVALID_PARAMETER);
244 UT_ASSERT_EQUAL (FindContextBufferInModuleBuffers (&Guid, NULL, (CONST PRM_CONTEXT_BUFFER **)&ContextBufferPtr), EFI_INVALID_PARAMETER);
245 UT_ASSERT_EQUAL (FindContextBufferInModuleBuffers (&Guid, &ModuleContextBuffers, NULL), EFI_INVALID_PARAMETER);
246
247 UT_ASSERT_EQUAL (GetModuleContextBuffers (ByModuleGuid, NULL, NULL), EFI_INVALID_PARAMETER);
248 UT_ASSERT_EQUAL (GetModuleContextBuffers (ByModuleGuid, NULL, (CONST PRM_MODULE_CONTEXT_BUFFERS **)&ModuleContextBuffersPtr), EFI_INVALID_PARAMETER);
249 UT_ASSERT_EQUAL (GetModuleContextBuffers (ByModuleGuid, &Guid, NULL), EFI_INVALID_PARAMETER);
250
251 UT_ASSERT_EQUAL (GetContextBuffer (NULL, NULL, NULL), EFI_INVALID_PARAMETER);
252 UT_ASSERT_EQUAL (GetContextBuffer (NULL, &ModuleContextBuffers, (CONST PRM_CONTEXT_BUFFER **)&ContextBufferPtr), EFI_INVALID_PARAMETER);
253 UT_ASSERT_EQUAL (GetContextBuffer (&Guid, NULL, (CONST PRM_CONTEXT_BUFFER **)&ContextBufferPtr), EFI_NOT_FOUND);
254 UT_ASSERT_EQUAL (GetContextBuffer (&Guid, &ModuleContextBuffers, NULL), EFI_INVALID_PARAMETER);
255
256 return UNIT_TEST_PASSED;
257}
258
260
276STATIC
278EFIAPI
280 IN UNIT_TEST_CONTEXT Context
281 )
282{
283 EFI_STATUS Status;
284 PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
285 PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers;
287
288 UT_ASSERT_NOT_NULL (Context);
289 TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *)Context;
290 ModuleContextBuffers = TestContext->InstallationStructure;
291
292 PrmConfigProtocol = AllocateZeroPool (sizeof (*PrmConfigProtocol));
293 if (PrmConfigProtocol == NULL) {
294 return UNIT_TEST_ERROR_PREREQUISITE_NOT_MET;
295 }
296
297 CopyGuid (&PrmConfigProtocol->ModuleContextBuffers.ModuleGuid, &ModuleContextBuffers->ModuleGuid);
298 PrmConfigProtocol->ModuleContextBuffers.BufferCount = ModuleContextBuffers->BufferCount;
299 PrmConfigProtocol->ModuleContextBuffers.Buffer = ModuleContextBuffers->Buffer;
300
301 Status = gBS->InstallProtocolInterface (
302 &TestContext->Handle,
303 &gPrmConfigProtocolGuid,
305 (VOID *)PrmConfigProtocol
306 );
308
309 return UNIT_TEST_PASSED;
310}
311
327STATIC
328VOID
329EFIAPI
331 IN UNIT_TEST_CONTEXT Context
332 )
333{
334 EFI_STATUS Status;
335 PRM_CONFIG_PROTOCOL *PrmConfigProtocol;
337
338 TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *)Context;
339
340 Status = gBS->HandleProtocol (
341 TestContext->Handle,
342 &gPrmConfigProtocolGuid,
343 (VOID **)&PrmConfigProtocol
344 );
345
346 if (!EFI_ERROR (Status)) {
347 Status = gBS->UninstallProtocolInterface (
348 TestContext->Handle,
349 &gPrmConfigProtocolGuid,
350 PrmConfigProtocol
351 );
352 if (!EFI_ERROR (Status)) {
353 FreePool (PrmConfigProtocol);
354 }
355 }
356}
357
371EFIAPI
373 IN UNIT_TEST_CONTEXT Context
374 )
375{
376 EFI_STATUS Status;
377 PRM_MODULE_CONTEXT_BUFFERS *ContextBuffers;
379
380 ContextBuffers = NULL;
381 TestContext = (PRM_CONTEXT_BUFFERS_TEST_CONTEXT *)Context;
382
383 Status = GetModuleContextBuffers (TestContext->GuidSearchType, TestContext->Guid, (CONST PRM_MODULE_CONTEXT_BUFFERS **)&ContextBuffers);
384 UT_ASSERT_STATUS_EQUAL (Status, TestContext->ExpectedStatus);
385
386 if (!EFI_ERROR (TestContext->ExpectedStatus)) {
387 UT_ASSERT_TRUE (CompareGuid (TestContext->ExpectedModuleGuid, &ContextBuffers->ModuleGuid));
389 "%a: Searching by %a GUID ({%g}) returned ContextBuffers at 0x%x\n",
390 __func__,
391 ((TestContext->GuidSearchType == ByModuleGuid) ? "module" : "handler"),
392 TestContext->Guid,
393 (UINTN)ContextBuffers
394 );
395 }
396
397 return UNIT_TEST_PASSED;
398}
399
413EFIAPI
415 IN UNIT_TEST_CONTEXT Context
416 )
417{
418 EFI_STATUS Status;
419 PRM_CONTEXT_BUFFER *FoundContextBuffer;
421
422 FoundContextBuffer = NULL;
423 TestContext = (PRM_CONTEXT_BUFFER_TEST_CONTEXT *)Context;
424
425 Status = FindContextBufferInModuleBuffers (TestContext->HandlerGuid, TestContext->ContextBuffers, (CONST PRM_CONTEXT_BUFFER **)&FoundContextBuffer);
426 UT_ASSERT_STATUS_EQUAL (Status, TestContext->ExpectedStatus);
427
428 if (!EFI_ERROR (TestContext->ExpectedStatus)) {
429 UT_ASSERT_NOT_NULL (FoundContextBuffer);
430 UT_ASSERT_TRUE (FoundContextBuffer == TestContext->ExpectedContextBuffer);
431 }
432
433 return UNIT_TEST_PASSED;
434}
435
457EFIAPI
459 IN UNIT_TEST_CONTEXT Context
460 )
461{
462 EFI_STATUS Status;
463 PRM_CONTEXT_BUFFER *FoundContextBuffer;
465
466 FoundContextBuffer = NULL;
467 TestContext = (PRM_CONTEXT_BUFFER_TEST_CONTEXT *)Context;
468
469 Status = GetContextBuffer (TestContext->HandlerGuid, TestContext->ContextBuffers, (CONST PRM_CONTEXT_BUFFER **)&FoundContextBuffer);
470
471 UT_ASSERT_STATUS_EQUAL (Status, TestContext->ExpectedStatus);
472
473 if (!EFI_ERROR (TestContext->ExpectedStatus)) {
474 UT_ASSERT_NOT_NULL (FoundContextBuffer);
475 UT_ASSERT_TRUE (FoundContextBuffer == TestContext->ExpectedContextBuffer);
476 }
477
478 return UNIT_TEST_PASSED;
479}
480
482
493int
495 )
496{
497 EFI_STATUS Status;
498 UINTN Index;
499 UNIT_TEST_FRAMEWORK_HANDLE Framework;
500 UNIT_TEST_SUITE_HANDLE BasicTests;
501 UNIT_TEST_SUITE_HANDLE FunctionalCorrectnessTests;
502 CHAR8 TestCaseClassNameString[256];
503 CHAR8 TestCaseDescriptionString[256];
504
505 Framework = NULL;
506
507 DEBUG ((DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, UNIT_TEST_VERSION));
508
509 //
510 // Start setting up the test framework for running the tests.
511 //
512 Status = InitUnitTestFramework (&Framework, UNIT_TEST_NAME, gEfiCallerBaseName, UNIT_TEST_VERSION);
513 if (EFI_ERROR (Status)) {
514 DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status = %r\n", Status));
515 goto EXIT;
516 }
517
518 //
519 // Add all test suites and tests.
520 //
521 Status = CreateUnitTestSuite (&BasicTests, Framework, "Basic Context Buffer Tests", "PrmContextBufferLib.Basic", NULL, NULL);
522 if (EFI_ERROR (Status)) {
523 DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for PrmContextBufferLib.Basic\n"));
524 Status = EFI_OUT_OF_RESOURCES;
525 goto EXIT;
526 }
527
529 BasicTests,
530 "",
531 "PrmContextBufferLib.Basic.NullPointerGracefulFailure",
533 NULL,
534 NULL,
535 NULL
536 );
537
538 Status = CreateUnitTestSuite (&FunctionalCorrectnessTests, Framework, "Functional Correctness Tests", "PrmContextBufferLib.Functional", NULL, NULL);
539 if (EFI_ERROR (Status)) {
540 DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for PrmContextBufferLib.Functional\n"));
541 Status = EFI_OUT_OF_RESOURCES;
542 goto EXIT;
543 }
544
545 //
546 // Add Functional Correctness unit tests
547 //
548 for (Index = 0; Index < ARRAY_SIZE (mContextBuffersArray); Index++) {
549 ZeroMem (&TestCaseClassNameString[0], ARRAY_SIZE (TestCaseClassNameString));
550 ZeroMem (&TestCaseDescriptionString[0], ARRAY_SIZE (TestCaseDescriptionString));
551
553 &TestCaseClassNameString[0],
554 ARRAY_SIZE (TestCaseClassNameString),
555 "PrmContextBufferLib.Functional.VerifyGetModuleContextBuffers%d",
556 Index + 1
557 );
559 &TestCaseDescriptionString[0],
560 ARRAY_SIZE (TestCaseDescriptionString),
561 "Verify Get PRM Module Context Buffers Structure by %a GUID %d\n",
562 ((mContextBuffersArray[Index]->GuidSearchType == ByModuleGuid) ? "module" : "handler"),
563 Index + 1
564 );
565
567 FunctionalCorrectnessTests,
568 &TestCaseDescriptionString[0],
569 &TestCaseClassNameString[0],
573 mContextBuffersArray[Index]
574 );
575 }
576
577 for (Index = 0; Index < ARRAY_SIZE (mContextBufferArray); Index++) {
578 ZeroMem (&TestCaseClassNameString[0], ARRAY_SIZE (TestCaseClassNameString));
579 ZeroMem (&TestCaseDescriptionString[0], ARRAY_SIZE (TestCaseDescriptionString));
580
582 &TestCaseClassNameString[0],
583 ARRAY_SIZE (TestCaseClassNameString),
584 "PrmContextBufferLib.Functional.VerifyFindContextBufferInModuleBuffers%d",
585 Index + 1
586 );
588 &TestCaseDescriptionString[0],
589 ARRAY_SIZE (TestCaseDescriptionString),
590 "Verify Find PRM Context Buffer by Handler GUID %d\n",
591 Index + 1
592 );
593
595 FunctionalCorrectnessTests,
596 &TestCaseDescriptionString[0],
597 &TestCaseClassNameString[0],
599 NULL,
600 NULL,
601 mContextBufferArray[Index]
602 );
603 }
604
605 for (Index = 0; Index < ARRAY_SIZE (mContextBufferArray); Index++) {
606 ZeroMem (&TestCaseClassNameString[0], ARRAY_SIZE (TestCaseClassNameString));
607 ZeroMem (&TestCaseDescriptionString[0], ARRAY_SIZE (TestCaseDescriptionString));
608
610 &TestCaseClassNameString[0],
611 ARRAY_SIZE (TestCaseClassNameString),
612 "PrmContextBufferLib.Functional.VerifyGetContextBuffer%d",
613 Index + 1
614 );
616 &TestCaseDescriptionString[0],
617 ARRAY_SIZE (TestCaseDescriptionString),
618 "Verify Get PRM Context Buffer by Handler GUID %d\n",
619 Index + 1
620 );
621
623 FunctionalCorrectnessTests,
624 &TestCaseDescriptionString[0],
625 &TestCaseClassNameString[0],
627 NULL,
628 NULL,
629 mContextBufferArray[Index]
630 );
631 }
632
633 //
634 // Execute the tests.
635 //
636 Status = RunAllTestSuites (Framework);
637
638EXIT:
639 if (Framework) {
640 FreeUnitTestFramework (Framework);
641 }
642
643 return Status;
644}
UINT64 UINTN
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
Definition: MemLibGuid.c:73
GUID *EFIAPI CopyGuid(OUT GUID *DestinationGuid, IN CONST GUID *SourceGuid)
Definition: MemLibGuid.c:39
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
EFI_HANDLE mTestProtocolHandle
=== TEST DATA ==================================================================================
UNIT_TEST_STATUS EFIAPI VerifyFindContextBufferInModuleBuffers(IN UNIT_TEST_CONTEXT Context)
UNIT_TEST_STATUS EFIAPI NullPointerArgumentsShouldFailGracefully(IN UNIT_TEST_CONTEXT Context)
=== HELPER FUNCTIONS ===========================================================================
STATIC UNIT_TEST_STATUS EFIAPI InitializeFunctionalCorrectness(IN UNIT_TEST_CONTEXT Context)
===== FUNCTIONAL CORRECTNESS SUITE ==================================================
STATIC VOID EFIAPI DeInitializeFunctionalCorrectness(IN UNIT_TEST_CONTEXT Context)
UNIT_TEST_STATUS EFIAPI VerifyGetContextBuffer(IN UNIT_TEST_CONTEXT Context)
int main()
=== TEST ENGINE ================================================================================
UNIT_TEST_STATUS EFIAPI VerifyGetModuleContextBuffers(IN UNIT_TEST_CONTEXT Context)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
UINTN EFIAPI AsciiSPrint(OUT CHAR8 *StartOfBuffer, IN UINTN BufferSize, IN CONST CHAR8 *FormatString,...)
Definition: PrintLib.c:813
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define STATIC
Definition: Base.h:264
#define VOID
Definition: Base.h:269
#define ARRAY_SIZE(Array)
Definition: Base.h:1393
#define IN
Definition: Base.h:279
#define DEBUG(Expression)
Definition: DebugLib.h:435
EFI_STATUS FindContextBufferInModuleBuffers(IN CONST EFI_GUID *HandlerGuid, IN CONST PRM_MODULE_CONTEXT_BUFFERS *ModuleContextBuffers, OUT CONST PRM_CONTEXT_BUFFER **ContextBuffer)
EFI_STATUS GetContextBuffer(IN CONST EFI_GUID *PrmHandlerGuid, IN CONST PRM_MODULE_CONTEXT_BUFFERS *PrmModuleContextBuffers OPTIONAL, OUT CONST PRM_CONTEXT_BUFFER **PrmContextBuffer)
PRM_GUID_SEARCH_TYPE
@ ByModuleGuid
@ ByHandlerGuid
EFI_STATUS GetModuleContextBuffers(IN PRM_GUID_SEARCH_TYPE GuidSearchType, IN CONST EFI_GUID *Guid, OUT CONST PRM_MODULE_CONTEXT_BUFFERS **PrmModuleContextBuffers)
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
EFI_BOOT_SERVICES * gBS
@ EFI_NATIVE_INTERFACE
Definition: UefiSpec.h:1203
EFI_STATUS EFIAPI RunAllTestSuites(IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle)
Definition: RunTests.c:145
#define UT_ASSERT_NOT_NULL(Pointer)
Definition: UnitTestLib.h:439
VOID * UNIT_TEST_CONTEXT
Definition: UnitTestLib.h:54
#define UT_ASSERT_TRUE(Expression)
Definition: UnitTestLib.h:350
#define UT_ASSERT_EQUAL(ValueA, ValueB)
Definition: UnitTestLib.h:375
#define UT_ASSERT_STATUS_EQUAL(Status, Expected)
Definition: UnitTestLib.h:427
#define UT_LOG_INFO(Format,...)
Definition: UnitTestLib.h:813
EFI_STATUS EFIAPI CreateUnitTestSuite(OUT UNIT_TEST_SUITE_HANDLE *SuiteHandle, IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, IN CHAR8 *Title, IN CHAR8 *Name, IN UNIT_TEST_SUITE_SETUP Setup OPTIONAL, IN UNIT_TEST_SUITE_TEARDOWN Teardown OPTIONAL)
Definition: UnitTestLib.c:387
EFI_STATUS EFIAPI FreeUnitTestFramework(IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle)
Definition: UnitTestLib.c:203
EFI_STATUS EFIAPI AddTestCase(IN UNIT_TEST_SUITE_HANDLE SuiteHandle, IN CHAR8 *Description, IN CHAR8 *Name, IN UNIT_TEST_FUNCTION Function, IN UNIT_TEST_PREREQUISITE Prerequisite OPTIONAL, IN UNIT_TEST_CLEANUP CleanUp OPTIONAL, IN UNIT_TEST_CONTEXT Context OPTIONAL)
Definition: UnitTestLib.c:487
EFI_STATUS EFIAPI InitUnitTestFramework(OUT UNIT_TEST_FRAMEWORK_HANDLE *FrameworkHandle, IN CHAR8 *Title, IN CHAR8 *ShortTitle, IN CHAR8 *VersionString)
Definition: UnitTestLib.c:265
UINT32 UNIT_TEST_STATUS
Definition: UnitTestLib.h:16
#define UT_ASSERT_NOT_EFI_ERROR(Status)
Definition: UnitTestLib.h:414
Definition: Base.h:213
PRM_CONTEXT_BUFFER * Buffer