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

Unified Diff: remoting/ios/data_store_unittest.mm

Issue 278863003: Chromoting iOS client (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | « remoting/ios/data_store.mm ('k') | remoting/ios/host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/ios/data_store_unittest.mm
diff --git a/remoting/ios/data_store_unittest.mm b/remoting/ios/data_store_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..f75dc28ff31cf885993b8dc0e51a3b837557827b
--- /dev/null
+++ b/remoting/ios/data_store_unittest.mm
@@ -0,0 +1,119 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+#import "remoting/ios/data_store.h"
+
+#import "base/compiler_specific.h"
+#import "testing/gtest_mac.h"
+
+namespace remoting {
+
+namespace {
+
+NSString* kHostId = @"testHost";
+NSString* kHostPin = @"testHostPin";
+NSString* kPairId = @"testPairId";
+NSString* kPairSecret = @"testPairSecret";
+
+} // namespace
+
+class DataStoreTest : public ::testing::Test {
+ protected:
+ virtual void SetUp() OVERRIDE {
+ store_ = [[DataStore allocWithZone:nil] init];
+ RemoveAllHosts();
+ EXPECT_EQ(0, HostCount());
+ }
+ virtual void TearDown() OVERRIDE { RemoveAllHosts(); }
+
+ int HostCount() { return [[store_ allHosts] count]; }
+
+ void RemoveAllHosts() {
+ while (HostCount() > 0) {
+ [store_ removeHost:[store_ allHosts].firstObject];
+ }
+ [store_ saveChanges];
+ }
+
+ DataStore* store_;
+};
+
+TEST(DataStoreTest_Static, IsSingleInstance) {
+ DataStore* firstStore = [DataStore sharedStore];
+
+ ASSERT_NSEQ(firstStore, [DataStore sharedStore]);
+}
+
+TEST(DataStoreTest_Static, RemoveAllHost) {
+ // Test this functionality independently before expecting the fixture to do
+ // this correctly during cleanup
+ DataStore* store = [DataStore sharedStore];
+
+ while ([[store allHosts] count]) {
+ [store removeHost:[store allHosts].firstObject];
+ }
+
+ ASSERT_EQ(0, [[store allHosts] count]);
+ store = nil;
+}
+
+TEST_F(DataStoreTest, CreateHost) {
+
+ const HostPreferences* host = [store_ createHost:kHostId];
+ ASSERT_STREQ([kHostId UTF8String], [host.hostId UTF8String]);
+ ASSERT_EQ(1, HostCount());
+}
+
+TEST_F(DataStoreTest, GetHostForId) {
+ const HostPreferences* host = [store_ getHostForId:kHostId];
+ ASSERT_TRUE(host == nil);
+
+ [store_ createHost:kHostId];
+
+ host = [store_ getHostForId:kHostId];
+
+ ASSERT_TRUE(host != nil);
+ ASSERT_STREQ([kHostId UTF8String], [host.hostId UTF8String]);
+}
+
+TEST_F(DataStoreTest, SaveChanges) {
+
+ const HostPreferences* newHost = [store_ createHost:kHostId];
+
+ ASSERT_EQ(1, HostCount());
+
+ // Default values for a new host
+ ASSERT_TRUE([newHost.askForPin boolValue] == NO);
+ ASSERT_TRUE(newHost.hostPin == nil);
+ ASSERT_TRUE(newHost.pairId == nil);
+ ASSERT_TRUE(newHost.pairSecret == nil);
+
+ // Set new values and save
+ newHost.askForPin = [NSNumber numberWithBool:YES];
+ newHost.hostPin = kHostPin;
+ newHost.pairId = kPairId;
+ newHost.pairSecret = kPairSecret;
+
+ [store_ saveChanges];
+
+ // The next time the store is loaded the host will still be present, even
+ // though we are about to release and reinit a new object
+ store_ = nil;
+ store_ = [[DataStore allocWithZone:nil] init];
+ ASSERT_EQ(1, HostCount());
+
+ const HostPreferences* host = [store_ getHostForId:kHostId];
+ ASSERT_TRUE(host != nil);
+ ASSERT_STREQ([kHostId UTF8String], [host.hostId UTF8String]);
+ ASSERT_TRUE([host.askForPin boolValue] == YES);
+ ASSERT_STREQ([kHostPin UTF8String], [host.hostPin UTF8String]);
+ ASSERT_STREQ([kPairId UTF8String], [host.pairId UTF8String]);
+ ASSERT_STREQ([kPairSecret UTF8String], [host.pairSecret UTF8String]);
+}
+
+} // namespace remoting
« no previous file with comments | « remoting/ios/data_store.mm ('k') | remoting/ios/host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698