Skip to content

Commit 7cd1345

Browse files
[FSSDK-12368] Add Xcode project linking and implement all test cases
Backport fixes from PR #628 to make PR #629 complete: 1. Add DecisionServiceTests_LocalHoldouts.swift to Xcode project - Added PBXBuildFile entries for both test targets - Added PBXFileReference entry - File now discovered and runs in Xcode builds 2. Replace stub tests with fully implemented integration tests (15 tests) - Global holdouts (2 tests) - Local holdouts for experiment rules (3 tests) - Local holdouts for delivery rules (2 tests) - Multiple holdouts (2 tests) - Cross-flag and precedence (3 tests) - Edge cases (3 tests) All tests use decide_datafile, MockBucketer for controlled bucketing, and assert correct decision behavior. This makes PR #629 feature-complete and ready for merge. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 6b816b1 commit 7cd1345

2 files changed

Lines changed: 285 additions & 84 deletions

File tree

OptimizelySwiftSDK.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2119,6 +2119,8 @@
21192119
98AC984B2DB8FFE0001405DD /* DecisionServiceTests_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98482DB8FC29001405DD /* DecisionServiceTests_Holdouts.swift */; };
21202120
98AC985E2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */; };
21212121
98AC985F2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */; };
2122+
98C2DF242F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C2DF232F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift */; };
2123+
98C2DF252F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C2DF232F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift */; };
21222124
98D5AE842DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */; };
21232125
98D5AE852DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */; };
21242126
98F28A1D2E01940500A86546 /* Cmab.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98F28A1C2E01940500A86546 /* Cmab.swift */; };
@@ -2635,6 +2637,7 @@
26352637
98AC98452DB7B762001405DD /* BucketTests_HoldoutToVariation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BucketTests_HoldoutToVariation.swift; sourceTree = "<group>"; };
26362638
98AC98482DB8FC29001405DD /* DecisionServiceTests_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecisionServiceTests_Holdouts.swift; sourceTree = "<group>"; };
26372639
98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift; sourceTree = "<group>"; };
2640+
98C2DF232F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecisionServiceTests_LocalHoldouts.swift; sourceTree = "<group>"; };
26382641
98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_Decide_Holdouts.swift; sourceTree = "<group>"; };
26392642
98F28A1C2E01940500A86546 /* Cmab.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cmab.swift; sourceTree = "<group>"; };
26402643
98F28A2D2E01968000A86546 /* CmabTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CmabTests.swift; sourceTree = "<group>"; };
@@ -3177,6 +3180,7 @@
31773180
6E0207A7272A11CF008C3711 /* NetworkReachabilityTests.swift */,
31783181
6E75198B22C5211100B2B157 /* NotificationCenterTests.swift */,
31793182
84861810286D0B8900B7F41B /* OdpEventManagerTests.swift */,
3183+
98C2DF232F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift */,
31803184
8486180E286D0B8900B7F41B /* OdpManagerTests.swift */,
31813185
8486180D286D0B8900B7F41B /* OdpSegmentManagerTests.swift */,
31823186
98F28A512E02E81500A86546 /* CMABClientTests.swift */,
@@ -5191,6 +5195,7 @@
51915195
6E6522EB278E4F3800954EA1 /* OdpManager.swift in Sources */,
51925196
6E75187922C520D400B2B157 /* Variation.swift in Sources */,
51935197
6E75191522C520D500B2B157 /* BackgroundingCallbacks.swift in Sources */,
5198+
98C2DF242F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift in Sources */,
51945199
6E75195D22C520D500B2B157 /* OPTBucketer.swift in Sources */,
51955200
6E9B117622C5487100C22D81 /* DatafileHandlerTests.swift in Sources */,
51965201
84E2E97F2855875E001114AB /* OdpEventManager.swift in Sources */,
@@ -5494,6 +5499,7 @@
54945499
84861813286D0B8900B7F41B /* OdpManagerTests.swift in Sources */,
54955500
6E7516FD22C520D400B2B157 /* OptimizelyLogLevel.swift in Sources */,
54965501
6E75187322C520D400B2B157 /* Variation.swift in Sources */,
5502+
98C2DF252F900669003F2443 /* DecisionServiceTests_LocalHoldouts.swift in Sources */,
54975503
6E7517E322C520D400B2B157 /* DefaultDecisionService.swift in Sources */,
54985504
6E75179922C520D400B2B157 /* DataStoreQueueStackImpl+Extension.swift in Sources */,
54995505
6E9B115C22C5486E00C22D81 /* DatafileHandlerTests.swift in Sources */,

0 commit comments

Comments
 (0)