| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
| 6 #error "This file requires ARC support." | |
| 7 #endif | |
| 8 | |
| 9 #import "remoting/ios/data_store.h" | |
| 10 | |
| 11 #import "base/compiler_specific.h" | |
| 12 #import "testing/gtest_mac.h" | |
| 13 | |
| 14 namespace remoting { | |
| 15 | |
| 16 namespace { | |
| 17 | |
| 18 NSString* kHostId = @"testHost"; | |
| 19 NSString* kHostPin = @"testHostPin"; | |
| 20 NSString* kPairId = @"testPairId"; | |
| 21 NSString* kPairSecret = @"testPairSecret"; | |
| 22 | |
| 23 } // namespace | |
| 24 | |
| 25 class DataStoreTest : public ::testing::Test { | |
| 26 protected: | |
| 27 virtual void SetUp() OVERRIDE { | |
| 28 store_ = [[DataStore allocWithZone:nil] init]; | |
| 29 RemoveAllHosts(); | |
| 30 EXPECT_EQ(0, HostCount()); | |
| 31 } | |
| 32 virtual void TearDown() OVERRIDE { RemoveAllHosts(); } | |
| 33 | |
| 34 int HostCount() { return [[store_ allHosts] count]; } | |
| 35 | |
| 36 void RemoveAllHosts() { | |
| 37 while (HostCount() > 0) { | |
| 38 [store_ removeHost:[store_ allHosts].firstObject]; | |
| 39 } | |
| 40 [store_ saveChanges]; | |
| 41 } | |
| 42 | |
| 43 DataStore* store_; | |
| 44 }; | |
| 45 | |
| 46 TEST(DataStoreTest_Static, IsSingleInstance) { | |
| 47 DataStore* firstStore = [DataStore sharedStore]; | |
| 48 | |
| 49 ASSERT_NSEQ(firstStore, [DataStore sharedStore]); | |
| 50 } | |
| 51 | |
| 52 TEST(DataStoreTest_Static, RemoveAllHost) { | |
| 53 // Test this functionality independently before expecting the fixture to do | |
| 54 // this correctly during cleanup | |
| 55 DataStore* store = [DataStore sharedStore]; | |
| 56 | |
| 57 while ([[store allHosts] count]) { | |
| 58 [store removeHost:[store allHosts].firstObject]; | |
| 59 } | |
| 60 | |
| 61 ASSERT_EQ(0, [[store allHosts] count]); | |
| 62 store = nil; | |
| 63 } | |
| 64 | |
| 65 TEST_F(DataStoreTest, CreateHost) { | |
| 66 | |
| 67 const HostPreferences* host = [store_ createHost:kHostId]; | |
| 68 ASSERT_STREQ([kHostId UTF8String], [host.hostId UTF8String]); | |
| 69 ASSERT_EQ(1, HostCount()); | |
| 70 } | |
| 71 | |
| 72 TEST_F(DataStoreTest, GetHostForId) { | |
| 73 const HostPreferences* host = [store_ getHostForId:kHostId]; | |
| 74 ASSERT_TRUE(host == nil); | |
| 75 | |
| 76 [store_ createHost:kHostId]; | |
| 77 | |
| 78 host = [store_ getHostForId:kHostId]; | |
| 79 | |
| 80 ASSERT_TRUE(host != nil); | |
| 81 ASSERT_STREQ([kHostId UTF8String], [host.hostId UTF8String]); | |
| 82 } | |
| 83 | |
| 84 TEST_F(DataStoreTest, SaveChanges) { | |
| 85 | |
| 86 const HostPreferences* newHost = [store_ createHost:kHostId]; | |
| 87 | |
| 88 ASSERT_EQ(1, HostCount()); | |
| 89 | |
| 90 // Default values for a new host | |
| 91 ASSERT_TRUE([newHost.askForPin boolValue] == NO); | |
| 92 ASSERT_TRUE(newHost.hostPin == nil); | |
| 93 ASSERT_TRUE(newHost.pairId == nil); | |
| 94 ASSERT_TRUE(newHost.pairSecret == nil); | |
| 95 | |
| 96 // Set new values and save | |
| 97 newHost.askForPin = [NSNumber numberWithBool:YES]; | |
| 98 newHost.hostPin = kHostPin; | |
| 99 newHost.pairId = kPairId; | |
| 100 newHost.pairSecret = kPairSecret; | |
| 101 | |
| 102 [store_ saveChanges]; | |
| 103 | |
| 104 // The next time the store is loaded the host will still be present, even | |
| 105 // though we are about to release and reinit a new object | |
| 106 store_ = nil; | |
| 107 store_ = [[DataStore allocWithZone:nil] init]; | |
| 108 ASSERT_EQ(1, HostCount()); | |
| 109 | |
| 110 const HostPreferences* host = [store_ getHostForId:kHostId]; | |
| 111 ASSERT_TRUE(host != nil); | |
| 112 ASSERT_STREQ([kHostId UTF8String], [host.hostId UTF8String]); | |
| 113 ASSERT_TRUE([host.askForPin boolValue] == YES); | |
| 114 ASSERT_STREQ([kHostPin UTF8String], [host.hostPin UTF8String]); | |
| 115 ASSERT_STREQ([kPairId UTF8String], [host.pairId UTF8String]); | |
| 116 ASSERT_STREQ([kPairSecret UTF8String], [host.pairSecret UTF8String]); | |
| 117 } | |
| 118 | |
| 119 } // namespace remoting | |
| OLD | NEW |