Exemple #1
0
        async Task TestAllRules1(LocalAnalytics analytics, string featureId)
        {
            var daysUsed  = 20;
            var timesUsed = 200;

            UsageRule featureUsedXDays = analytics.NewFeatureUsedXDaysRule(featureId, daysUsed);

            Assert.False(await featureUsedXDays.isTrue());
            Assert.False(await featureUsedXDays.IsFeatureUsedXDays(analytics)); // Used by .isTrue

            UsageRule featureNotUsedXDays = analytics.NewFeatureNotUsedXDaysRule(featureId, daysUsed);

            Assert.True(await featureNotUsedXDays.isTrue());

            UsageRule appNotUsedXDays = analytics.NewAppNotUsedXDaysRule(daysUsed);

            Assert.True(await appNotUsedXDays.isTrue());

            UsageRule featureNotUsedXTimes = analytics.NewFeatureNotUsedXTimesRule(featureId, timesUsed);

            Assert.True(await featureNotUsedXTimes.isTrue());

            UsageRule appUsedInTheLastXDays = analytics.NewAppUsedInTheLastXDaysRule(daysUsed);

            Assert.True(await appUsedInTheLastXDays.isTrue());

            UsageRule appNotUsedInTheLastXDays = analytics.NewAppNotUsedInTheLastXDaysRule(daysUsed);

            Assert.False(await appNotUsedInTheLastXDays.isTrue());

            UsageRule featureUsedInTheLastXDays = analytics.NewFeatureUsedInTheLastXDaysRule(featureId, daysUsed);

            Assert.True(await featureUsedInTheLastXDays.isTrue());

            { // Compose a more complex usage rule out of multiple rules:
                UsageRule appUsedXDays = analytics.NewAppUsedXDaysRule(daysUsed);
                Assert.False(await appUsedXDays.isTrue());

                UsageRule featureUsedXTimes = analytics.NewFeatureUsedXTimesRule(featureId, timesUsed);
                Assert.False(await featureUsedXTimes.isTrue());

                UsageRule featureNotUsedInTheLastXDays = analytics.NewFeatureNotUsedInTheLastXDaysRule(featureId, daysUsed);
                Assert.False(await featureNotUsedInTheLastXDays.isTrue());

                UsageRule featureNotUsedAnymoreRule = analytics.NewConcatRule(
                    appUsedXDays, featureUsedXTimes, featureNotUsedInTheLastXDays
                    );
                Assert.False(await featureNotUsedAnymoreRule.isTrue());

                UsageRule clone = featureNotUsedAnymoreRule.DeepCopyViaJson();
                clone.SetupUsing(analytics);
                Assert.False(await clone.isTrue());
            }
        }