File: Evaluation\UsedUninitializedProperties_Tests.cs
Web Access
Project: ..\..\..\src\Build.UnitTests\Microsoft.Build.Engine.UnitTests.csproj (Microsoft.Build.Engine.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Build.Engine.UnitTests;
using Microsoft.Build.Framework;
using Microsoft.Build.Shared;
using Microsoft.Build.UnitTests;
 
using Xunit;
 
namespace Microsoft.Build.Evaluation;
 
public sealed class UsedUninitializedProperties_Tests
{
    [Fact]
    public void Basics()
    {
        PropertiesUseTracker props = new(TestLoggingContext.CreateTestContext(new BuildEventContext(1, 2, 3, 4)));
 
        Assert.False(props.TryGetPropertyElementLocation("Hello", out IElementLocation? elementLocation));
        Assert.Null(elementLocation);
 
        props.RemoveProperty("Hello");
 
        IElementLocation location1 = new MockElementLocation("File1");
        IElementLocation location2 = new MockElementLocation("File2");
 
        props.TryAdd("Hello", location1);
        props.TryAdd("Hello", location2);
 
        Assert.True(props.TryGetPropertyElementLocation("Hello", out elementLocation));
        Assert.Same(location1, elementLocation);
 
        Assert.True(props.TryGetPropertyElementLocation("Hello", out elementLocation));
        Assert.Same(location1, elementLocation);
 
        props.RemoveProperty("Hello");
 
        Assert.False(props.TryGetPropertyElementLocation("Hello", out elementLocation));
        Assert.Null(elementLocation);
 
        props.RemoveProperty("Hello");
    }
}