File tree Expand file tree Collapse file tree 2 files changed +56
-2
lines changed Expand file tree Collapse file tree 2 files changed +56
-2
lines changed Original file line number Diff line number Diff line change 1
1
#include < objc-helpers/BlockUtil.h>
2
2
3
+ #include < Foundation/Foundation.h>
4
+
3
5
#include " doctest.h"
4
6
5
7
TEST_SUITE_BEGIN ( " BlockUtilTests" );
@@ -115,12 +117,47 @@ int operator()(int i) const {
115
117
}
116
118
CHECK (foo::record == " dmm~~o~" );
117
119
120
+ {
121
+ foo::record.clear ();
122
+ auto b = makeBlock (foo{});
123
+ decltype (b) b1 = std::move (b);
124
+ CHECK (b1 (42 ) == 42 );
125
+ }
126
+ CHECK (foo::record == " dm~mo~~" );
127
+
128
+ {
129
+ foo::record.clear ();
130
+ auto b = makeBlock (fooMoveOnly{});
131
+ decltype (b) b1 = std::move (b);
132
+ CHECK (b1 (42 ) == 42 );
133
+ }
134
+ CHECK (foo::record == " dm~mo~~" );
135
+
118
136
{
119
137
foo::record.clear ();
120
138
auto b = makeBlock (fooCopyOnly{});
121
139
decltype (b) b1 = std::move (b);
140
+ CHECK (b1 (42 ) == 42 );
122
141
}
123
- CHECK (foo::record == " dc~c~~" );
142
+ CHECK (foo::record == " dc~co~~" );
143
+ }
144
+
145
+ @interface MakeStrongCheck : NSObject {
146
+ @public int i;
147
+ }
148
+ @end
149
+
150
+ @implementation MakeStrongCheck
151
+ @end
152
+
153
+ TEST_CASE ( " makeStrong" ) {
154
+
155
+ auto str = [MakeStrongCheck new ];
156
+ auto weak = makeWeak (str);
157
+ REQUIRE (bool (weak));
158
+ auto str1 = makeStrong (weak);
159
+ bool equal = str == str1;
160
+ CHECK (equal);
124
161
}
125
162
126
163
TEST_SUITE_END ();
Original file line number Diff line number Diff line change @@ -121,12 +121,29 @@ TEST_CASE( "makeBlock" ) {
121
121
}
122
122
CHECK (foo::record == " dmm~~o~" );
123
123
124
+ {
125
+ foo::record.clear ();
126
+ auto b = makeBlock (foo{});
127
+ decltype (b) b1 = std::move (b);
128
+ CHECK (b1 (42 ) == 42 );
129
+ }
130
+ CHECK (foo::record == " dm~mo~~" );
131
+
132
+ {
133
+ foo::record.clear ();
134
+ auto b = makeBlock (fooMoveOnly{});
135
+ decltype (b) b1 = std::move (b);
136
+ CHECK (b1 (42 ) == 42 );
137
+ }
138
+ CHECK (foo::record == " dm~mo~~" );
139
+
124
140
{
125
141
foo::record.clear ();
126
142
auto b = makeBlock (fooCopyOnly{});
127
143
decltype (b) b1 = std::move (b);
144
+ CHECK (b1 (42 ) == 42 );
128
145
}
129
- CHECK (foo::record == " dc~c ~~" );
146
+ CHECK (foo::record == " dc~co ~~" );
130
147
}
131
148
132
149
TEST_SUITE_END ();
You can’t perform that action at this time.
0 commit comments