FSTTargetIDGeneratorTests.m 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 "Core/FSTTargetIDGenerator.h"
  17. #import <XCTest/XCTest.h>
  18. NS_ASSUME_NONNULL_BEGIN
  19. @interface FSTTargetIDGenerator ()
  20. - (instancetype)initWithGeneratorID:(NSInteger)generatorID startingAfterID:(FSTTargetID)after;
  21. @end
  22. @interface FSTTargetIDGeneratorTests : XCTestCase
  23. @end
  24. @implementation FSTTargetIDGeneratorTests
  25. - (void)testConstructor {
  26. XCTAssertEqual([[[FSTTargetIDGenerator alloc] initWithGeneratorID:0 startingAfterID:0] nextID],
  27. 2);
  28. XCTAssertEqual([[[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:0] nextID],
  29. 1);
  30. XCTAssertEqual([[FSTTargetIDGenerator generatorForLocalStoreStartingAfterID:0] nextID], 2);
  31. XCTAssertEqual([[FSTTargetIDGenerator generatorForSyncEngineStartingAfterID:0] nextID], 1);
  32. }
  33. - (void)testSkipPast {
  34. FSTTargetIDGenerator *gen =
  35. [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:-1];
  36. XCTAssertEqual([gen nextID], 1);
  37. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:2];
  38. XCTAssertEqual([gen nextID], 3);
  39. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:4];
  40. XCTAssertEqual([gen nextID], 5);
  41. for (int i = 4; i < 12; ++i) {
  42. FSTTargetIDGenerator *gen0 =
  43. [[FSTTargetIDGenerator alloc] initWithGeneratorID:0 startingAfterID:i];
  44. FSTTargetIDGenerator *gen1 =
  45. [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:i];
  46. XCTAssertEqual([gen0 nextID], i + 2 & ~1, @"Skip failed for index %d", i);
  47. XCTAssertEqual([gen1 nextID], i + 1 | 1, @"Skip failed for index %d", i);
  48. }
  49. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:12];
  50. XCTAssertEqual([gen nextID], 13);
  51. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:0 startingAfterID:22];
  52. XCTAssertEqual([gen nextID], 24);
  53. }
  54. - (void)testIncrement {
  55. FSTTargetIDGenerator *gen =
  56. [[FSTTargetIDGenerator alloc] initWithGeneratorID:0 startingAfterID:0];
  57. XCTAssertEqual([gen nextID], 2);
  58. XCTAssertEqual([gen nextID], 4);
  59. XCTAssertEqual([gen nextID], 6);
  60. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:0 startingAfterID:46];
  61. XCTAssertEqual([gen nextID], 48);
  62. XCTAssertEqual([gen nextID], 50);
  63. XCTAssertEqual([gen nextID], 52);
  64. XCTAssertEqual([gen nextID], 54);
  65. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:0];
  66. XCTAssertEqual([gen nextID], 1);
  67. XCTAssertEqual([gen nextID], 3);
  68. XCTAssertEqual([gen nextID], 5);
  69. gen = [[FSTTargetIDGenerator alloc] initWithGeneratorID:1 startingAfterID:46];
  70. XCTAssertEqual([gen nextID], 47);
  71. XCTAssertEqual([gen nextID], 49);
  72. XCTAssertEqual([gen nextID], 51);
  73. XCTAssertEqual([gen nextID], 53);
  74. }
  75. @end
  76. NS_ASSUME_NONNULL_END