public void Should_Invoke_OnError_On_Activator_Error() { var activator = new BehaviorSubject <bool>(false); var source = new TestSubject(); var target = new ActivatedSubject(activator, source, string.Empty); activator.OnError(new Exception()); Assert.NotNull(source.Error); }
public void Should_Invoke_OnCompleted_On_Activator_Completed() { var activator = new BehaviorSubject <bool>(false); var source = new TestSubject(); var target = new ActivatedSubject(activator, source, string.Empty); activator.OnCompleted(); Assert.True(source.Completed); }
public void Should_Invoke_OnError_On_Activator_Error() { var activator = new BehaviorSubject <bool>(false); var source = new TestSubject(); var target = new ActivatedSubject(activator, source, string.Empty); var targetError = default(Exception); var error = new Exception(); target.Subscribe(_ => { }, e => targetError = e); activator.OnError(error); Assert.Same(error, source.Error); Assert.Same(error, targetError); }
public void Should_Set_Values() { var activator = new BehaviorSubject <bool>(false); var source = new TestSubject(); var target = new ActivatedSubject(activator, source, string.Empty); target.OnNext("bar"); Assert.Equal(PerspexProperty.UnsetValue, source.Value); activator.OnNext(true); target.OnNext("baz"); Assert.Equal("baz", source.Value); activator.OnNext(false); Assert.Equal(PerspexProperty.UnsetValue, source.Value); target.OnNext("bax"); activator.OnNext(true); Assert.Equal("bax", source.Value); }
private InstancedBinding Clone(InstancedBinding sourceInstance, IStyle style, IObservable<bool> activator) { InstancedBinding cloned; if (activator != null) { var description = style?.ToString(); if (sourceInstance.Subject != null) { var activated = new ActivatedSubject(activator, sourceInstance.Subject, description); cloned = new InstancedBinding(activated, sourceInstance.Mode, BindingPriority.StyleTrigger); } else if (sourceInstance.Observable != null) { var activated = new ActivatedObservable(activator, sourceInstance.Observable, description); cloned = new InstancedBinding(activated, sourceInstance.Mode, BindingPriority.StyleTrigger); } else { var activated = new ActivatedValue(activator, sourceInstance.Value, description); cloned = new InstancedBinding(activated, BindingMode.OneWay, BindingPriority.StyleTrigger); } } else { if (sourceInstance.Subject != null) { cloned = new InstancedBinding(sourceInstance.Subject, sourceInstance.Mode, BindingPriority.Style); } else if (sourceInstance.Observable != null) { cloned = new InstancedBinding(sourceInstance.Observable, sourceInstance.Mode, BindingPriority.Style); } else { cloned = new InstancedBinding(sourceInstance.Value, BindingPriority.Style); } } return cloned; }
/// <summary> /// Applies the setter to the control. /// </summary> /// <param name="style">The style that is being applied.</param> /// <param name="control">The control.</param> /// <param name="activator">An optional activator.</param> public void Apply(IStyle style, IStyleable control, IObservable<bool> activator) { Contract.Requires<ArgumentNullException>(control != null); var description = style?.ToString(); if (Property == null) { throw new InvalidOperationException("Setter.Property must be set."); } var binding = Value as IBinding; if (binding != null) { if (activator == null) { control.Bind(Property, binding); } else { var subject = binding.CreateSubject(control, Property); var activated = new ActivatedSubject(activator, subject, description); Bind(control, Property, binding, activated); } } else { if (activator == null) { control.SetValue(Property, Value, BindingPriority.Style); } else { var activated = new ActivatedValue(activator, Value, description); control.Bind(Property, activated, BindingPriority.StyleTrigger); } } }
public void UpsertActivatedSubject(ActivatedSubject activatedSubject) { throw new NotImplementedException(); }
public void ReplaceActivatedSubject(ActivatedSubject activatedSubject) { throw new NotImplementedException(); }