public void ChangesShouldPropagateThroughMultilevelCollections() { (new TestScheduler()).With(sched => { var input = new ModelTestFixture() {TestString = "Foo"}; var coll = new SerializedCollection<ISerializableItem>(new[] {input}); var fixture = new SerializedCollection<ISerializableList<ISerializableItem>>(new[] {(ISerializableList<ISerializableItem>)coll}); bool inputChanging = false; bool inputChanged = false; bool collChanging = false; bool collChanged = false; bool fixtureChanging = false; bool fixtureChanged = false; input.Changing.Subscribe(_ => inputChanging = true); input.Changed.Subscribe(_ => inputChanged = true); coll.ItemChanging.Subscribe(_ => collChanging = true); coll.ItemChanging.Subscribe(_ => collChanged = true); fixture.ItemChanging.Subscribe(_ => fixtureChanging = true); fixture.ItemChanged.Subscribe(_ => fixtureChanged = true); input.TestString = "Bar"; sched.RunToMilliseconds(1000); Assert.True(inputChanging); Assert.True(inputChanged); Assert.True(collChanging); Assert.True(collChanged); Assert.True(fixtureChanging); Assert.True(fixtureChanged); }); }
public void ItemsChangedShouldFire(string[] setters) { PexAssume.IsNotNull(setters); PexAssume.AreElementsNotNull(setters); this.Log().InfoFormat("Setting TestString to [{0}]", String.Join(",", setters)); (new TestScheduler()).With(sched => { var output_changed = new List<object>(); var output_changing = new List<object>(); var fixture = new ModelTestFixture(); fixture.Changing.Subscribe(output_changing.Add); fixture.Changed.Subscribe(output_changed.Add); foreach (var v in setters) { fixture.TestString = v; } sched.Start(); PexAssert.AreEqual(setters.Uniq().Count(), output_changed.Count); PexAssert.AreEqual(setters.Uniq().Count(), output_changing.Count); }); }
public void ModelBaseShouldBeObservableAfterDeserialization() { var dse = new DictionaryStorageEngine(); (new TestScheduler()).With(sched => { var input = new ModelTestFixture() { TestString = "Foo" }; dse.Save(input); var fixture = dse.Load <ModelTestFixture>(input.ContentHash); string latest = null; var changed = fixture.Changed; this.Log().InfoFormat("Subscribing to Changed: 0x{0:X}", changed.GetHashCode()); changed.Subscribe(Console.WriteLine); changed.Subscribe(x => latest = x.PropertyName); fixture.TestString = "Bar"; sched.RunToMilliseconds(1000); Assert.Equal("TestString", latest); }); }
public void ItemsChangedShouldFire(string[] setters) { PexAssume.IsNotNull(setters); PexAssume.AreElementsNotNull(setters); this.Log().InfoFormat("Setting TestString to [{0}]", String.Join(",", setters)); (new TestScheduler()).With(sched => { var output_changed = new List <object>(); var output_changing = new List <object>(); var fixture = new ModelTestFixture(); fixture.Changing.Subscribe(output_changing.Add); fixture.Changed.Subscribe(output_changed.Add); foreach (var v in setters) { fixture.TestString = v; } sched.Start(); PexAssert.AreEqual(setters.Uniq().Count(), output_changed.Count); PexAssert.AreEqual(setters.Uniq().Count(), output_changing.Count); }); }
public void ChangesShouldPropagateThroughMultilevelCollections() { (new TestScheduler()).With(sched => { var input = new ModelTestFixture() { TestString = "Foo" }; var coll = new SerializedCollection <ISerializableItem>(new[] { input }); var fixture = new SerializedCollection <ISerializableList <ISerializableItem> >(new[] { (ISerializableList <ISerializableItem>)coll }); bool inputChanging = false; bool inputChanged = false; bool collChanging = false; bool collChanged = false; bool fixtureChanging = false; bool fixtureChanged = false; input.Changing.Subscribe(_ => inputChanging = true); input.Changed.Subscribe(_ => inputChanged = true); coll.ItemChanging.Subscribe(_ => collChanging = true); coll.ItemChanging.Subscribe(_ => collChanged = true); fixture.ItemChanging.Subscribe(_ => fixtureChanging = true); fixture.ItemChanged.Subscribe(_ => fixtureChanged = true); input.TestString = "Bar"; sched.RunToMilliseconds(1000); Assert.True(inputChanging); Assert.True(inputChanged); Assert.True(collChanging); Assert.True(collChanged); Assert.True(fixtureChanging); Assert.True(fixtureChanged); }); }
public void GuidsShouldBeUniqueForContent(string[] setters) { PexAssume.IsNotNull(setters); PexAssume.AreElementsNotNull(setters); (new TestScheduler()).With(sched => { var fixture = new ModelTestFixture(); var output = new Dictionary<string, Guid>(); setters.ToObservable(sched).Subscribe(x => { fixture.TestString = x; output[x] = fixture.ContentHash; }); sched.Start(); PexAssert.AreDistinctValues(output.Values.ToArray()); }); }
public void GuidsShouldBeUniqueForContent(string[] setters) { PexAssume.IsNotNull(setters); PexAssume.AreElementsNotNull(setters); (new TestScheduler()).With(sched => { var fixture = new ModelTestFixture(); var output = new Dictionary <string, Guid>(); setters.ToObservable(sched).Subscribe(x => { fixture.TestString = x; output[x] = fixture.ContentHash; }); sched.Start(); PexAssert.AreDistinctValues(output.Values.ToArray()); }); }
public void ModelBaseShouldBeObservableAfterDeserialization() { var dse = new DictionaryStorageEngine(); (new TestScheduler()).With(sched => { var input = new ModelTestFixture() {TestString = "Foo"}; dse.Save(input); var fixture = dse.Load<ModelTestFixture>(input.ContentHash); string latest = null; var changed = fixture.Changed; changed.Subscribe(Console.WriteLine); changed.Subscribe(x => latest = x.PropertyName); fixture.TestString = "Bar"; sched.RunToMilliseconds(1000); Assert.Equal("TestString", latest); }); }