public void ObservableInstanceMethodShouldInvokeMethodWhenInstanceChangesAndRaiseChangedEvent() { var methodInfo = typeof(ExampleClass).GetMethod( "PublicInstanceMethodNoParamsReturnInt32", BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); var instance = new ExampleClass(10); var changes = new List <int>(); var observableInstanceMethod = new ObservableInstanceMethod <ExampleClass, Int32>(instance, methodInfo); observableInstanceMethod.Result.Changed.Subscribe((v) => changes.Add(v)); changes.Count.Should().Be(1); changes[0].Should().Be(10); observableInstanceMethod.Result.GetValue().Should().Be(10); instance.GetCallCount(methodInfo.Name).Should().Be(1); var instance2 = new ExampleClass(20); observableInstanceMethod.Instance.SetValue(instance2); changes.Count.Should().Be(2); changes[0].Should().Be(10); changes[1].Should().Be(20); observableInstanceMethod.Result.GetValue().Should().Be(20); instance.GetCallCount(methodInfo.Name).Should().Be(1); instance2.GetCallCount(methodInfo.Name).Should().Be(1); }
public void ObservableInstanceMethodConstructorShouldInvokeMethodOnInstance() { var methodInfo = typeof(ExampleClass).GetMethod( "PublicInstanceMethodNoParamsReturnInt32", BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); var instance = new ExampleClass(10); var observableInstanceMethod = new ObservableInstanceMethod <ExampleClass, Int32>(instance, methodInfo); observableInstanceMethod.Result.GetValue().Should().Be(10); instance.GetCallCount(methodInfo.Name).Should().Be(1); }