File: System\Diagnostics\PresentationTraceSourcesTests.cs
Web Access
Project: src\src\Microsoft.DotNet.Wpf\tests\UnitTests\WindowsBase.Tests\WindowsBase.Tests.csproj (WindowsBase.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Windows;
 
namespace System.Diagnostics.Tests;
 
public class PresentationTraceSourcesTests
{
    [Fact]
    public void TraceLevelProperty_Get_ReturnsExpected()
    {
        DependencyProperty property = PresentationTraceSources.TraceLevelProperty;
        Assert.NotNull(property.DefaultMetadata);
        Assert.Same(property.DefaultMetadata, property.DefaultMetadata);
        Assert.Null(property.DefaultMetadata.CoerceValueCallback);
        Assert.Equal(PresentationTraceLevel.None, property.DefaultMetadata.DefaultValue);
        Assert.Null(property.DefaultMetadata.PropertyChangedCallback);
        Assert.True(property.GlobalIndex >= 0);
        Assert.Equal("TraceLevel", property.Name);
        Assert.Equal(typeof(PresentationTraceSources), property.OwnerType);
        Assert.Equal(typeof(PresentationTraceLevel), property.PropertyType);
        Assert.False(property.ReadOnly);
        Assert.Null(property.ValidateValueCallback);
        Assert.Same(property, PresentationTraceSources.TraceLevelProperty);
    }
 
    public static IEnumerable<object?[]> Element_TestData()
    {
        yield return new object?[] { new object() };
        yield return new object?[] { null };
    }
 
    [Theory]
    [MemberData(nameof(Element_TestData))]
    public void GetTraceLevel_Get_ReturnsExpected(object element)
    {
        PresentationTraceLevel value = PresentationTraceSources.GetTraceLevel(element);
        Assert.True(Enum.IsDefined(value));
        Assert.Equal(value, PresentationTraceSources.GetTraceLevel(element));
    }
 
    [Theory]
    [MemberData(nameof(Element_TestData))]
    public void Refresh_Invoke_Success(object element)
    {
        PresentationTraceLevel value = PresentationTraceSources.GetTraceLevel(element);
        PresentationTraceSources.Refresh();
        Assert.Equal(value, PresentationTraceSources.GetTraceLevel(element));
    }
 
    public static IEnumerable<object?[]> SetTraceLevel_TestData()
    {
        yield return new object?[] { null, PresentationTraceLevel.None, PresentationTraceLevel.None };
        yield return new object?[] { new object(), PresentationTraceLevel.Low, PresentationTraceLevel.Low };
        yield return new object?[] { new object(), PresentationTraceLevel.None - 1, PresentationTraceLevel.None };
        yield return new object?[] { new object(), PresentationTraceLevel.High + 1, PresentationTraceLevel.High + 1 };
    }
 
    [Theory]
    [MemberData(nameof(SetTraceLevel_TestData))]
    public void SetTraceLevel_Invoke_GetReturnsExpected(object element, PresentationTraceLevel traceLevel, PresentationTraceLevel expected)
    {
        PresentationTraceSources.SetTraceLevel(element, traceLevel);
        Assert.Equal(expected, PresentationTraceSources.GetTraceLevel(element));
    }
 
    [Fact]
    public void AnimationSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.AnimationSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.AnimationSource);
        Assert.Equal("System.Windows.Media.Animation", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void DataBindingSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.DataBindingSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.DataBindingSource);
        Assert.Equal("System.Windows.Data", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void DependencyPropertySource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.DependencyPropertySource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.DependencyPropertySource);
        Assert.Equal("System.Windows.DependencyProperty", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void DocumentsSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.DocumentsSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.DocumentsSource);
        Assert.Equal("System.Windows.Documents", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void FreezableSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.FreezableSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.FreezableSource);
        Assert.Equal("System.Windows.Freezable", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void HwndHostSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.HwndHostSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.HwndHostSource);
        Assert.Equal("System.Windows.Interop.HwndHost", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void MarkupSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.MarkupSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.MarkupSource);
        Assert.Equal("System.Windows.Markup", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void NameScopeSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.NameScopeSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.NameScopeSource);
        Assert.Equal("System.Windows.NameScope", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void ResourceDictionarySource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.ResourceDictionarySource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.ResourceDictionarySource);
        Assert.Equal("System.Windows.ResourceDictionary", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void RoutedEventSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.RoutedEventSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.RoutedEventSource);
        Assert.Equal("System.Windows.RoutedEvent", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
 
    [Fact]
    public void ShellSource_Get_ReturnsExpected()
    {
        TraceSource source = PresentationTraceSources.ShellSource;
        Assert.NotNull(source);
        Assert.Same(source, PresentationTraceSources.ShellSource);
        Assert.Equal("System.Windows.Shell", source.Name);
        Assert.True(Enum.IsDefined(source.Switch.Level));
    }
}