Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.Collections.Generic;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Core.UnitTests;
using NUnit.Framework;
using Xunit;

namespace Microsoft.Maui.Controls.Xaml.UnitTests
{
Expand All @@ -29,14 +29,15 @@ public AcceptEmptyServiceProvider()

public IServiceProvider ServiceProvider { get; set; }

[TestFixture]
class Tests
[Collection("Xaml Inflation")]
public class Tests
{
[Test]
public void ServiceProviderIsNullOnAttributedExtensions([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void ServiceProviderIsNullOnAttributedExtensions(XamlInflator inflator)
{
var p = new AcceptEmptyServiceProvider(inflator);
Assert.IsNull(p.ServiceProvider);
Assert.Null(p.ServiceProvider);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Collections.Generic;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Core.UnitTests;
using NUnit.Framework;

namespace Microsoft.Maui.Controls.Xaml.UnitTests
{
Expand Down
46 changes: 25 additions & 21 deletions src/Controls/tests/Xaml.UnitTests/AssemblyInfoTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
using System.Diagnostics;
using System.IO;
using System.Reflection;
using NUnit.Framework;
using Xunit;
using IOPath = System.IO.Path;

namespace Microsoft.Maui.Controls.MSBuild.UnitTests
{
[TestFixture]
[Collection("Xaml Inflation")]
public class AssemblyInfoTests
{
static readonly string[] references = new[]
public static TheoryData<string> References => new TheoryData<string>
{
"Microsoft.Maui",
"Microsoft.Maui.Controls",
Expand All @@ -25,26 +25,29 @@ public class AssemblyInfoTests

const string s_versionPropsFile = "eng/Versions.props";

[Test, TestCaseSource(nameof(references))]
[Theory]
[MemberData(nameof(References))]
public void AssemblyTitle(string assemblyName)
{
Assembly testAssembly = System.Reflection.Assembly.Load(assemblyName);
Assert.AreEqual(assemblyName, testAssembly.GetName().Name);
Assert.Equal(assemblyName, testAssembly.GetName().Name);
}

[Test, TestCaseSource(nameof(references))]
[Theory]
[MemberData(nameof(References))]
public void AssemblyVersion(string assemblyName)
{
Assembly testAssembly = System.Reflection.Assembly.Load(assemblyName);
Version actual = testAssembly.GetName().Version;
// Currently we keep the assembly verison at 10.0.0.0
Assert.AreEqual(10, actual.Major, actual.ToString());
Assert.AreEqual(0, actual.Minor, actual.ToString());
Assert.AreEqual(0, actual.Build, actual.ToString());
Assert.AreEqual(0, actual.Revision, actual.ToString());
Assert.Equal(10, actual.Major);
Assert.Equal(0, actual.Minor);
Assert.Equal(0, actual.Build);
Assert.Equal(0, actual.Revision);
}

// [Test, TestCaseSource(nameof(references))]
// [Theory]
// [MemberData(nameof(References))]
// public void FileVersion(string assemblyName)
// {
// Assembly testAssembly = System.Reflection.Assembly.Load(assemblyName);
Expand All @@ -56,28 +59,29 @@ public void AssemblyVersion(string assemblyName)
// var majorString = xml.SelectSingleNode("//MajorVersion").InnerText;
// var minorString = xml.SelectSingleNode("//MinorVersion").InnerText;
// Version expected = Version.Parse($"{majorString}.{minorString}.0.0");
// Assert.AreEqual(expected.Major, actual.FileMajorPart, $"FileMajorPart is wrong. {actual}");
// Assert.AreEqual(expected.Minor, actual.FileMinorPart, $"FileMinorPart is wrong. {actual}");
// Assert.Equal(expected.Major, actual.FileMajorPart);
// Assert.Equal(expected.Minor, actual.FileMinorPart);
// // Fails locally
// //Assert.AreEqual(expected.Build, actual.FileBuildPart, $"FileBuildPart is wrong. {actual.ToString()}");
// //Assert.Equal(expected.Build, actual.FileBuildPart);
// //We need to enable this
// // Assert.AreEqual(ThisAssembly.Git.Commits, version.FilePrivatePart);
// Assert.AreEqual(s_productName, actual.ProductName);
// Assert.AreEqual(s_company, actual.CompanyName);
// // Assert.Equal(ThisAssembly.Git.Commits, version.FilePrivatePart);
// Assert.Equal(s_productName, actual.ProductName);
// Assert.Equal(s_company, actual.CompanyName);
// }

[Test, TestCaseSource(nameof(references))]
[Theory]
[MemberData(nameof(References))]
public void ProductAndCompany(string assemblyName)
{
Assembly testAssembly = System.Reflection.Assembly.Load(assemblyName);
FileVersionInfo actual = FileVersionInfo.GetVersionInfo(testAssembly.Location);
Assert.AreEqual(s_productName, actual.ProductName);
Assert.AreEqual(s_company, actual.CompanyName);
Assert.Equal(s_productName, actual.ProductName);
Assert.Equal(s_company, actual.CompanyName);
}

internal static string GetFilePathFromRoot(string file)
{
var fileFromRoot = IOPath.Combine(TestContext.CurrentContext.TestDirectory, "..", "..", "..", "..", "..", file);
var fileFromRoot = IOPath.Combine(AppContext.BaseDirectory, "..", "..", "..", "..", "..", file);
if (!File.Exists(fileFromRoot))
{
//NOTE: VSTS may be running tests in a staging directory, so we can use an environment variable to find the source
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using Microsoft.Maui.Controls.Core.UnitTests;
using Microsoft.Maui.Graphics;
using NUnit.Framework;
using Xunit;

namespace Microsoft.Maui.Controls.Xaml.UnitTests;

Expand All @@ -12,18 +12,19 @@ public AutoMergedResourceDictionaries()
InitializeComponent();
}

[TestFixture]
class Tests
[Collection("Xaml Inflation")]
public class Tests : IDisposable
{
[SetUp] public void Setup() => Application.Current = new MockApplication();
[TearDown] public void TearDown() => Application.Current = null;
public Tests() => Application.Current = new MockApplication();
public void Dispose() => Application.Current = null;

[Test]
public void AutoMergedRd([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void AutoMergedRd(XamlInflator inflator)
{
var layout = new AutoMergedResourceDictionaries(inflator);
Assert.That(layout.label.TextColor, Is.EqualTo(Colors.Purple));
Assert.That(layout.label.BackgroundColor, Is.EqualTo(Color.FromArgb("#FF96F3")));
Assert.Equal(Colors.Purple, layout.label.TextColor);
Assert.Equal(Color.FromArgb("#FF96F3"), layout.label.BackgroundColor);
}
}
}
39 changes: 22 additions & 17 deletions src/Controls/tests/Xaml.UnitTests/AutomationProperties.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,49 +1,54 @@
using System;
using Microsoft.Maui.Controls.Core.UnitTests;
using NUnit.Framework;
using Xunit;

namespace Microsoft.Maui.Controls.Xaml.UnitTests;
partial class AutomationProperties : ContentPage
{
public AutomationProperties() => InitializeComponent();

[TestFixture]
class Tests
[Collection("Xaml Inflation")]
public class Tests : IDisposable
{
[SetUp] public void Setup() => Application.Current = new MockApplication();
[TearDown] public void TearDown() => Application.Current = null;
public Tests() => Application.Current = new MockApplication();
public void Dispose() => Application.Current = null;

[Test]
public void AutomationPropertiesName([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void AutomationPropertiesName(XamlInflator inflator)
{
var layout = new AutomationProperties(inflator);

Assert.AreEqual("Name", (string)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.NameProperty));
Assert.Equal("Name", (string)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.NameProperty));
}

[Test]
public void AutomationPropertiesHelpText([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void AutomationPropertiesHelpText(XamlInflator inflator)
{
var layout = new AutomationProperties(inflator);

Assert.AreEqual("Sets your name", (string)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.HelpTextProperty));
Assert.Equal("Sets your name", (string)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.HelpTextProperty));
}

[Test]
public void AutomationPropertiesIsInAccessibleTree([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void AutomationPropertiesIsInAccessibleTree(XamlInflator inflator)
{
var layout = new AutomationProperties(inflator);
Application.Current.LoadPage(layout);

Assert.AreEqual(true, (bool?)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.IsInAccessibleTreeProperty));
Assert.Equal(true, (bool?)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.IsInAccessibleTreeProperty));
}

[Test]
public void AutomationPropertiesLabeledBy([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void AutomationPropertiesLabeledBy(XamlInflator inflator)
{
var layout = new AutomationProperties(inflator);
Application.Current.LoadPage(layout);

Assert.AreEqual(layout.label, (Element)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.LabeledByProperty));
Assert.Equal(layout.label, (Element)layout.entry.GetValue(Microsoft.Maui.Controls.AutomationProperties.LabeledByProperty));
}
}
}
25 changes: 22 additions & 3 deletions src/Controls/tests/Xaml.UnitTests/BaseTestFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,17 @@

namespace Microsoft.Maui.Controls.Xaml.UnitTests
{
public class BaseTestFixture
public class BaseTestFixture : IDisposable
{
CultureInfo _defaultCulture;
CultureInfo _defaultUICulture;

public virtual void Setup()
public BaseTestFixture()
{
Setup();
}

protected internal virtual void Setup()
{
Microsoft.Maui.Controls.Hosting.CompatibilityCheck.UseCompatibility();
_defaultCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
Expand All @@ -28,9 +33,23 @@ public virtual void Setup()
AppInfo.SetCurrent(null);
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (disposing)
{
TearDown();
}
}

public virtual void TearDown()
protected internal virtual void TearDown()
{
Application.Current = null;
AppInfo.SetCurrent(null);
DeviceDisplay.SetCurrent(null);
DeviceInfo.SetCurrent(null);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using Microsoft.Maui.Controls.Core.UnitTests;
using NUnit.Framework;
using Xunit;

namespace Microsoft.Maui.Controls.Xaml.UnitTests;

Expand Down Expand Up @@ -39,18 +40,19 @@ public partial class BindablePropertiesAccessModifiers : ContentPage

public BindablePropertiesAccessModifiers() => InitializeComponent();

[TestFixture]
class Tests
[Collection("Xaml Inflation")]
public class Tests : IDisposable
{
[SetUp] public void Setup() => Application.Current = new MockApplication();
[TearDown] public void TearDown() => Application.Current = null;
public Tests() => Application.Current = new MockApplication();
public void Dispose() => Application.Current = null;

[Test]
public void BindProperties([Values] XamlInflator inflator)
[Theory]
[XamlInflatorData]
internal void BindProperties(XamlInflator inflator)
{
var page = new BindablePropertiesAccessModifiers(inflator) { BindingContext = new BindablePropertiesAccessModifiersVM() };
Assert.AreEqual("Bar", page.AMC.GetValue(AccessModifiersControl.InternalBarProperty));
Assert.AreEqual("Foo", page.AMC.GetValue(AccessModifiersControl.PublicFooProperty));
Assert.Equal("Bar", page.AMC.GetValue(AccessModifiersControl.InternalBarProperty));
Assert.Equal("Foo", page.AMC.GetValue(AccessModifiersControl.PublicFooProperty));
}
}
}
Loading
Loading