|
|
|
@ -1,4 +1,5 @@ |
|
|
|
using System.Reactive.Disposables; |
|
|
|
using Avalonia.Controls; |
|
|
|
using Avalonia.UnitTests; |
|
|
|
using ReactiveUI; |
|
|
|
using Splat; |
|
|
|
@ -100,5 +101,75 @@ namespace Avalonia.ReactiveUI.UnitTests |
|
|
|
Assert.NotNull(view.DataContext); |
|
|
|
Assert.False(view.ViewModel.IsActive); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Inherit_DataContext() |
|
|
|
{ |
|
|
|
var vm1 = new ExampleViewModel(); |
|
|
|
var vm2 = new ExampleViewModel(); |
|
|
|
var view = new ExampleView(); |
|
|
|
var root = new TestRoot(view); |
|
|
|
|
|
|
|
Assert.Null(view.DataContext); |
|
|
|
Assert.Null(view.ViewModel); |
|
|
|
|
|
|
|
root.DataContext = vm1; |
|
|
|
|
|
|
|
Assert.Same(vm1, view.DataContext); |
|
|
|
Assert.Same(vm1, view.ViewModel); |
|
|
|
|
|
|
|
root.DataContext = null; |
|
|
|
|
|
|
|
Assert.Null(view.DataContext); |
|
|
|
Assert.Null(view.ViewModel); |
|
|
|
|
|
|
|
root.DataContext = vm2; |
|
|
|
|
|
|
|
Assert.Same(vm2, view.DataContext); |
|
|
|
Assert.Same(vm2, view.ViewModel); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Not_Overlap_Change_Notifications() |
|
|
|
{ |
|
|
|
var vm1 = new ExampleViewModel(); |
|
|
|
var vm2 = new ExampleViewModel(); |
|
|
|
|
|
|
|
var view1 = new ExampleView(); |
|
|
|
var view2 = new ExampleView(); |
|
|
|
|
|
|
|
Assert.Null(view1.DataContext); |
|
|
|
Assert.Null(view2.DataContext); |
|
|
|
Assert.Null(view1.ViewModel); |
|
|
|
Assert.Null(view2.ViewModel); |
|
|
|
|
|
|
|
view1.DataContext = vm1; |
|
|
|
|
|
|
|
Assert.Same(vm1, view1.DataContext); |
|
|
|
Assert.Same(vm1, view1.ViewModel); |
|
|
|
Assert.Null(view2.DataContext); |
|
|
|
Assert.Null(view2.ViewModel); |
|
|
|
|
|
|
|
view2.DataContext = vm2; |
|
|
|
|
|
|
|
Assert.Same(vm1, view1.DataContext); |
|
|
|
Assert.Same(vm1, view1.ViewModel); |
|
|
|
Assert.Same(vm2, view2.DataContext); |
|
|
|
Assert.Same(vm2, view2.ViewModel); |
|
|
|
|
|
|
|
view1.ViewModel = null; |
|
|
|
|
|
|
|
Assert.Null(view1.DataContext); |
|
|
|
Assert.Null(view1.ViewModel); |
|
|
|
Assert.Same(vm2, view2.DataContext); |
|
|
|
Assert.Same(vm2, view2.ViewModel); |
|
|
|
|
|
|
|
view2.ViewModel = null; |
|
|
|
|
|
|
|
Assert.Null(view1.DataContext); |
|
|
|
Assert.Null(view2.DataContext); |
|
|
|
Assert.Null(view1.ViewModel); |
|
|
|
Assert.Null(view2.ViewModel); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|