Files
Dan Siegel 17dd42479c Prepare inherited binding metadata and NativeAOT playground checks
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.
2026-10-07 15:28:12 -07:00

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);
}
}
}