public void ToProperty_NameOf_ValidValuesProduced(string[] testWords, string[] first3Letters, string[] last3Letters) { var fixture = new OaphNameOfTestFixture(); fixture.ObservableForProperty(x => x.FirstThreeLettersOfOneWord, beforeChange: true).ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var firstThreeChanging).Subscribe(); fixture.ObservableForProperty(x => x.LastThreeLettersOfOneWord, beforeChange: true).ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var lastThreeChanging).Subscribe(); var changing = new[] { firstThreeChanging, lastThreeChanging }; fixture.ObservableForProperty(x => x.FirstThreeLettersOfOneWord, beforeChange: false).ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var firstThreeChanged).Subscribe(); fixture.ObservableForProperty(x => x.LastThreeLettersOfOneWord, beforeChange: false).ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var lastThreeChanged).Subscribe(); var changed = new[] { firstThreeChanged, lastThreeChanged }; Assert.True(changed.All(x => x.Count == 0)); Assert.True(changing.All(x => x.Count == 0)); for (var i = 0; i < testWords.Length; ++i) { fixture.IsOnlyOneWord = testWords[i]; Assert.True(changed.All(x => x.Count == i + 1)); Assert.True(changing.All(x => x.Count == i + 1)); Assert.Equal(first3Letters[i], firstThreeChanged[i].Value); Assert.Equal(last3Letters[i], lastThreeChanged[i].Value); var firstChanging = i - 1 < 0 ? string.Empty : first3Letters[i - 1]; var lastChanging = i - 1 < 0 ? string.Empty : last3Letters[i - i]; Assert.Equal(firstChanging, firstThreeChanging[i].Value); Assert.Equal(lastChanging, lastThreeChanging[i].Value); } }
public void ToProperty_NameOf_ValidValuesProduced(string[] testWords, string[] first3Letters, string[] last3Letters) { var fixture = new OaphNameOfTestFixture(); var firstThreeChanging = fixture.ObservableForProperty(x => x.FirstThreeLettersOfOneWord, beforeChange: true).CreateCollection(scheduler: ImmediateScheduler.Instance); var lastThreeChanging = fixture.ObservableForProperty(x => x.LastThreeLettersOfOneWord, beforeChange: true).CreateCollection(scheduler: ImmediateScheduler.Instance); var changing = new[] { firstThreeChanging, lastThreeChanging }; var firstThreeChanged = fixture.ObservableForProperty(x => x.FirstThreeLettersOfOneWord, beforeChange: false).CreateCollection(scheduler: ImmediateScheduler.Instance); var lastThreeChanged = fixture.ObservableForProperty(x => x.LastThreeLettersOfOneWord, beforeChange: false).CreateCollection(scheduler: ImmediateScheduler.Instance); var changed = new[] { firstThreeChanged, lastThreeChanged }; Assert.True(changed.All(x => x.Count == 0)); Assert.True(changing.All(x => x.Count == 0)); for (int i = 0; i < testWords.Length; ++i) { fixture.IsOnlyOneWord = testWords[i]; Assert.True(changed.All(x => x.Count == i + 1)); Assert.True(changing.All(x => x.Count == i + 1)); Assert.Equal(first3Letters[i], firstThreeChanged[i].Value); Assert.Equal(last3Letters[i], lastThreeChanged[i].Value); string firstChanging = i - 1 < 0 ? "" : first3Letters[i - 1]; string lastChanging = i - 1 < 0 ? "" : last3Letters[i - i]; Assert.Equal(firstChanging, firstThreeChanging[i].Value); Assert.Equal(lastChanging, lastThreeChanging[i].Value); } }
public void ToProperty_NameOf_ShouldFireBothChangingAndChanged() { var fixture = new OaphNameOfTestFixture(); var changing = false; var changed = false; fixture.PropertyChanging += (sender, e) => changing = true; fixture.PropertyChanged += (sender, e) => changed = true; Assert.False(changing); Assert.False(changed); fixture.IsOnlyOneWord = "baz"; Assert.True(changing); Assert.True(changed); }
public void ToProperty_NameOf_ValidValuesProduced(string[] testWords, string[] first3Letters, string[] last3Letters) { if (testWords is null) { throw new ArgumentNullException(nameof(testWords)); } if (first3Letters is null) { throw new ArgumentNullException(nameof(first3Letters)); } if (last3Letters is null) { throw new ArgumentNullException(nameof(last3Letters)); } var fixture = new OaphNameOfTestFixture(); fixture.ObservableForProperty(x => x.FirstThreeLettersOfOneWord, beforeChange: true).ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var firstThreeChanging).Subscribe(); fixture.ObservableForProperty(x => x.LastThreeLettersOfOneWord, beforeChange: true).ToObservableChangeSet(ImmediateScheduler.Instance).Bind(out var lastThreeChanging).Subscribe(); var changing = new[] { firstThreeChanging !, lastThreeChanging };