public void AddingItemsShouldChangeTheContentHash(string[] toAdd) { PexAssume.IsNotNull(toAdd); PexAssume.AreElementsNotNull(toAdd); PexAssume.IsTrue(toAdd.Length > 0); (new TestScheduler()).With(sched => { var fixture = new SerializedCollection <ModelTestFixture>(); var hashes = new List <Guid>(); int changeCount = 0; fixture.Changed.Subscribe(_ => { hashes.Add(fixture.ContentHash); changeCount++; }); foreach (var v in toAdd) { fixture.Add(new ModelTestFixture() { TestString = v }); sched.Start(); } PexAssert.AreDistinctValues(hashes.ToArray()); PexAssert.AreEqual(toAdd.Length, fixture.Count); PexAssert.AreEqual(toAdd.Uniq().Count(), changeCount); }); }
public void RemovingItemsShouldChangeTheContentHash(string[] initialContents, int[] itemsToRemove) { PexAssume.IsNotNullOrEmpty(initialContents); PexAssume.IsNotNullOrEmpty(itemsToRemove); PexAssume.AreDistinctValues(initialContents); PexAssume.AreDistinctValues(itemsToRemove); PexAssume.TrueForAll(itemsToRemove, x => x < initialContents.Length && x > 0); (new TestScheduler()).With(sched => { var fixture = new SerializedCollection <ModelTestFixture>(initialContents.Select(x => new ModelTestFixture() { TestString = x })); var hashes = new List <Guid>(); int changeCount = 0; fixture.Changed.Subscribe(_ => { changeCount++; hashes.Add(fixture.ContentHash); }); var toRemove = itemsToRemove.Select(x => fixture[x]); foreach (var v in toRemove) { fixture.Remove(v); } sched.Start(); PexAssert.AreDistinctValues(hashes.ToArray()); PexAssert.AreEqual(itemsToRemove.Length, changeCount); }); }
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()); }); }