ReactOS 0.4.16-dev-237-gd6eebaa
interlck.c
Go to the documentation of this file.
1/*
2 * Unit test suite for interlocked functions.
3 *
4 * Copyright 2006 Hervé Poussineau
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#include "precomp.h"
22
24{
25 LONG dest, res;
26
27 dest = 0;
29 ok( res == 0 && dest == 1,
30 "Expected 0 and 1, got %ld and %ld", res, dest );
31
32 dest = 1;
34 ok( res == 1 && dest == 1,
35 "Expected 1 and 1, got %ld and %ld", res, dest );
36}
37
39{
40 LONG dest, res;
41
42 dest = 1;
44 ok( res == 0 && dest == 0,
45 "Expected 0 and 0, got %ld and %ld", res, dest );
46
47 dest = 0;
49 ok( res == -1 && dest == -1,
50 "Expected -1 and -1, got %ld and %ld", res, dest );
51
52 dest = -1;
54 ok( res == -2 && dest == -2,
55 "Expected -2 and -2, got %ld and %ld", res, dest );
56}
57
58static void test_InterlockedExchange(void)
59{
60 LONG dest, res;
61
62 dest = 0;
64 ok( res == 0 && dest == 1,
65 "Expected 0 and 1, got %ld and %ld", res, dest );
66
67 dest = 1;
69 ok( res == 1 && dest == 2,
70 "Expected 1 and 2, got %ld and %ld", res, dest );
71
72 dest = 1;
74 ok( res == 1 && dest == -1,
75 "Expected 1 and -1, got %ld and %ld", res, dest );
76}
77
79{
80 LONG dest, res;
81
82 dest = 0;
84 ok( res == 0 && dest == 1,
85 "Expected 0 and 1, got %ld and %ld", res, dest );
86
87 dest = 1;
89 ok( res == 1 && dest == 3,
90 "Expected 1 and 3, got %ld and %ld", res, dest );
91
92 dest = 1;
94 ok( res == 1 && dest == 0,
95 "Expected 1 and 0, got %ld and %ld", res, dest );
96}
97
99{
100 LONG dest, res;
101
102 dest = -2;
104 ok( res == -1 && dest == -1,
105 "Expected -1 and -1, got %ld and %ld", res, dest );
106
107 dest = -1;
109 ok( res == 0 && dest == 0,
110 "Expected 0 and 0, got %ld and %ld", res, dest );
111
112 dest = 0;
114 ok( res == 1 && dest == 1,
115 "Expected 1 and 1, got %ld and %ld", res, dest );
116}
117
118START_TEST(interlck)
119{
125}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedExchange
Definition: armddk.h:54
#define InterlockedDecrement
Definition: armddk.h:52
#define ok(value,...)
Definition: atltest.h:57
#define START_TEST(x)
Definition: atltest.h:75
GLuint res
Definition: glext.h:9613
#define InterlockedExchangeAdd
Definition: interlocked.h:181
#define InterlockedCompareExchange
Definition: interlocked.h:104
static void test_InterlockedIncrement(void)
Definition: interlck.c:98
static void test_InterlockedDecrement(void)
Definition: interlck.c:38
static void test_InterlockedExchange(void)
Definition: interlck.c:58
static void test_InterlockedExchangeAdd(void)
Definition: interlck.c:78
static void test_InterlockedCompareExchange(void)
Definition: interlck.c:23
static char * dest
Definition: rtl.c:135
long LONG
Definition: pedump.c:60