File: System\Windows\Markup\ServiceProvidersTests.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.
 
namespace System.Windows.Markup.Tests;
 
public class ServiceProvidersTests
{
    [Fact]
    public void AddService_Invoke_GetServiceReturnsExpected()
    {
        var serviceProviders = new ServiceProviders();
 
        var service1 = new object();
        serviceProviders.AddService(typeof(object), service1);
        Assert.Same(service1, serviceProviders.GetService(typeof(object)));
 
        // Add again.
        serviceProviders.AddService(typeof(object), service1);
        Assert.Same(service1, serviceProviders.GetService(typeof(object)));
 
        // Add another.
        var service2 = new object();
        serviceProviders.AddService(typeof(string), service2);
        Assert.Same(service1, serviceProviders.GetService(typeof(object)));
        Assert.Same(service2, serviceProviders.GetService(typeof(string)));
    }
 
    [Fact]
    public void AddService_NullServiceType_ThrowsArgumentNullException()
    {
        var serviceProviders = new ServiceProviders();
        Assert.Throws<ArgumentNullException>("serviceType", () => serviceProviders.AddService(null, new object()));
    }
 
    [Fact]
    public void AddService_NullService_ThrowsArgumentNullException()
    {
        var serviceProviders = new ServiceProviders();
        Assert.Throws<ArgumentNullException>("service", () => serviceProviders.AddService(typeof(object), null));
    }
 
    [Fact]
    public void AddService_ServiceTypeExists_ThrowsArgumentException()
    {
        var serviceProviders = new ServiceProviders();
        serviceProviders.AddService(typeof(object), new object());
        Assert.Throws<ArgumentException>("serviceType", () => serviceProviders.AddService(typeof(object), new object()));
    }
 
    [Fact]
    public void GetService_NoSuchServiceTypeEmpty_ReturnsNull()
    {
        var serviceProviders = new ServiceProviders();
        Assert.Null(serviceProviders.GetService(typeof(object)));
    }
 
    [Fact]
    public void GetService_NoSuchServiceTypeNotEmpty_ReturnsNull()
    {
        var serviceProviders = new ServiceProviders();
        serviceProviders.AddService(typeof(string), new object());
 
        Assert.Null(serviceProviders.GetService(typeof(object)));
    }
 
    [Fact]
    public void GetService_NullServiceTypeEmpty_ThrowsArgumentNullException()
    {
        var serviceProviders = new ServiceProviders();
        // TODO: should have correct paramName
        Assert.Throws<ArgumentNullException>("key", () => serviceProviders.GetService(null));
    }
 
    [Fact]
    public void GetService_NullServiceTypeNotEmpty_ThrowsArgumentNullException()
    {
        var serviceProviders = new ServiceProviders();
        serviceProviders.AddService(typeof(string), new object());
 
        // TODO: should have correct paramName
        Assert.Throws<ArgumentNullException>("key", () => serviceProviders.GetService(null));
    }
}