source: tests/smart-pointers.cfa @ 21a99cc

ADTast-experimentalenumforall-pointer-decaypthread-emulationqualifiedEnum
Last change on this file since 21a99cc was 8be729f, checked in by Andrew Beach <ajbeach@…>, 3 years ago

That should fix the memory module. Simply removed all the special features.

  • Property mode set to 100644
File size: 1.3 KB
Line 
1// Testing the smart pointers (counter_ptr and unique_ptr).
2
3#include <memory.hfa>
4#include <assert.h>
5
6void counter_test(void) {
7        counter_ptr(int) ptr0 = 3;
8
9        {
10                counter_ptr(int) ptr1 = ptr0;
11                *ptr1 = -7;
12        }
13        assert(-7 == *ptr0);
14
15        {
16                counter_ptr(int) ptr2 = 4;
17                ptr0 = ptr2;
18        }
19        assert(4 == *ptr0);
20
21        {
22                counter_ptr(int) ptr3 = ptr0;
23                counter_ptr(int) ptr4 = ptr0;
24        }
25}
26
27void unique_test(void) {
28        unique_ptr(char) ptr_a = 'a';
29        unique_ptr(char) ptr_b = 'b';
30        move(ptr_a, ptr_b);
31        assert(ptr_b == 0);
32        assert(*ptr_a == 'b');
33
34        unique_ptr(char) ptr_c = 'c';
35        ptr_c = 0;
36}
37
38void pointer_equality(void) {
39        {
40                counter_ptr(int) null = 0p;
41                assert(null == 0);
42                counter_ptr(int) hold = -7;
43                assert(hold != 0);
44                counter_ptr(int) twin = hold;
45                assert(hold == twin);
46        }
47        {
48                unique_ptr(int) null = 0p;
49                assert(null == 0);
50                unique_ptr(int) hold = -7;
51                assert(hold != 0);
52        }
53}
54
55void declare_test(void) {
56        counter_ptr(int) ptr_i0 = 3;
57        counter_ptr(char) ptr_c0 = 'a';
58        counter_ptr(float) ptr_f0 = 3.5f;
59        counter_ptr(double) ptr_d0 = 3.5;
60
61        unique_ptr(int) ptr_i1 = 3;
62        unique_ptr(char) ptr_c1 = 'a';
63        unique_ptr(float) ptr_f1 = 3.5f;
64        unique_ptr(double) ptr_d1 = 3.5;
65}
66
67int main(int argc, char * argv[]) {
68        counter_test();
69        unique_test();
70        pointer_equality();
71
72        printf("done\n");
73}
Note: See TracBrowser for help on using the repository browser.