|
12 | 12 | CHECK([obj.description isEqualToString:@"42"]); |
13 | 13 | CHECK(obj.hash == std::hash<int>()(42)); |
14 | 14 |
|
| 15 | + CHECK([obj conformsToProtocol:@protocol(NSCopying)]); |
| 16 | + CHECK([obj conformsToProtocol:@protocol(BoxedValue)]); |
| 17 | + CHECK([obj conformsToProtocol:@protocol(BoxedComparable)]); |
| 18 | + CHECK([obj conformsToProtocol:@protocol(NSObject)]); |
| 19 | + |
15 | 20 | @try { |
16 | 21 | boxedValue<long>(obj); |
17 | 22 | FAIL("able to unbox wrong type"); |
|
71 | 76 |
|
72 | 77 | auto obj = box(std::string("abc")); |
73 | 78 | static_assert(std::is_same_v<decltype(obj), NSObject<BoxedValue, BoxedComparable, NSCopying> *>); |
| 79 | + |
| 80 | + CHECK([obj conformsToProtocol:@protocol(NSCopying)]); |
| 81 | + CHECK([obj conformsToProtocol:@protocol(BoxedValue)]); |
| 82 | + CHECK([obj conformsToProtocol:@protocol(BoxedComparable)]); |
| 83 | + CHECK([obj conformsToProtocol:@protocol(NSObject)]); |
| 84 | + |
74 | 85 | CHECK(boxedValue<std::string>(obj) == str); |
75 | 86 | CHECK([obj.description isEqualToString:@"abc"]); |
76 | 87 | CHECK(obj.hash == std::hash<std::string>()(str)); |
|
93 | 104 |
|
94 | 105 | auto obj = box(std::make_unique<int>(5)); |
95 | 106 | static_assert(std::is_same_v<decltype(obj), NSObject<BoxedValue, BoxedComparable> *>); |
| 107 | + |
| 108 | + CHECK(![obj conformsToProtocol:@protocol(NSCopying)]); |
| 109 | + CHECK([obj conformsToProtocol:@protocol(BoxedValue)]); |
| 110 | + CHECK([obj conformsToProtocol:@protocol(BoxedComparable)]); |
| 111 | + CHECK([obj conformsToProtocol:@protocol(NSObject)]); |
| 112 | + |
96 | 113 | CHECK(*boxedValue<std::unique_ptr<int>>(obj) == 5); |
97 | 114 |
|
98 | 115 | @try { |
|
143 | 160 |
|
144 | 161 | static_assert(std::is_same_v<decltype(obj1), NSObject<BoxedValue, NSCopying> *>); |
145 | 162 |
|
| 163 | + CHECK([obj1 conformsToProtocol:@protocol(NSCopying)]); |
| 164 | + CHECK([obj1 conformsToProtocol:@protocol(BoxedValue)]); |
| 165 | + CHECK(![obj1 conformsToProtocol:@protocol(BoxedComparable)]); |
| 166 | + CHECK([obj1 conformsToProtocol:@protocol(NSObject)]); |
| 167 | + |
146 | 168 | CHECK(boxedValue<foo>(obj1).i == 4); |
147 | 169 | CHECK(boxedValue<foo>(obj2).c == 'b'); |
148 | 170 | CHECK([obj1 isEqual:obj2]); |
|
0 commit comments