Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1710)

Unified Diff: base/mac/foundation_util_unittest.mm

Issue 8356024: Create ObjCCast<>() and ObjCCastStrict<>() methods (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Reword. Remove non-ASCII. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/mac/foundation_util.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/mac/foundation_util_unittest.mm
diff --git a/base/mac/foundation_util_unittest.mm b/base/mac/foundation_util_unittest.mm
index cfd4fc60b3e335c69aab24d25af372108df0fc6f..9c5daacaea40add4aecb2f626a8fe85db741a9d9 100644
--- a/base/mac/foundation_util_unittest.mm
+++ b/base/mac/foundation_util_unittest.mm
@@ -5,6 +5,7 @@
#include "base/mac/foundation_util.h"
#include "base/mac/scoped_cftyperef.h"
+#include "base/mac/scoped_nsautorelease_pool.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(FoundationUtilTest, CFCast) {
@@ -159,3 +160,118 @@ TEST(FoundationUtilTest, CFCast) {
EXPECT_FALSE(base::mac::CFCastStrict<CFSetRef>(NULL));
EXPECT_FALSE(base::mac::CFCastStrict<CFStringRef>(NULL));
}
+
+TEST(FoundationUtilTest, ObjCCast) {
+ base::mac::ScopedNSAutoreleasePool pool;
+
+ id test_array = [NSArray array];
+ id test_array_mutable = [NSMutableArray array];
+ id test_data = [NSData data];
+ id test_data_mutable = [NSMutableData dataWithCapacity:10];
+ id test_date = [NSDate date];
+ id test_dict =
+ [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:42]
+ forKey:@"meaning"];
+ id test_dict_mutable = [NSMutableDictionary dictionaryWithCapacity:10];
+ id test_number = [NSNumber numberWithInt:42];
+ id test_null = [NSNull null];
+ id test_set = [NSSet setWithObject:@"string object"];
+ id test_set_mutable = [NSMutableSet setWithCapacity:10];
+ id test_str = [NSString string];
+ id test_str_const = @"bonjour";
+ id test_str_mutable = [NSMutableString stringWithCapacity:10];
+
+ // Make sure the allocations of NS types are good.
+ EXPECT_TRUE(test_array);
+ EXPECT_TRUE(test_array_mutable);
+ EXPECT_TRUE(test_data);
+ EXPECT_TRUE(test_data_mutable);
+ EXPECT_TRUE(test_date);
+ EXPECT_TRUE(test_dict);
+ EXPECT_TRUE(test_dict_mutable);
+ EXPECT_TRUE(test_number);
+ EXPECT_TRUE(test_null);
+ EXPECT_TRUE(test_set);
+ EXPECT_TRUE(test_set_mutable);
+ EXPECT_TRUE(test_str);
+ EXPECT_TRUE(test_str_const);
+ EXPECT_TRUE(test_str_mutable);
+
+ // Casting the id correctly provides the same pointer.
+ EXPECT_EQ(test_array, base::mac::ObjCCast<NSArray>(test_array));
+ EXPECT_EQ(test_array_mutable,
+ base::mac::ObjCCast<NSArray>(test_array_mutable));
+ EXPECT_EQ(test_data, base::mac::ObjCCast<NSData>(test_data));
+ EXPECT_EQ(test_data_mutable,
+ base::mac::ObjCCast<NSData>(test_data_mutable));
+ EXPECT_EQ(test_date, base::mac::ObjCCast<NSDate>(test_date));
+ EXPECT_EQ(test_dict, base::mac::ObjCCast<NSDictionary>(test_dict));
+ EXPECT_EQ(test_dict_mutable,
+ base::mac::ObjCCast<NSDictionary>(test_dict_mutable));
+ EXPECT_EQ(test_number, base::mac::ObjCCast<NSNumber>(test_number));
+ EXPECT_EQ(test_null, base::mac::ObjCCast<NSNull>(test_null));
+ EXPECT_EQ(test_set, base::mac::ObjCCast<NSSet>(test_set));
+ EXPECT_EQ(test_set_mutable, base::mac::ObjCCast<NSSet>(test_set_mutable));
+ EXPECT_EQ(test_str, base::mac::ObjCCast<NSString>(test_str));
+ EXPECT_EQ(test_str_const, base::mac::ObjCCast<NSString>(test_str_const));
+ EXPECT_EQ(test_str_mutable,
+ base::mac::ObjCCast<NSString>(test_str_mutable));
+
+ // When given an incorrect ObjC cast, provide nil.
+ EXPECT_FALSE(base::mac::ObjCCast<NSString>(test_array));
+ EXPECT_FALSE(base::mac::ObjCCast<NSString>(test_array_mutable));
+ EXPECT_FALSE(base::mac::ObjCCast<NSString>(test_data));
+ EXPECT_FALSE(base::mac::ObjCCast<NSString>(test_data_mutable));
+ EXPECT_FALSE(base::mac::ObjCCast<NSSet>(test_date));
+ EXPECT_FALSE(base::mac::ObjCCast<NSSet>(test_dict));
+ EXPECT_FALSE(base::mac::ObjCCast<NSNumber>(test_dict_mutable));
+ EXPECT_FALSE(base::mac::ObjCCast<NSNull>(test_number));
+ EXPECT_FALSE(base::mac::ObjCCast<NSDictionary>(test_null));
+ EXPECT_FALSE(base::mac::ObjCCast<NSDictionary>(test_set));
+ EXPECT_FALSE(base::mac::ObjCCast<NSDate>(test_set_mutable));
+ EXPECT_FALSE(base::mac::ObjCCast<NSData>(test_str));
+ EXPECT_FALSE(base::mac::ObjCCast<NSData>(test_str_const));
+ EXPECT_FALSE(base::mac::ObjCCast<NSArray>(test_str_mutable));
+
+ // Giving a nil provides a nil.
+ EXPECT_FALSE(base::mac::ObjCCast<NSArray>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSData>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSDate>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSDictionary>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSNull>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSNumber>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSSet>(nil));
+ EXPECT_FALSE(base::mac::ObjCCast<NSString>(nil));
+
+ // ObjCCastStrict: correct cast results in correct pointer being returned.
+ EXPECT_EQ(test_array, base::mac::ObjCCastStrict<NSArray>(test_array));
+ EXPECT_EQ(test_array_mutable,
+ base::mac::ObjCCastStrict<NSArray>(test_array_mutable));
+ EXPECT_EQ(test_data, base::mac::ObjCCastStrict<NSData>(test_data));
+ EXPECT_EQ(test_data_mutable,
+ base::mac::ObjCCastStrict<NSData>(test_data_mutable));
+ EXPECT_EQ(test_date, base::mac::ObjCCastStrict<NSDate>(test_date));
+ EXPECT_EQ(test_dict, base::mac::ObjCCastStrict<NSDictionary>(test_dict));
+ EXPECT_EQ(test_dict_mutable,
+ base::mac::ObjCCastStrict<NSDictionary>(test_dict_mutable));
+ EXPECT_EQ(test_number, base::mac::ObjCCastStrict<NSNumber>(test_number));
+ EXPECT_EQ(test_null, base::mac::ObjCCastStrict<NSNull>(test_null));
+ EXPECT_EQ(test_set, base::mac::ObjCCastStrict<NSSet>(test_set));
+ EXPECT_EQ(test_set_mutable,
+ base::mac::ObjCCastStrict<NSSet>(test_set_mutable));
+ EXPECT_EQ(test_str, base::mac::ObjCCastStrict<NSString>(test_str));
+ EXPECT_EQ(test_str_const,
+ base::mac::ObjCCastStrict<NSString>(test_str_const));
+ EXPECT_EQ(test_str_mutable,
+ base::mac::ObjCCastStrict<NSString>(test_str_mutable));
+
+ // ObjCCastStrict: Giving a nil provides a nil.
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSArray>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSData>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSDate>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSDictionary>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSNull>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSNumber>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSSet>(nil));
+ EXPECT_FALSE(base::mac::ObjCCastStrict<NSString>(nil));
+}
« no previous file with comments | « base/mac/foundation_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698