source: tests/smart-pointers.cfa@ 025f9c5

Last change on this file since 025f9c5 was 8be729f, checked in by Andrew Beach <ajbeach@…>, 5 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.