public void OFPNamedPropertyTestRepeats() { (new TestScheduler()).With(sched => { var fixture = new TestFixture(); var changes = fixture.ObservableForProperty <TestFixture, string>(x => x.IsOnlyOneWord).CreateCollection(); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(1, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(3, changes.Count); Assert.True(changes.All(x => x.Sender == fixture)); Assert.True(changes.All(x => x.GetPropertyName() == "IsOnlyOneWord")); changes.Select(x => x.Value).AssertAreEqual(new[] { "Foo", "Bar", "Foo" }); }); }
public void GetValueShouldActuallyReturnTheValue() { var input = new[] { "Foo", "Bar", "Baz" }; var output = new List <string>(); new TestScheduler().With(scheduler => { var fixture = new TestFixture(); // ...whereas ObservableForProperty *is* guaranteed to. fixture.ObservableForProperty(x => x.IsOnlyOneWord) .Select(x => x.GetValue()) .WhereNotNull() .Subscribe(x => { output.Add(x); }); foreach (var v in input) { fixture.IsOnlyOneWord = v; } scheduler.AdvanceToMs(1000); input.AssertAreEqual(output); }); }
public void GetValueShouldActuallyReturnTheValue() { var input = new[] { "Foo", "Bar", "Baz" }; var output = new List <string>(); var output2 = new List <string>(); (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // Two cases: Changed is guaranteed to *not* set ObservedChange.Value fixture.Changed.Subscribe(x => { output.Add((string)x.GetValue()); }); // ...whereas ObservableForProperty *is* guaranteed to. fixture.ObservableForProperty(x => x.IsOnlyOneWord).Subscribe(x => { output2.Add(x.GetValue()); }); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.RunToMilliseconds(1000); input.AssertAreEqual(output); input.AssertAreEqual(output2); }); }
public void ObservableForPropertyUsingExpression() { var fixture = new TestFixture() { IsNotNullString = "Foo", IsOnlyOneWord = "Baz" }; var output = new List <IObservedChange <TestFixture, string> >(); fixture.ObservableForProperty(x => x.IsNotNullString).Subscribe(x => { output.Add(x); }); fixture.IsNotNullString = "Bar"; fixture.IsNotNullString = "Baz"; fixture.IsNotNullString = "Baz"; fixture.IsOnlyOneWord = "Bamf"; Assert.Equal(2, output.Count); Assert.Equal(fixture, output[0].Sender); Assert.Equal("IsNotNullString", output[0].GetPropertyName()); Assert.Equal("Bar", output[0].Value); Assert.Equal(fixture, output[1].Sender); Assert.Equal("IsNotNullString", output[1].GetPropertyName()); Assert.Equal("Baz", output[1].Value); }
public void OFPNamedPropertyTestBeforeChange() { (new TestScheduler()).With(sched => { var fixture = new TestFixture() { IsOnlyOneWord = "Pre" }; var changes = fixture.ObservableForProperty <TestFixture, string>("IsOnlyOneWord", beforeChange: true).CreateCollection(); sched.Start(); Assert.Equal(0, changes.Count); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(1, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); Assert.True(changes.All(x => x.Sender == fixture)); Assert.True(changes.All(x => x.PropertyName == "IsOnlyOneWord")); changes.Select(x => x.Value).AssertAreEqual(new[] { "Pre", "Foo" }); }); }
public void OFPSimplePropertyTest() { new TestScheduler().With( sched => { var fixture = new TestFixture(); var changes = fixture.ObservableForProperty(x => x.IsOnlyOneWord).CreateCollection(scheduler: ImmediateScheduler.Instance); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(1, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); fixture.IsOnlyOneWord = "Baz"; sched.Start(); Assert.Equal(3, changes.Count); fixture.IsOnlyOneWord = "Baz"; sched.Start(); Assert.Equal(3, changes.Count); Assert.True(changes.All(x => x.Sender == fixture)); Assert.True(changes.All(x => x.GetPropertyName() == "IsOnlyOneWord")); changes.Select(x => x.Value).AssertAreEqual(new[] { "Foo", "Bar", "Baz" }); }); }
public void OFPNamedPropertyTestRepeats() { new TestScheduler().With(sched => { var fixture = new TestFixture(); fixture.ObservableForProperty(x => x.IsOnlyOneWord) .ToObservableChangeSet(ImmediateScheduler.Instance) .Bind(out var changes) .Subscribe(); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(1, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(3, changes.Count); Assert.True(changes.All(x => x.Sender == fixture)); Assert.True(changes.All(x => x.GetPropertyName() == "IsOnlyOneWord")); changes.Select(x => x.Value).AssertAreEqual(new[] { "Foo", "Bar", "Foo" }); }); }
public void GetValueShouldActuallyReturnTheValue() { var input = new[] {"Foo", "Bar", "Baz"}; var output = new List<string>(); (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // ...whereas ObservableForProperty *is* guaranteed to. fixture.ObservableForProperty(x => x.IsOnlyOneWord).Subscribe(x => { output.Add(x.GetValue()); }); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.AdvanceToMs(1000); input.AssertAreEqual(output); }); }
public void OFPNamedPropertyTestNoSkipInitial() { (new TestScheduler()).With(sched => { var fixture = new TestFixture() { IsOnlyOneWord = "Pre" }; var changes = fixture.ObservableForProperty <TestFixture, string>(x => x.IsOnlyOneWord, skipInitial: false).CreateCollection(scheduler: ImmediateScheduler.Instance); sched.Start(); Assert.Equal(1, changes.Count); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(2, changes.Count); Assert.True(changes.All(x => x.Sender == fixture)); Assert.True(changes.All(x => x.GetPropertyName() == "IsOnlyOneWord")); changes.Select(x => x.Value).AssertAreEqual(new[] { "Pre", "Foo" }); }); }
public void ObservableForPropertyUsingExpression() { var fixture = new TestFixture() { IsNotNullString = "Foo", IsOnlyOneWord = "Baz" }; var output = new List<IObservedChange<TestFixture, string>>(); fixture.ObservableForProperty(x => x.IsNotNullString).Subscribe(x => { output.Add(x); }); fixture.IsNotNullString = "Bar"; fixture.IsNotNullString = "Baz"; fixture.IsNotNullString = "Baz"; fixture.IsOnlyOneWord = "Bamf"; Assert.Equal(2, output.Count); Assert.Equal(fixture, output[0].Sender); Assert.Equal("IsNotNullString", output[0].PropertyName); Assert.Equal("Bar", output[0].Value); Assert.Equal(fixture, output[1].Sender); Assert.Equal("IsNotNullString", output[1].PropertyName); Assert.Equal("Baz", output[1].Value); }
public void ValueTest() { var input = new[] { "Foo", "Bar", "Baz" }; IEnumerable <string> output = null; IEnumerable <string> output2 = null; (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // Same deal as above output = fixture.Changed.Value <object, object, string>().CreateCollection(); output2 = fixture.ObservableForProperty(x => x.IsOnlyOneWord).Value().CreateCollection(); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.RunToMilliseconds(1000); input.AssertAreEqual(output); input.AssertAreEqual(output2); }); }
public void ValueTest() { var input = new[] {"Foo", "Bar", "Baz"}; IEnumerable<string> output = null; IEnumerable<string> output2 = null; (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // Same deal as above output = fixture.Changed.Value<object, object, string>().CreateCollection(); output2 = fixture.ObservableForProperty(x => x.IsOnlyOneWord).Value().CreateCollection(); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.AdvanceToMs(1000); input.AssertAreEqual(output); input.AssertAreEqual(output2); }); }
public void GetValueShouldActuallyReturnTheValue() { var input = new[] {"Foo", "Bar", "Baz"}; var output = new List<string>(); var output2 = new List<string>(); (new TestScheduler()).With(sched => { var fixture = new TestFixture(); // Two cases: Changed is guaranteed to *not* set ObservedChange.Value fixture.Changed.Subscribe(x => { output.Add((string) x.GetValue()); }); // ...whereas ObservableForProperty *is* guaranteed to. fixture.ObservableForProperty(x => x.IsOnlyOneWord).Subscribe(x => { output2.Add(x.GetValue()); }); foreach (var v in input) { fixture.IsOnlyOneWord = v; } sched.RunToMilliseconds(1000); input.AssertAreEqual(output); input.AssertAreEqual(output2); }); }
public void OFPSimplePropertyTest() { (new TestScheduler()).With(sched => { var fixture = new TestFixture(); var changes = fixture.ObservableForProperty(x => x.IsOnlyOneWord).CreateCollection(); fixture.IsOnlyOneWord = "Foo"; sched.Start(); Assert.Equal(1, changes.Count); fixture.IsOnlyOneWord = "Bar"; sched.Start(); Assert.Equal(2, changes.Count); fixture.IsOnlyOneWord = "Baz"; sched.Start(); Assert.Equal(3, changes.Count); fixture.IsOnlyOneWord = "Baz"; sched.Start(); Assert.Equal(3, changes.Count); Assert.True(changes.All(x => x.Sender == fixture)); Assert.True(changes.All(x => x.PropertyName == "IsOnlyOneWord")); changes.Select(x => x.Value).AssertAreEqual(new[] {"Foo", "Bar", "Baz"}); }); }