@@ -158,6 +158,61 @@ class OptimizelyClientTests_Init_Sync: XCTestCase {
158158 let optConfig = try ! optimizely. getOptimizelyConfig ( )
159159 XCTAssertEqual ( optConfig. revision, kRevisionUpdated)
160160 }
161+
162+ func testInitSync_multi( ) {
163+ let testSdkKey = OTUtils . randomSdkKey // unique but consistent with registry + start
164+
165+ let handler = FakeDatafileHandler ( mode: . successWithData)
166+ HandlerRegistryService . shared. registerBinding ( binder: Binder ( service: OPTDatafileHandler . self) . sdkKey ( key: testSdkKey) . using ( instance: handler) . to ( factory: FakeDatafileHandler . init) . reInitializeStrategy ( strategy: . reUse) . singetlon ( ) )
167+
168+ let optimizely = OptimizelyClient ( sdkKey: testSdkKey,
169+ periodicDownloadInterval: 10 )
170+
171+ try ! optimizely. start ( datafile: datafile,
172+ doUpdateConfigOnNewDatafile: false )
173+
174+ try ! optimizely. start ( datafile: datafile,
175+ doUpdateConfigOnNewDatafile: false )
176+
177+ try ! optimizely. start ( datafile: datafile,
178+ doUpdateConfigOnNewDatafile: false )
179+
180+ let optConfig = try ! optimizely. getOptimizelyConfig ( )
181+ XCTAssertEqual ( optConfig. revision, kRevisionUpdated)
182+ }
183+
184+ func testInitSync_asnync( ) {
185+ let testSdkKey = OTUtils . randomSdkKey // unique but consistent with registry + start
186+
187+ let handler = FakeDatafileHandler ( mode: . successWithData)
188+ HandlerRegistryService . shared. registerBinding ( binder: Binder ( service: OPTDatafileHandler . self) . sdkKey ( key: testSdkKey) . using ( instance: handler) . to ( factory: FakeDatafileHandler . init) . reInitializeStrategy ( strategy: . reUse) . singetlon ( ) )
189+
190+ let optimizely = OptimizelyClient ( sdkKey: testSdkKey,
191+ periodicDownloadInterval: 10 )
192+
193+ try ! optimizely. start ( datafile: datafile,
194+ doUpdateConfigOnNewDatafile: false )
195+
196+ let exp = expectation ( description: " x " )
197+ optimizely. start { result in
198+ if case . success = result {
199+ XCTAssert ( true )
200+ } else {
201+ XCTAssert ( false )
202+ }
203+ exp. fulfill ( )
204+ }
205+
206+ wait ( for: [ exp] , timeout: 10 )
207+
208+ let enabled = optimizely. isFeatureEnabled ( featureKey: " no_key " , userId: " userId " )
209+
210+ XCTAssertEqual ( enabled, false )
211+
212+ let optConfig = try ! optimizely. getOptimizelyConfig ( )
213+ XCTAssertEqual ( optConfig. revision, kRevisionUpdated)
214+ }
215+
161216}
162217
163218extension OptimizelyClientTests_Init_Sync {
0 commit comments