File: GivenACheckForDuplicateItems.cs
Web Access
Project: ..\..\..\src\Tasks\Microsoft.NET.Build.Tasks.UnitTests\Microsoft.NET.Build.Tasks.UnitTests.csproj (Microsoft.NET.Build.Tasks.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using FluentAssertions;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Packaging.Core;
using NuGet.Versioning;
using Xunit;
 
namespace Microsoft.NET.Build.Tasks.UnitTests
{
    public class GivenACheckForDuplicateItems
    {
        [Fact]
        public void CheckForNoDuplicateItems()
        {
            var compile = new[]
            {
                new TaskItem("foo.cs"),
                new TaskItem("bar.cs"),
            };
 
            // execute task
            var task = new CheckForDuplicateItems()
            {
                Items = compile,
                ItemName = "Compile",
                PropertyNameToDisableDefaultItems = "PropertyNameToDisableDefaultItems",
                MoreInformationLink = "MoreInformationLink",
                DefaultItemsEnabled = true,
                DefaultItemsOfThisTypeEnabled = true
            };
            task.Execute().Should().BeTrue();
 
            task.DeduplicatedItems.Length.Should().Be(0);
        }
 
        [Fact]
        public void CheckForDuplicateItems()
        {
            var compile = new[]
            {
                new TaskItem("foo.cs"),
                new TaskItem("FOO.cs"),
            };
            var engine = new MockBuildEngine();
 
            // execute task
            var task = new CheckForDuplicateItems()
            {
                BuildEngine = engine,
                Items = compile,
                ItemName = "Compile",
                PropertyNameToDisableDefaultItems = "PropertyNameToDisableDefaultItems",
                MoreInformationLink = "MoreInformationLink",
                DefaultItemsEnabled = true,
                DefaultItemsOfThisTypeEnabled = true
            };
            task.Execute().Should().BeFalse();
 
            engine.Errors.Count.Should().Be(1);
            engine.Errors[0].Code.Should().Be("NETSDK1022");
            engine.Errors[0].Message.Should().EndWith("The duplicate items were: 'foo.cs'");
 
            task.DeduplicatedItems.Length.Should().Be(1);
        }
    }
}