xref: /minix3/external/bsd/libc++/dist/libcxxrt/test/test_guard.cc (revision 4684ddb6aab0b36791c8099bc705d6140b3d05d0)
1*4684ddb6SLionel Sambuc #include <stdio.h>
2*4684ddb6SLionel Sambuc #include "test.h"
3*4684ddb6SLionel Sambuc 
4*4684ddb6SLionel Sambuc static int static_count;
5*4684ddb6SLionel Sambuc struct static_struct
6*4684ddb6SLionel Sambuc {
7*4684ddb6SLionel Sambuc 	int i;
static_structstatic_struct8*4684ddb6SLionel Sambuc 	static_struct()
9*4684ddb6SLionel Sambuc 	{
10*4684ddb6SLionel Sambuc 		static_count++;
11*4684ddb6SLionel Sambuc 		i = 12;
12*4684ddb6SLionel Sambuc 	};
13*4684ddb6SLionel Sambuc };
14*4684ddb6SLionel Sambuc 
15*4684ddb6SLionel Sambuc static static_struct ss;
16*4684ddb6SLionel Sambuc 
init_static(void)17*4684ddb6SLionel Sambuc int init_static(void)
18*4684ddb6SLionel Sambuc {
19*4684ddb6SLionel Sambuc 	static static_struct s;
20*4684ddb6SLionel Sambuc 	return s.i;
21*4684ddb6SLionel Sambuc }
22*4684ddb6SLionel Sambuc 
test_guards(void)23*4684ddb6SLionel Sambuc void test_guards(void)
24*4684ddb6SLionel Sambuc {
25*4684ddb6SLionel Sambuc 	init_static();
26*4684ddb6SLionel Sambuc 	int i = init_static();
27*4684ddb6SLionel Sambuc 	TEST(i == 12, "Static initialized");
28*4684ddb6SLionel Sambuc 	TEST(static_count == 2, "Each static only initialized once");
29*4684ddb6SLionel Sambuc }
30