ComponentKitTests/CKNonNullTests.mm (53 lines of code) (raw):
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#import <XCTest/XCTest.h>
#import <ComponentKit/CKNonNull.h>
using namespace CK;
@interface CKRelaxedNonNullPtrTests : XCTestCase
@end
@implementation CKRelaxedNonNullPtrTests
- (void)test_ImplicitConversionFromNullable
{
auto const nullableSet = [NSSet set];
RelaxedNonNull<NSSet *> nonNullSet = nullableSet;
XCTAssertEqual(nonNullSet, nullableSet);
}
- (void)compileTimeChecks
{
auto nn = RelaxedNonNull<NSObject *>([NSObject new]);
// if (nn) {}
// auto nn1 = RelaxedNonNull<NSObject *>{nil};
// nn = nil;
// if (nn == nil) {}
// if (nn != nil) {}
// auto nn2 = RelaxedNonNull<RelaxedNonNull<NSObject *>>{nn};
}
@end
@interface CKNonNullPtrTests : XCTestCase
@end
@implementation CKNonNullPtrTests
- (void)test_ImplicitConversionToNullable
{
auto const o = [NSObject new];
auto const nn = makeNonNull(o);
XCTAssertEqual([nn isProxy], [o isProxy]);
}
- (void)test_ConversionConstructorFromDerivedPtrType
{
auto const ms = makeNonNull([NSMutableSet new]);
NonNull<NSSet *> s = ms;
XCTAssertEqualObjects(ms, s);
}
- (void)test_ImplicitConversionToNullablePtrToBase
{
auto const nnms = makeNonNull([NSMutableSet new]);
NSSet *set = nnms;
XCTAssertEqualObjects(set, nnms);
}
struct ConstructibleFromNullablePtrToBase {
ConstructibleFromNullablePtrToBase(NSObject *o) : obj(o) {}
NSObject *obj;
};
- (void)test_ImplicitConversionToConstructibleFromNullable
{
auto s = makeNonNull([NSSet set]);
ConstructibleFromNullablePtrToBase c = s;
XCTAssertEqual(c.obj, s);
}
- (void)compileTimeChecks
{
auto nn = makeNonNull([NSObject new]);
// if (nn) {}
// auto nn1 = NonNull<NSObject *>{nil};
// nn = nil;
// if (nn == nil) {}
// if (nn != nil) {}
// auto nn2 = makeNonNull(nn);
}
@end