Skip to content

Commit b976921

Browse files
Improve exception tests and remove unnecessary IDisposable
- Bz43694, Bz44216, Issue2450: Use XamlExceptionAssert to check exception line/position and message content - Maui17222: Replace IDisposable with try/finally for cleanup
1 parent e69b5a8 commit b976921

File tree

4 files changed

+50
-70
lines changed

4 files changed

+50
-70
lines changed

src/Controls/tests/Xaml.UnitTests/Issues/Bz43694.rt.xaml.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using System.Linq;
32
using Xunit;
43

@@ -18,15 +17,9 @@ public class Tests
1817
internal void xStaticWithOnPlatformChildInRD(XamlInflator inflator)
1918
{
2019
if (inflator == XamlInflator.XamlC)
21-
{
22-
var ex = Assert.ThrowsAny<Exception>(() => MockCompiler.Compile(typeof(Bz43694)));
23-
Assert.True(ex is Microsoft.Maui.Controls.Build.Tasks.BuildException);
24-
}
20+
XamlExceptionAssert.ThrowsBuildException(9, 6, () => MockCompiler.Compile(typeof(Bz43694)));
2521
else if (inflator == XamlInflator.Runtime)
26-
{
27-
var ex = Assert.ThrowsAny<Exception>(() => new Bz43694(inflator));
28-
Assert.True(ex is XamlParseException);
29-
}
22+
XamlExceptionAssert.ThrowsXamlParseException(9, 6, () => new Bz43694(inflator));
3023
else if (inflator == XamlInflator.SourceGen)
3124
{
3225
var result = CreateMauiCompilation()

src/Controls/tests/Xaml.UnitTests/Issues/Bz44216.rt.xaml.cs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,9 @@ public class Tests
3535
internal void DonSetValueOnPrivateBP(XamlInflator inflator)
3636
{
3737
if (inflator == XamlInflator.XamlC)
38-
{
39-
var ex = Assert.ThrowsAny<Exception>(() => MockCompiler.Compile(typeof(Bz44216)));
40-
Assert.True(ex is Microsoft.Maui.Controls.Build.Tasks.BuildException);
41-
Assert.Contains("No property,", ex.Message, StringComparison.Ordinal);
42-
}
43-
if (inflator == XamlInflator.Runtime)
44-
{
45-
var ex = Assert.ThrowsAny<Exception>(() => new Bz44216(inflator));
46-
Assert.True(ex is XamlParseException);
47-
Assert.Contains("Cannot assign property", ex.Message, StringComparison.Ordinal);
48-
}
38+
XamlExceptionAssert.ThrowsBuildException(7, 26, s => s.Contains("No property,", StringComparison.Ordinal), () => MockCompiler.Compile(typeof(Bz44216)));
39+
else if (inflator == XamlInflator.Runtime)
40+
XamlExceptionAssert.ThrowsXamlParseException(7, 26, s => s.StartsWith("Cannot assign property", StringComparison.Ordinal), () => new Bz44216(inflator));
4941
if (inflator == XamlInflator.SourceGen)
5042
{
5143
var result = CreateMauiCompilation()

src/Controls/tests/Xaml.UnitTests/Issues/Issue2450.rt.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ internal void ThrowMeaningfulExceptionOnDuplicateXName(XamlInflator inflator)
2121
if (inflator == XamlInflator.Runtime)
2222
{
2323
var layout = new Issue2450(inflator);
24-
Assert.Throws<XamlParseException>(
24+
XamlExceptionAssert.ThrowsXamlParseException(11, 13, m => m == "An element with the name \"label0\" already exists in this NameScope",
2525
() => (layout.Resources["foo"] as Microsoft.Maui.Controls.DataTemplate).CreateContent());
2626
}
2727
else if (inflator == XamlInflator.SourceGen)

src/Controls/tests/Xaml.UnitTests/Issues/Maui17222.xaml.cs

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -18,68 +18,63 @@ public partial class Maui17222 : ContentPage
1818

1919

2020
[Collection("Issue")]
21-
public class Test : IDisposable
21+
public class Test
2222
{
2323
#if DEBUG
24-
bool enableDiagnosticsInitialState;
25-
26-
public Test()
27-
{
28-
AppInfo.SetCurrent(new MockAppInfo());
29-
enableDiagnosticsInitialState = RuntimeFeature.EnableDiagnostics;
30-
RuntimeFeature.EnableMauiDiagnostics = true;
31-
}
32-
33-
public void Dispose()
34-
{
35-
RuntimeFeature.EnableMauiDiagnostics = enableDiagnosticsInitialState;
36-
AppInfo.SetCurrent(null);
37-
}
38-
3924
[Theory]
4025
[InlineData(XamlInflator.Runtime)]
4126
[InlineData(XamlInflator.SourceGen)]
4227
internal void GetsourceInfo(XamlInflator inflator)
4328
{
44-
var app = new MockApplication();
45-
app.Resources.Add(new Maui17222BaseStyle(inflator));
46-
app.Resources.Add(new Maui17222Style(inflator));
47-
Application.SetCurrentApplication(app);
29+
AppInfo.SetCurrent(new MockAppInfo());
30+
bool enableDiagnosticsInitialState = RuntimeFeature.EnableDiagnostics;
31+
RuntimeFeature.EnableMauiDiagnostics = true;
32+
33+
try
34+
{
35+
var app = new MockApplication();
36+
app.Resources.Add(new Maui17222BaseStyle(inflator));
37+
app.Resources.Add(new Maui17222Style(inflator));
38+
Application.SetCurrentApplication(app);
4839

49-
var page = new Maui17222(inflator);
50-
SourceInfo info = VisualDiagnostics.GetSourceInfo(page);
51-
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
52-
Assert.Equal(2, info.LineNumber);
53-
Assert.Equal(2, info.LinePosition);
40+
var page = new Maui17222(inflator);
41+
SourceInfo info = VisualDiagnostics.GetSourceInfo(page);
42+
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
43+
Assert.Equal(2, info.LineNumber);
44+
Assert.Equal(2, info.LinePosition);
5445

55-
var button = page.button;
56-
info = VisualDiagnostics.GetSourceInfo(button);
57-
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
58-
Assert.Equal(6, info.LineNumber);
59-
Assert.Equal(6, info.LinePosition);
46+
var button = page.button;
47+
info = VisualDiagnostics.GetSourceInfo(button);
48+
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
49+
Assert.Equal(6, info.LineNumber);
50+
Assert.Equal(6, info.LinePosition);
6051

61-
Style style = button.Style;
62-
info = VisualDiagnostics.GetSourceInfo(style);
63-
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222Style.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
64-
Assert.Equal(5, info.LineNumber);
65-
Assert.Equal(6, info.LinePosition);
52+
Style style = button.Style;
53+
info = VisualDiagnostics.GetSourceInfo(style);
54+
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222Style.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
55+
Assert.Equal(5, info.LineNumber);
56+
Assert.Equal(6, info.LinePosition);
6657

67-
var setter = style.Setters[0];
68-
Assert.Equal(setter.Property, Button.TextColorProperty);
69-
Assert.Equal(setter.Value, Colors.Red);
70-
info = VisualDiagnostics.GetSourceInfo(setter);
71-
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222Style.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
72-
Assert.Equal(6, info.LineNumber);
73-
Assert.Equal(10, info.LinePosition);
58+
var setter = style.Setters[0];
59+
Assert.Equal(setter.Property, Button.TextColorProperty);
60+
Assert.Equal(setter.Value, Colors.Red);
61+
info = VisualDiagnostics.GetSourceInfo(setter);
62+
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222Style.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
63+
Assert.Equal(6, info.LineNumber);
64+
Assert.Equal(10, info.LinePosition);
7465

75-
style = style.BasedOn;
76-
info = VisualDiagnostics.GetSourceInfo(style);
77-
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222BaseStyle.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
78-
Assert.Equal(5, info.LineNumber);
79-
Assert.Equal(6, info.LinePosition);
66+
style = style.BasedOn;
67+
info = VisualDiagnostics.GetSourceInfo(style);
68+
Assert.Equal(new Uri($"Issues{System.IO.Path.DirectorySeparatorChar}Maui17222BaseStyle.xaml;assembly=Microsoft.Maui.Controls.Xaml.UnitTests", UriKind.Relative), info.SourceUri);
69+
Assert.Equal(5, info.LineNumber);
70+
Assert.Equal(6, info.LinePosition);
71+
}
72+
finally
73+
{
74+
RuntimeFeature.EnableMauiDiagnostics = enableDiagnosticsInitialState;
75+
AppInfo.SetCurrent(null);
76+
}
8077
}
81-
#else
82-
public void Dispose() { }
8378
#endif
8479
}
8580
}

0 commit comments

Comments
 (0)