Skip to content

Commit b64a2f1

Browse files
committed
More tests
1 parent 6fcc58c commit b64a2f1

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

test/BlockUtilTest.mm

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include <objc-helpers/BlockUtil.h>
22

3+
#include <Foundation/Foundation.h>
4+
35
#include "doctest.h"
46

57
TEST_SUITE_BEGIN( "BlockUtilTests" );
@@ -115,12 +117,47 @@ int operator()(int i) const {
115117
}
116118
CHECK(foo::record == "dmm~~o~");
117119

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+
118136
{
119137
foo::record.clear();
120138
auto b = makeBlock(fooCopyOnly{});
121139
decltype(b) b1 = std::move(b);
140+
CHECK(b1(42) == 42);
122141
}
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);
124161
}
125162

126163
TEST_SUITE_END();

test/BlockUtilTestCpp.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,29 @@ TEST_CASE( "makeBlock" ) {
121121
}
122122
CHECK(foo::record == "dmm~~o~");
123123

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+
124140
{
125141
foo::record.clear();
126142
auto b = makeBlock(fooCopyOnly{});
127143
decltype(b) b1 = std::move(b);
144+
CHECK(b1(42) == 42);
128145
}
129-
CHECK(foo::record == "dc~c~~");
146+
CHECK(foo::record == "dc~co~~");
130147
}
131148

132149
TEST_SUITE_END();

0 commit comments

Comments
 (0)