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