mirror of
https://github.com/PrismLibrary/Prism.git
synced 2026-10-28 21:07:24 +08:00
Mark BindableBase for inherited discovery and extend the existing MAUI and Uno playgrounds with synthetic nested-model, collection and navigation checks. Keep explicit local NativeAOT validation on the real Microsoft container with matching package versions. No new projects or CI changes; native execution remains unverified.
70 lines
2.2 KiB
C#
70 lines
2.2 KiB
C#
using System.ComponentModel;
|
|
using System.Reflection;
|
|
using Prism.Mvvm;
|
|
using Prism.Tests.Mocks.ViewModels;
|
|
using Xunit;
|
|
|
|
namespace Prism.Tests.Mvvm
|
|
{
|
|
public class BindableBaseFixture
|
|
{
|
|
[Fact]
|
|
public void BindableMarkerIsInheritedByViewModels()
|
|
{
|
|
Assert.True(typeof(BindableBase).GetCustomAttribute<BindableAttribute>()?.Bindable);
|
|
Assert.True(typeof(MockViewModel).GetCustomAttribute<BindableAttribute>(inherit: true)?.Bindable);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetPropertyMethodShouldSetTheNewValue()
|
|
{
|
|
int value = 10;
|
|
MockViewModel mockViewModel = new MockViewModel();
|
|
|
|
Assert.Equal(0, mockViewModel.MockProperty);
|
|
|
|
mockViewModel.MockProperty = value;
|
|
Assert.Equal(value, mockViewModel.MockProperty);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetPropertyMethodShouldNotSetTheNewValue()
|
|
{
|
|
int value = 10, newValue = 10;
|
|
MockViewModel mockViewModel = new MockViewModel();
|
|
mockViewModel.MockProperty = value;
|
|
|
|
bool invoked = false;
|
|
mockViewModel.PropertyChanged += (o, e) => { if (e.PropertyName.Equals("MockProperty")) invoked = true; };
|
|
mockViewModel.MockProperty = newValue;
|
|
|
|
Assert.False(invoked);
|
|
Assert.Equal(value, mockViewModel.MockProperty);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetPropertyMethodShouldRaisePropertyRaised()
|
|
{
|
|
bool invoked = false;
|
|
MockViewModel mockViewModel = new MockViewModel();
|
|
|
|
mockViewModel.PropertyChanged += (o, e) => { if (e.PropertyName.Equals("MockProperty")) invoked = true; };
|
|
mockViewModel.MockProperty = 10;
|
|
|
|
Assert.True(invoked);
|
|
}
|
|
|
|
[Fact]
|
|
public void OnPropertyChangedShouldExtractPropertyNameCorrectly()
|
|
{
|
|
bool invoked = false;
|
|
MockViewModel mockViewModel = new MockViewModel();
|
|
|
|
mockViewModel.PropertyChanged += (o, e) => { if (e.PropertyName.Equals("MockProperty")) invoked = true; };
|
|
mockViewModel.InvokeOnPropertyChanged();
|
|
|
|
Assert.True(invoked);
|
|
}
|
|
}
|
|
}
|