public async Task TextChangeEventsFireCorrectly(string initialText, string newText, bool eventExpected) { var entry = new EntryStub { Text = initialText, }; var eventFiredCount = 0; entry.TextChanged += (sender, e) => { eventFiredCount++; Assert.Equal(initialText, e.OldValue); Assert.Equal(newText ?? string.Empty, e.NewValue); }; await SetValueAsync(entry, newText, SetNativeText); if (eventExpected) { Assert.Equal(1, eventFiredCount); } else { Assert.Equal(0, eventFiredCount); } }
public async Task FontFamilyInitializesCorrectly(string family) { var entry = new EntryStub { Text = "Test", Font = Font.OfSize(family, 10) }; var handler = await CreateHandlerAsync(entry); var nativeEntry = GetNativeEntry(handler); var fontManager = handler.Services.GetRequiredService <IFontManager>(); var nativeFont = fontManager.GetTypeface(Font.OfSize(family, 0.0)); Assert.Equal(nativeFont, nativeEntry.Typeface); if (string.IsNullOrEmpty(family)) { Assert.Equal(fontManager.DefaultTypeface, nativeEntry.Typeface); } else { Assert.NotEqual(fontManager.DefaultTypeface, nativeEntry.Typeface); } }
public async Task ContentInitializesCorrectly() { bool result = await InvokeOnMainThreadAsync(() => { var entry = new EntryStub() { Text = "In a ScrollView" }; var entryHandler = Activator.CreateInstance <EntryHandler>(); entryHandler.SetMauiContext(MauiContext); entryHandler.SetVirtualView(entry); entry.Handler = entryHandler; var scrollView = new ScrollViewStub() { Content = entry }; var scrollViewHandler = CreateHandler(scrollView); for (int n = 0; n < scrollViewHandler.PlatformView.ChildCount; n++) { var platformView = scrollViewHandler.PlatformView.GetChildAt(n); if (platformView is AppCompatEditText) { return(true); } } return(false); // No AppCompatEditText }); Assert.True(result, $"Expected (but did not find) a {nameof(AppCompatEditText)} child of the {nameof(NestedScrollView)}."); }
public async Task ContentInitializesCorrectly() { bool result = await InvokeOnMainThreadAsync(() => { var entry = new EntryStub() { Text = "In a ScrollView" }; var entryHandler = Activator.CreateInstance <EntryHandler>(); entryHandler.SetMauiContext(MauiContext); entryHandler.SetVirtualView(entry); entry.Handler = entryHandler; var scrollView = new ScrollViewStub() { Content = entry }; var scrollViewHandler = CreateHandler(scrollView); foreach (var nativeView in scrollViewHandler.NativeView.Subviews) { if (nativeView is MauiTextField) { return(true); } } return(false); // No MauiTextField }); Assert.True(result, $"Expected (but did not find) a {nameof(MauiTextField)} in the Subviews array"); }
public async Task IsTextPredictionEnabledCorrectly(bool isEnabled) { var entry = new EntryStub() { IsTextPredictionEnabled = isEnabled }; await ValidatePropertyInitValue(entry, () => entry.IsTextPredictionEnabled, GetNativeIsTextPredictionEnabled, isEnabled); }
public async Task IsPasswordInitializesCorrectly(bool isPassword) { var entry = new EntryStub() { IsPassword = isPassword }; await ValidatePropertyInitValue(entry, () => entry.IsPassword, GetNativeIsPassword, isPassword); }
public async Task TextInitializesCorrectly() { var entry = new EntryStub() { Text = "Test" }; await ValidatePropertyInitValue(entry, () => entry.Text, GetNativeText, entry.Text); }
public async Task PlaceholderInitializesCorrectly() { var entry = new EntryStub() { Text = "Placeholder" }; await ValidatePropertyInitValue(entry, () => entry.Placeholder, GetNativePlaceholder, entry.Placeholder); }
public async Task TextColorInitializesCorrectly() { var entry = new EntryStub() { Text = "Test", TextColor = Color.Yellow }; await ValidatePropertyInitValue(entry, () => entry.TextColor, GetNativeTextColor, entry.TextColor); }
public async Task PlaceholderColorInitializesCorrectly() { var entry = new EntryStub() { Placeholder = "Test", PlaceholderColor = Colors.Yellow }; await ValidatePropertyInitValue(entry, () => entry.PlaceholderColor, GetNativePlaceholderColor, entry.PlaceholderColor); }
public async Task IsPasswordUpdatesCorrectly(bool setValue, bool unsetValue) { var entry = new EntryStub(); await ValidatePropertyUpdatesValue( entry, nameof(IEntry.IsPassword), GetNativeIsPassword, setValue, unsetValue); }
public async Task IsTextPredictionEnabledUpdatesCorrectly(bool setValue, bool unsetValue) { var entry = new EntryStub(); await ValidatePropertyUpdatesValue( entry, nameof(IEntry.IsTextPredictionEnabled), GetNativeIsTextPredictionEnabled, setValue, unsetValue); }
public async Task TextColorUpdatesCorrectly(uint setValue, uint unsetValue) { var entry = new EntryStub(); var setColor = Color.FromUint(setValue); var unsetColor = Color.FromUint(unsetValue); await ValidatePropertyUpdatesValue( entry, nameof(IEntry.TextColor), GetNativeTextColor, setColor, unsetColor); }
public async Task TextUpdatesCorrectly(string setValue, string unsetValue) { var entry = new EntryStub(); await ValidatePropertyUpdatesValue( entry, nameof(IEntry.Text), h => { var n = GetNativeText(h); if (string.IsNullOrEmpty(n)) { n = null; // native platforms may not upport null text } return(n); }, setValue, unsetValue); }
public async Task ContentInitializesCorrectly() { bool result = await InvokeOnMainThreadAsync(() => { var entry = new EntryStub() { Text = "In a ScrollView" }; var entryHandler = Activator.CreateInstance <EntryHandler>(); entryHandler.SetMauiContext(MauiContext); entryHandler.SetVirtualView(entry); entry.Handler = entryHandler; var scrollView = new ScrollViewStub() { Content = entry }; var scrollViewHandler = CreateHandler(scrollView); foreach (var platformView in scrollViewHandler.PlatformView.Subviews) { // ScrollView on iOS uses an intermediate ContentView to handle conetent measurement/arrangement if (platformView is ContentView contentView) { foreach (var content in contentView.Subviews) { if (content is MauiTextField) { return(true); } } } } return(false); // No MauiTextField }); Assert.True(result, $"Expected (but did not find) a {nameof(MauiTextField)} in the Subviews array"); }
public async Task ReturnTypeInitializesCorrectly() { var xplatReturnType = ReturnType.Next; var entry = new EntryStub() { Text = "Test", ReturnType = xplatReturnType }; ImeAction expectedValue = ImeAction.Next; var values = await GetValueAsync(entry, (handler) => { return(new { ViewValue = entry.ReturnType, PlatformViewValue = GetNativeReturnType(handler) }); }); Assert.Equal(xplatReturnType, values.ViewValue); Assert.Equal(expectedValue, values.PlatformViewValue); }
public async Task CharacterSpacingInitializesCorrectly() { string originalText = "Some Test Text"; var xplatCharacterSpacing = 4; var entry = new EntryStub() { CharacterSpacing = xplatCharacterSpacing, Text = originalText }; var values = await GetValueAsync(entry, (handler) => { return(new { ViewValue = entry.CharacterSpacing, NativeViewValue = GetNativeCharacterSpacing(handler) }); }); Assert.Equal(xplatCharacterSpacing, values.ViewValue); Assert.Equal(xplatCharacterSpacing, values.NativeViewValue); }
public async Task VerticalTextAlignmentInitializesCorrectily() { var xplatVerticalTextAlignment = TextAlignment.End; var entry = new EntryStub { Text = "Test", VerticalTextAlignment = xplatVerticalTextAlignment }; Android.Views.GravityFlags expectedValue = Android.Views.GravityFlags.Bottom; var values = await GetValueAsync(entry, (handler) => { return(new { ViewValue = entry.VerticalTextAlignment, PlatformViewValue = GetNativeVerticalTextAlignment(handler) }); }); Assert.Equal(xplatVerticalTextAlignment, values.ViewValue); values.PlatformViewValue.AssertHasFlag(expectedValue); }
public async Task HorizontalTextAlignmentInitializesCorrectly() { var xplatHorizontalTextAlignment = TextAlignment.End; var entry = new EntryStub() { Text = "Test", HorizontalTextAlignment = xplatHorizontalTextAlignment }; Android.Views.TextAlignment expectedValue = Android.Views.TextAlignment.ViewEnd; var values = await GetValueAsync(entry, (handler) => { return(new { ViewValue = entry.HorizontalTextAlignment, PlatformViewValue = GetNativeHorizontalTextAlignment(handler) }); }); Assert.Equal(xplatHorizontalTextAlignment, values.ViewValue); values.PlatformViewValue.AssertHasFlag(expectedValue); }
public async Task CharacterSpacingInitializesCorrectly() { var xplatCharacterSpacing = 4; var entry = new EntryStub() { CharacterSpacing = xplatCharacterSpacing, Text = "Some Test Text" }; float expectedValue = entry.CharacterSpacing.ToEm(); var values = await GetValueAsync(entry, (handler) => { return(new { ViewValue = entry.CharacterSpacing, PlatformViewValue = GetNativeCharacterSpacing(handler) }); }); Assert.Equal(xplatCharacterSpacing, values.ViewValue); Assert.Equal(expectedValue, values.PlatformViewValue, EmCoefficientPrecision); }
public async Task VerticalTextAlignmentInitializesCorrectily() { var xplatVerticalTextAlignment = TextAlignment.End; var entry = new EntryStub { Text = "Test", VerticalTextAlignment = xplatVerticalTextAlignment }; UIControlContentVerticalAlignment expectedValue = UIControlContentVerticalAlignment.Bottom; var values = await GetValueAsync(entry, (handler) => { return(new { ViewValue = entry.VerticalTextAlignment, NativeViewValue = GetNativeVerticalTextAlignment(handler) }); }); Assert.Equal(xplatVerticalTextAlignment, values.ViewValue); values.NativeViewValue.AssertHasFlag(expectedValue); }
public async Task FontFamilyInitializesCorrectly(string family) { var entry = new EntryStub { Text = "Test", Font = Font.OfSize(family, 10) }; var(services, nativeFont) = await GetValueAsync(entry, handler => (handler.Services, GetNativeEntry(handler).Font)); var fontManager = services.GetRequiredService <IFontManager>(); var expectedNativeFont = fontManager.GetFont(Font.OfSize(family, 0.0)); Assert.Equal(expectedNativeFont.FamilyName, nativeFont.FamilyName); if (string.IsNullOrEmpty(family)) { Assert.Equal(fontManager.DefaultFont.FamilyName, nativeFont.FamilyName); } else { Assert.NotEqual(fontManager.DefaultFont.FamilyName, nativeFont.FamilyName); } }