FSTReferenceSetTests.mm 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Copyright 2017 Google
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #import "Firestore/Source/Local/FSTReferenceSet.h"
  17. #import <XCTest/XCTest.h>
  18. #import "Firestore/Example/Tests/Util/FSTHelpers.h"
  19. #import "Firestore/Source/Model/FSTDocumentKey.h"
  20. NS_ASSUME_NONNULL_BEGIN
  21. @interface FSTReferenceSetTests : XCTestCase
  22. @end
  23. @implementation FSTReferenceSetTests
  24. - (void)testAddOrRemoveReferences {
  25. FSTDocumentKey *key = FSTTestDocKey(@"foo/bar");
  26. FSTReferenceSet *referenceSet = [[FSTReferenceSet alloc] init];
  27. XCTAssertTrue([referenceSet isEmpty]);
  28. XCTAssertFalse([referenceSet containsKey:key]);
  29. [referenceSet addReferenceToKey:key forID:1];
  30. XCTAssertTrue([referenceSet containsKey:key]);
  31. XCTAssertFalse([referenceSet isEmpty]);
  32. [referenceSet addReferenceToKey:key forID:2];
  33. XCTAssertTrue([referenceSet containsKey:key]);
  34. [referenceSet removeReferenceToKey:key forID:1];
  35. XCTAssertTrue([referenceSet containsKey:key]);
  36. [referenceSet removeReferenceToKey:key forID:3];
  37. XCTAssertTrue([referenceSet containsKey:key]);
  38. [referenceSet removeReferenceToKey:key forID:2];
  39. XCTAssertFalse([referenceSet containsKey:key]);
  40. XCTAssertTrue([referenceSet isEmpty]);
  41. }
  42. - (void)testRemoveAllReferencesForTargetID {
  43. FSTDocumentKey *key1 = FSTTestDocKey(@"foo/bar");
  44. FSTDocumentKey *key2 = FSTTestDocKey(@"foo/baz");
  45. FSTDocumentKey *key3 = FSTTestDocKey(@"foo/blah");
  46. FSTReferenceSet *referenceSet = [[FSTReferenceSet alloc] init];
  47. [referenceSet addReferenceToKey:key1 forID:1];
  48. [referenceSet addReferenceToKey:key2 forID:1];
  49. [referenceSet addReferenceToKey:key3 forID:2];
  50. XCTAssertFalse([referenceSet isEmpty]);
  51. XCTAssertTrue([referenceSet containsKey:key1]);
  52. XCTAssertTrue([referenceSet containsKey:key2]);
  53. XCTAssertTrue([referenceSet containsKey:key3]);
  54. [referenceSet removeReferencesForID:1];
  55. XCTAssertFalse([referenceSet isEmpty]);
  56. XCTAssertFalse([referenceSet containsKey:key1]);
  57. XCTAssertFalse([referenceSet containsKey:key2]);
  58. XCTAssertTrue([referenceSet containsKey:key3]);
  59. [referenceSet removeReferencesForID:2];
  60. XCTAssertTrue([referenceSet isEmpty]);
  61. XCTAssertFalse([referenceSet containsKey:key1]);
  62. XCTAssertFalse([referenceSet containsKey:key2]);
  63. XCTAssertFalse([referenceSet containsKey:key3]);
  64. }
  65. @end
  66. NS_ASSUME_NONNULL_END