TransactionTests.m 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2014 Realm Inc.
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. //
  17. ////////////////////////////////////////////////////////////////////////////
  18. #import "RLMTestCase.h"
  19. @interface TransactionTests : RLMTestCase
  20. @end
  21. @implementation TransactionTests
  22. - (void)testRealmModifyObjectsOutsideOfWriteTransaction
  23. {
  24. RLMRealm *realm = [self realmWithTestPath];
  25. [realm beginWriteTransaction];
  26. StringObject *obj = [StringObject createInRealm:realm withValue:@[@"a"]];
  27. [realm commitWriteTransaction];
  28. XCTAssertThrows([obj setStringCol:@"throw"], @"Setter should throw when called outside of transaction.");
  29. }
  30. - (void)testTransactionMisuse
  31. {
  32. RLMRealm *realm = [RLMRealm defaultRealm];
  33. // Insert an object
  34. [realm beginWriteTransaction];
  35. StringObject *obj = [StringObject createInRealm:realm withValue:@[@"a"]];
  36. [realm commitWriteTransaction];
  37. XCTAssertThrows([StringObject createInRealm:realm withValue:@[@"a"]], @"Outside write transaction");
  38. XCTAssertThrows([realm commitWriteTransaction], @"No write transaction to close");
  39. [realm beginWriteTransaction];
  40. XCTAssertThrows([realm beginWriteTransaction], @"Write transaction already in place");
  41. [realm commitWriteTransaction];
  42. XCTAssertThrows([realm deleteObject:obj], @"Outside writetransaction");
  43. }
  44. @end