ReactOS 0.4.15-dev-7846-g8ba6c66
ExXList.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

static VOID TestXListFunctional (IN PXLIST_HEADER ListHead, IN PXLIST_ENTRY Entries, IN PKSPIN_LOCK pSpinLock)
 

Function Documentation

◆ TestXListFunctional()

static VOID TestXListFunctional ( IN PXLIST_HEADER  ListHead,
IN PXLIST_ENTRY  Entries,
IN PKSPIN_LOCK  pSpinLock 
)
static

Definition at line 4 of file ExXList.h.

8{
9 USHORT ExpectedSequence = 0;
10 PXLIST_ENTRY Ret;
11
12 Ret = FlushXList(ListHead);
13 ok_eq_pointer(Ret, NULL);
14 CheckXListHeader(ListHead, NULL, 0);
15
16 Ret = PopXList(ListHead, pSpinLock);
17 ok_eq_pointer(Ret, NULL);
18 CheckXListHeader(ListHead, NULL, 0);
19
20 Ret = PushXList(ListHead, &Entries[0], pSpinLock);
21 ++ExpectedSequence;
22 ok_eq_pointer(Ret, NULL);
23 ok_eq_pointer(Entries[0].Next, NULL);
24 CheckXListHeader(ListHead, &Entries[0], 1);
25
26 Ret = PushXList(ListHead, &Entries[1], pSpinLock);
27 ++ExpectedSequence;
28 ok_eq_pointer(Ret, &Entries[0]);
29 ok_eq_pointer(Entries[0].Next, NULL);
30 ok_eq_pointer(Entries[1].Next, &Entries[0]);
31 CheckXListHeader(ListHead, &Entries[1], 2);
32
33 Ret = PopXList(ListHead, pSpinLock);
34 ok_eq_pointer(Ret, &Entries[1]);
35 ok_eq_pointer(Entries[0].Next, NULL);
36 ok_free_xlist(Entries[1].Next, &Entries[0]);
37 CheckXListHeader(ListHead, &Entries[0], 1);
38
39 Ret = PopXList(ListHead, pSpinLock);
40 ok_eq_pointer(Ret, &Entries[0]);
41 ok_free_xlist(Entries[0].Next, NULL);
42 ok_free_xlist(Entries[1].Next, &Entries[0]);
43 CheckXListHeader(ListHead, NULL, 0);
44
45 Ret = PopXList(ListHead, pSpinLock);
46 ok_eq_pointer(Ret, NULL);
47 ok_free_xlist(Entries[0].Next, NULL);
48 ok_free_xlist(Entries[1].Next, &Entries[0]);
49 CheckXListHeader(ListHead, NULL, 0);
50
51 /* add entries again */
52 Ret = PushXList(ListHead, &Entries[0], pSpinLock);
53 ++ExpectedSequence;
54 ok_eq_pointer(Ret, NULL);
55 ok_eq_pointer(Entries[0].Next, NULL);
56 CheckXListHeader(ListHead, &Entries[0], 1);
57
58 Ret = PushXList(ListHead, &Entries[1], pSpinLock);
59 ++ExpectedSequence;
60 ok_eq_pointer(Ret, &Entries[0]);
61 ok_eq_pointer(Entries[0].Next, NULL);
62 ok_eq_pointer(Entries[1].Next, &Entries[0]);
63 CheckXListHeader(ListHead, &Entries[1], 2);
64
65 Ret = PopXList(ListHead, pSpinLock);
66 ok_eq_pointer(Ret, &Entries[1]);
67 ok_eq_pointer(Entries[0].Next, NULL);
68 ok_free_xlist(Entries[1].Next, &Entries[0]);
69 CheckXListHeader(ListHead, &Entries[0], 1);
70
71 Ret = PushXList(ListHead, &Entries[1], pSpinLock);
72 ++ExpectedSequence;
73 ok_eq_pointer(Ret, &Entries[0]);
74 ok_eq_pointer(Entries[0].Next, NULL);
75 ok_eq_pointer(Entries[1].Next, &Entries[0]);
76 CheckXListHeader(ListHead, &Entries[1], 2);
77
78 Ret = PushXList(ListHead, &Entries[2], pSpinLock);
79 ++ExpectedSequence;
80 ok_eq_pointer(Ret, &Entries[1]);
81 ok_eq_pointer(Entries[0].Next, NULL);
82 ok_eq_pointer(Entries[1].Next, &Entries[0]);
83 ok_eq_pointer(Entries[2].Next, &Entries[1]);
84 CheckXListHeader(ListHead, &Entries[2], 3);
85
86 Ret = FlushXList(ListHead);
87 ok_eq_pointer(Ret, &Entries[2]);
88 CheckXListHeader(ListHead, NULL, 0);
89}
#define PushXList
#define ok_free_xlist
#define PXLIST_ENTRY
#define CheckXListHeader
#define FlushXList
#define PopXList
static const ENTRY Entries[]
#define ok_eq_pointer(value, expected)
Definition: apitest.h:58
#define NULL
Definition: types.h:112
unsigned short USHORT
Definition: pedump.c:61