Skip to content

Commit e3fa80f

Browse files
authored
feat(ForcedDecisions): add forced-decisions APIs to OptimizelyUserContext (#285)
### Summary Add a set of new APIs for forced-decisions to OptimizelyUserContext: setForcedDecision getForcedDecision removeForcedDecision removeAllForcedDecisions Test plan unit tests for the new APIs FSC tests with new test cases
1 parent 803bc57 commit e3fa80f

29 files changed

+2561
-939
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -244,3 +244,4 @@ ModelManifest.xml
244244
OptimizelySDK.Package/nuget.exe
245245
OptimizelySDK.Package/content
246246
OptimizelySDK.Package/lib
247+

OptimizelySDK.Net35/OptimizelySDK.Net35.csproj

+112-103
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,28 @@
4646
</Reference>
4747
</ItemGroup>
4848
<ItemGroup>
49-
<Compile Include="..\OptimizelySDK\AudienceConditions\AndCondition.cs">
49+
<Compile Include="..\OptimizelySDK\AudienceConditions\AndCondition.cs">
5050
<Link>AudienceConditions\AndCondition.cs</Link>
5151
</Compile>
52-
<Compile Include="..\OptimizelySDK\AudienceConditions\AudienceIdCondition.cs">
52+
<Compile Include="..\OptimizelySDK\AudienceConditions\AudienceIdCondition.cs">
5353
<Link>AudienceConditions\AudienceIdCondition.cs</Link>
5454
</Compile>
55-
<Compile Include="..\OptimizelySDK\AudienceConditions\BaseCondition.cs">
55+
<Compile Include="..\OptimizelySDK\AudienceConditions\BaseCondition.cs">
5656
<Link>AudienceConditions\BaseCondition.cs</Link>
5757
</Compile>
58-
<Compile Include="..\OptimizelySDK\AudienceConditions\SemanticVersion.cs">
58+
<Compile Include="..\OptimizelySDK\AudienceConditions\SemanticVersion.cs">
5959
<Link>AudienceConditions\SemanticVersion.cs</Link>
6060
</Compile>
61-
<Compile Include="..\OptimizelySDK\AudienceConditions\EmptyCondition.cs">
61+
<Compile Include="..\OptimizelySDK\AudienceConditions\EmptyCondition.cs">
6262
<Link>AudienceConditions\EmptyCondition.cs</Link>
6363
</Compile>
64-
<Compile Include="..\OptimizelySDK\AudienceConditions\ICondition.cs">
64+
<Compile Include="..\OptimizelySDK\AudienceConditions\ICondition.cs">
6565
<Link>AudienceConditions\ICondition.cs</Link>
6666
</Compile>
67-
<Compile Include="..\OptimizelySDK\AudienceConditions\NotCondition.cs">
67+
<Compile Include="..\OptimizelySDK\AudienceConditions\NotCondition.cs">
6868
<Link>AudienceConditions\NotCondition.cs</Link>
6969
</Compile>
70-
<Compile Include="..\OptimizelySDK\AudienceConditions\OrCondition.cs">
70+
<Compile Include="..\OptimizelySDK\AudienceConditions\OrCondition.cs">
7171
<Link>AudienceConditions\OrCondition.cs</Link>
7272
</Compile>
7373
<Compile Include="..\OptimizelySDK\Entity\Attribute.cs">
@@ -100,7 +100,7 @@
100100
<Compile Include="..\OptimizelySDK\Entity\IdKeyEntity.cs">
101101
<Link>Entity\IdKeyEntity.cs</Link>
102102
</Compile>
103-
<Compile Include="..\OptimizelySDK\OptimizelyJSON.cs">
103+
<Compile Include="..\OptimizelySDK\OptimizelyJSON.cs">
104104
<Link>OptimizelyJSON.cs</Link>
105105
</Compile>
106106
<Compile Include="..\OptimizelySDK\Entity\TrafficAllocation.cs">
@@ -139,7 +139,7 @@
139139
<Compile Include="..\OptimizelySDK\Event\LogEvent.cs">
140140
<Link>Event\LogEvent.cs</Link>
141141
</Compile>
142-
<Compile Include="..\OptimizelySDK\Event\ForwardingEventProcessor.cs">
142+
<Compile Include="..\OptimizelySDK\Event\ForwardingEventProcessor.cs">
143143
<Link>Event\ForwardingEventProcessor.cs</Link>
144144
</Compile>
145145
<Compile Include="..\OptimizelySDK\Exceptions\OptimizelyException.cs">
@@ -178,19 +178,19 @@
178178
<Compile Include="..\OptimizelySDK\Utils\ControlAttributes.cs">
179179
<Link>Utils\ControlAttributes.cs</Link>
180180
</Compile>
181-
<Compile Include="..\OptimizelySDK\Utils\ExceptionExtensions.cs">
181+
<Compile Include="..\OptimizelySDK\Utils\ExceptionExtensions.cs">
182182
<Link>Utils\ExceptionExtensions.cs</Link>
183183
</Compile>
184-
<Compile Include="..\OptimizelySDK\Utils\ConditionParser.cs">
184+
<Compile Include="..\OptimizelySDK\Utils\ConditionParser.cs">
185185
<Link>Utils\ConditionParser.cs</Link>
186186
</Compile>
187-
<Compile Include="..\OptimizelySDK\Utils\AttributeMatchTypes.cs">
187+
<Compile Include="..\OptimizelySDK\Utils\AttributeMatchTypes.cs">
188188
<Link>Utils\AttributeMatchTypes.cs</Link>
189189
</Compile>
190-
<Compile Include="..\OptimizelySDK\Utils\DecisionInfoTypes.cs">
190+
<Compile Include="..\OptimizelySDK\Utils\DecisionInfoTypes.cs">
191191
<Link>Utils\DecisionInfoTypes.cs</Link>
192192
</Compile>
193-
<Compile Include="..\OptimizelySDK\Utils\DateTimeUtils.cs">
193+
<Compile Include="..\OptimizelySDK\Utils\DateTimeUtils.cs">
194194
<Link>Utils\DateTimeUtils.cs</Link>
195195
</Compile>
196196
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -227,108 +227,117 @@
227227
<Compile Include="..\OptimizelySDK\Entity\Rollout.cs">
228228
<Link>Entity\Rollout</Link>
229229
</Compile>
230-
<Compile Include="..\OptimizelySDK\ProjectConfig.cs">
230+
<Compile Include="..\OptimizelySDK\ProjectConfig.cs">
231231
<Link>ProjectConfig</Link>
232232
</Compile>
233-
<Compile Include="..\OptimizelySDK\Config\DatafileProjectConfig.cs">
233+
<Compile Include="..\OptimizelySDK\Config\DatafileProjectConfig.cs">
234234
<Link>Config\DatafileProjectConfig</Link>
235235
</Compile>
236-
<Compile Include="..\OptimizelySDK\Config\ProjectConfigManager.cs">
236+
<Compile Include="..\OptimizelySDK\Config\ProjectConfigManager.cs">
237237
<Link>Config\ProjectConfigManager</Link>
238238
</Compile>
239-
<Compile Include="..\OptimizelySDK\Config\FallbackProjectConfigManager.cs">
240-
<Link>Config\FallbackProjectConfigManager.cs</Link>
241-
</Compile>
242-
<Compile Include="..\OptimizelySDK\Event\Entity\ConversionEvent.cs">
243-
<Link>Event\Entity\ConversionEvent.cs</Link>
244-
</Compile>
245-
<Compile Include="..\OptimizelySDK\Event\Entity\Decision.cs">
246-
<Link>Event\Entity\Decision.cs</Link>
247-
</Compile>
248-
<Compile Include="..\OptimizelySDK\Event\Entity\EventBatch.cs">
249-
<Link>Event\Entity\EventBatch.cs</Link>
250-
</Compile>
251-
<Compile Include="..\OptimizelySDK\Event\Entity\EventContext.cs">
252-
<Link>Event\Entity\EventContext.cs</Link>
253-
</Compile>
254-
<Compile Include="..\OptimizelySDK\Event\Entity\ImpressionEvent.cs">
255-
<Link>Event\Entity\ImpressionEvent.cs</Link>
256-
</Compile>
257-
<Compile Include="..\OptimizelySDK\Event\Entity\Snapshot.cs">
258-
<Link>Event\Entity\Snapshot.cs</Link>
259-
</Compile>
260-
<Compile Include="..\OptimizelySDK\Event\Entity\SnapshotEvent.cs">
261-
<Link>Event\Entity\SnapshotEvent.cs</Link>
262-
</Compile>
263-
<Compile Include="..\OptimizelySDK\Event\Entity\UserEvent.cs">
264-
<Link>Event\Entity\UserEvent.cs</Link>
265-
</Compile>
266-
<Compile Include="..\OptimizelySDK\Event\Entity\Visitor.cs">
267-
<Link>Event\Entity\Visitor.cs</Link>
268-
</Compile>
269-
<Compile Include="..\OptimizelySDK\Event\Entity\DecisionMetadata.cs">
270-
<Link>Event\Entity\DecisionMetadata.cs</Link>
271-
</Compile>
272-
<Compile Include="..\OptimizelySDK\Event\Entity\VisitorAttribute.cs">
273-
<Link>Event\Entity\VisitorAttribute.cs</Link>
274-
</Compile>
275-
<Compile Include="..\OptimizelySDK\Event\EventFactory.cs">
276-
<Link>Event\EventFactory.cs</Link>
277-
</Compile>
278-
<Compile Include="..\OptimizelySDK\Event\UserEventFactory.cs">
279-
<Link>Event\UserEventFactory.cs</Link>
280-
</Compile>
281-
<Compile Include="..\OptimizelySDK\Event\EventProcessor.cs">
282-
<Link>Event\EventProcessor.cs</Link>
283-
</Compile>
284-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyConfig.cs">
285-
<Link>OptlyConfig\OptimizelyConfig.cs</Link>
286-
</Compile>
287-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyAttribute.cs">
288-
<Link>OptlyConfig\OptimizelyAttribute.cs</Link>
289-
</Compile>
290-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyEvent.cs">
291-
<Link>OptlyConfig\OptimizelyEvent.cs</Link>
292-
</Compile>
293-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyExperiment.cs">
294-
<Link>OptlyConfig\OptimizelyExperiment.cs</Link>
295-
</Compile>
296-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyAudience.cs">
297-
<Link>OptlyConfig\OptimizelyAudience.cs</Link>
298-
</Compile>
299-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyFeature.cs">
300-
<Link>OptlyConfig\OptimizelyFeature.cs</Link>
301-
</Compile>
302-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyVariable.cs">
303-
<Link>OptlyConfig\OptimizelyVariable.cs</Link>
304-
</Compile>
305-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyVariation.cs">
306-
<Link>OptlyConfig\OptimizelyVariation.cs</Link>
307-
</Compile>
308-
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyConfigService.cs">
309-
<Link>OptlyConfig\OptimizelyConfigService.cs</Link>
310-
</Compile>
311-
<Compile Include="..\OptimizelySDK\OptlyConfig\IOptimizelyConfigManager.cs">
312-
<Link>OptlyConfig\IOptimizelyConfigManager.cs</Link>
313-
</Compile>
314-
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\DecisionMessage.cs">
239+
<Compile Include="..\OptimizelySDK\Config\FallbackProjectConfigManager.cs">
240+
<Link>Config\FallbackProjectConfigManager.cs</Link>
241+
</Compile>
242+
<Compile Include="..\OptimizelySDK\Event\Entity\ConversionEvent.cs">
243+
<Link>Event\Entity\ConversionEvent.cs</Link>
244+
</Compile>
245+
<Compile Include="..\OptimizelySDK\Event\Entity\Decision.cs">
246+
<Link>Event\Entity\Decision.cs</Link>
247+
</Compile>
248+
<Compile Include="..\OptimizelySDK\Event\Entity\EventBatch.cs">
249+
<Link>Event\Entity\EventBatch.cs</Link>
250+
</Compile>
251+
<Compile Include="..\OptimizelySDK\Event\Entity\EventContext.cs">
252+
<Link>Event\Entity\EventContext.cs</Link>
253+
</Compile>
254+
<Compile Include="..\OptimizelySDK\Event\Entity\ImpressionEvent.cs">
255+
<Link>Event\Entity\ImpressionEvent.cs</Link>
256+
</Compile>
257+
<Compile Include="..\OptimizelySDK\Event\Entity\Snapshot.cs">
258+
<Link>Event\Entity\Snapshot.cs</Link>
259+
</Compile>
260+
<Compile Include="..\OptimizelySDK\Event\Entity\SnapshotEvent.cs">
261+
<Link>Event\Entity\SnapshotEvent.cs</Link>
262+
</Compile>
263+
<Compile Include="..\OptimizelySDK\Event\Entity\UserEvent.cs">
264+
<Link>Event\Entity\UserEvent.cs</Link>
265+
</Compile>
266+
<Compile Include="..\OptimizelySDK\Event\Entity\Visitor.cs">
267+
<Link>Event\Entity\Visitor.cs</Link>
268+
</Compile>
269+
<Compile Include="..\OptimizelySDK\Event\Entity\DecisionMetadata.cs">
270+
<Link>Event\Entity\DecisionMetadata.cs</Link>
271+
</Compile>
272+
<Compile Include="..\OptimizelySDK\Event\Entity\VisitorAttribute.cs">
273+
<Link>Event\Entity\VisitorAttribute.cs</Link>
274+
</Compile>
275+
<Compile Include="..\OptimizelySDK\Event\EventFactory.cs">
276+
<Link>Event\EventFactory.cs</Link>
277+
</Compile>
278+
<Compile Include="..\OptimizelySDK\Event\UserEventFactory.cs">
279+
<Link>Event\UserEventFactory.cs</Link>
280+
</Compile>
281+
<Compile Include="..\OptimizelySDK\Event\EventProcessor.cs">
282+
<Link>Event\EventProcessor.cs</Link>
283+
</Compile>
284+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyConfig.cs">
285+
<Link>OptlyConfig\OptimizelyConfig.cs</Link>
286+
</Compile>
287+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyAttribute.cs">
288+
<Link>OptlyConfig\OptimizelyAttribute.cs</Link>
289+
</Compile>
290+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyEvent.cs">
291+
<Link>OptlyConfig\OptimizelyEvent.cs</Link>
292+
</Compile>
293+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyExperiment.cs">
294+
<Link>OptlyConfig\OptimizelyExperiment.cs</Link>
295+
</Compile>
296+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyAudience.cs">
297+
<Link>OptlyConfig\OptimizelyAudience.cs</Link>
298+
</Compile>
299+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyFeature.cs">
300+
<Link>OptlyConfig\OptimizelyFeature.cs</Link>
301+
</Compile>
302+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyVariable.cs">
303+
<Link>OptlyConfig\OptimizelyVariable.cs</Link>
304+
</Compile>
305+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyVariation.cs">
306+
<Link>OptlyConfig\OptimizelyVariation.cs</Link>
307+
</Compile>
308+
<Compile Include="..\OptimizelySDK\OptlyConfig\OptimizelyConfigService.cs">
309+
<Link>OptlyConfig\OptimizelyConfigService.cs</Link>
310+
</Compile>
311+
<Compile Include="..\OptimizelySDK\OptlyConfig\IOptimizelyConfigManager.cs">
312+
<Link>OptlyConfig\IOptimizelyConfigManager.cs</Link>
313+
</Compile>
314+
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\DecisionMessage.cs">
315315
<Link>OptimizelyDecisions\DecisionMessage.cs</Link>
316316
</Compile>
317-
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\OptimizelyDecideOption.cs">
317+
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\OptimizelyDecideOption.cs">
318318
<Link>OptimizelyDecisions\OptimizelyDecideOption.cs</Link>
319319
</Compile>
320-
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\OptimizelyDecision.cs">
320+
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\OptimizelyDecision.cs">
321321
<Link>OptimizelyDecisions\OptimizelyDecision.cs</Link>
322322
</Compile>
323-
<Compile Include="..\OptimizelySDK\OptimizelyUserContext.cs">
323+
<Compile Include="..\OptimizelySDK\OptimizelyDecisionContext.cs">
324+
<Link>OptimizelyDecisionContext.cs</Link>
325+
</Compile>
326+
<Compile Include="..\OptimizelySDK\ForcedDecisionsStore.cs">
327+
<Link>ForcedDecisionsStore.cs</Link>
328+
</Compile>
329+
<Compile Include="..\OptimizelySDK\OptimizelyForcedDecision.cs">
330+
<Link>OptimizelyForcedDecision.cs</Link>
331+
</Compile>
332+
<Compile Include="..\OptimizelySDK\OptimizelyUserContext.cs">
324333
<Link>OptimizelyUserContext.cs</Link>
325334
</Compile>
326-
<Compile Include="..\OptimizelySDK\Entity\Result.cs">
327-
<Link>Entity\Result.cs</Link>
328-
</Compile>
329-
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\DecisionReasons.cs">
330-
<Link>OptimizelyDecisions\DecisionReasons.cs</Link>
331-
</Compile>
335+
<Compile Include="..\OptimizelySDK\Entity\Result.cs">
336+
<Link>Entity\Result.cs</Link>
337+
</Compile>
338+
<Compile Include="..\OptimizelySDK\OptimizelyDecisions\DecisionReasons.cs">
339+
<Link>OptimizelyDecisions\DecisionReasons.cs</Link>
340+
</Compile>
332341
</ItemGroup>
333342
<ItemGroup>
334343
<None Include="..\OptimizelySDK\Utils\schema.json">

0 commit comments

Comments
 (0)