public async Task ReactiveCommandFiresOffNextSubscription() { var nextCount = 0; var errorCount = 0; var completedCount = 0; using (var featureUsageTrackingSession = new DefaultFeatureUsageTrackingSession("FeatureOne")) { var subFeatureName = "FeatureTwo"; using (var observable = ReactiveCommand.CreateFromTask <Unit, Unit>(unit => Task.FromResult(unit))) using (var subscription = observable.SubscribeWithSubFeatureUsageTracking( _ => nextCount++, _ => errorCount++, () => completedCount++, featureUsageTrackingSession, subFeatureName)) { Assert.Equal(0, nextCount); Assert.Equal(0, errorCount); Assert.Equal(0, completedCount); _ = await observable.Execute(Unit.Default); Assert.Equal(1, nextCount); Assert.Equal(0, errorCount); Assert.Equal(0, completedCount); } } }
public void SubjectFiresOffNextSubscription() { var nextCount = 0; var errorCount = 0; var completedCount = 0; using (var featureUsageTrackingSession = new DefaultFeatureUsageTrackingSession("FeatureOne")) { var subFeatureName = "FeatureTwo"; using (var observable = new Subject <int>()) using (var subscription = observable.SubscribeWithSubFeatureUsageTracking( _ => nextCount++, _ => errorCount++, () => completedCount++, featureUsageTrackingSession, subFeatureName)) { Assert.Equal(0, nextCount); Assert.Equal(0, errorCount); Assert.Equal(0, completedCount); observable.OnNext(1); Assert.Equal(1, nextCount); Assert.Equal(0, errorCount); Assert.Equal(0, completedCount); } } }
public void ReactiveCommandFiresOffNextAndErrorSubscription() { var commandCount = 0; var nextCount = 0; var errorCount = 0; var thrownExceptionCount = 0; var completedCount = 0; var featureUsageTrackingSession = new DefaultFeatureUsageTrackingSession("FeatureOne"); var subFeatureName = "FeatureTwo"; var observable = ReactiveCommand.CreateFromObservable <Unit, Unit>(_ => { commandCount++; return(Observable.Throw <Unit>(new ArgumentException("Test"))); }); var observable2 = ReactiveCommand.CreateFromTask <Unit, Unit>(_ => { commandCount++; return(Task.FromException <Unit>(new ArgumentException("Test"))); }); var observable3 = ReactiveCommand.CreateFromTask <Unit, Unit>(_ => { commandCount++; throw new ArgumentException("Test"); }); using (var subscription = observable2.SubscribeWithSubFeatureUsageTracking( _ => { nextCount++; }, _ => errorCount++, () => completedCount++, featureUsageTrackingSession, subFeatureName)) using (var thrownExceptions = observable2.ThrownExceptions.Subscribe(_ => thrownExceptionCount++)) { Assert.Equal(0, commandCount); Assert.Equal(0, nextCount); Assert.Equal(0, errorCount); Assert.Equal(0, thrownExceptionCount); Assert.Equal(0, completedCount); _ = observable.Execute(Unit.Default).Subscribe(_ => { }); Assert.Equal(1, commandCount); Assert.Equal(1, nextCount); Assert.Equal(0, errorCount); Assert.Equal(1, thrownExceptionCount); Assert.Equal(0, completedCount); } }