mirror of
https://github.com/aphrody-labs/NuGet.Client.git
synced 2026-10-14 21:39:05 +00:00
1089 lines
34 KiB
C#
1089 lines
34 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using FluentAssertions;
|
|
using NuGet.Packaging.Core;
|
|
using NuGet.Versioning;
|
|
using Xunit;
|
|
|
|
namespace NuGet.ProjectModel.Test
|
|
{
|
|
public class LockFileTargetLibraryTests
|
|
{
|
|
[Theory]
|
|
[InlineData("project", "project", true)]
|
|
[InlineData("project", "PROJECT", false)]
|
|
[InlineData("project", "package", false)]
|
|
public void Equals_WithName(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Name = left
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Name = right
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("2.1.0", "2.1.0", true)]
|
|
[InlineData("2.1.0", "2.1.0-preview.2", false)]
|
|
[InlineData("1.1.1", "2.2.2", false)]
|
|
public void Equals_WithVersion(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Version = NuGetVersion.Parse(left)
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Version = NuGetVersion.Parse(right)
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("net461", "net461", true)]
|
|
[InlineData("net461", "NET461", false)]
|
|
[InlineData("net46", "netcoreapp10", false)]
|
|
public void Equals_WithFramework(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Framework = left
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Framework = right
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("project", "project", true)]
|
|
[InlineData("project", "PROJECT", false)]
|
|
[InlineData("project", "package", false)]
|
|
public void Equals_WithType(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Type = left
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Type = right
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithPackageDependency(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Dependencies = left.Split(';').Select(e => new PackageDependency(e, VersionRange.Parse("1.0.0"))).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Dependencies = right.Split(';').Select(e => new PackageDependency(e, VersionRange.Parse("1.0.0"))).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithFrameworkAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkAssemblies = left.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkAssemblies = right.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithFrameworkReferences(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkReferences = left.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkReferences = right.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithRuntimeAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithResourceAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
ResourceAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
ResourceAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithCompileTimeAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
CompileTimeAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
CompileTimeAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithAnalyzerAssets_ReturnsExpectedResult(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
AnalyzerAssets = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
AnalyzerAssets = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithNativeLibraries(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
NativeLibraries = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
NativeLibraries = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithBuild(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Build = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Build = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithBuildMultiTargeting(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
BuildMultiTargeting = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
BuildMultiTargeting = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithToolsAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
ToolsAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
ToolsAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithEmbedAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
EmbedAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
EmbedAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithContentFiles(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
ContentFiles = left.Split(';').Select(e => new LockFileContentFile(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
ContentFiles = right.Split(';').Select(e => new LockFileContentFile(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void Equals_WithRuntimeTargets(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeTargets = left.Split(';').Select(e => new LockFileRuntimeTarget(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeTargets = right.Split(';').Select(e => new LockFileRuntimeTarget(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void Equals_WithPackageType_IsIgnored()
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
PackageType = new List<PackageType>() { PackageType.Dependency }
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
PackageType = new List<PackageType>() { PackageType.DotnetCliTool }
|
|
};
|
|
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("project", "project", true)]
|
|
[InlineData("project", "PROJECT", false)]
|
|
[InlineData("project", "package", false)]
|
|
public void HashCode_WithName(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Name = left
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Name = right
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("2.1.0", "2.1.0", true)]
|
|
[InlineData("2.1.0", "2.1.0-preview.2", false)]
|
|
[InlineData("1.1.1", "2.2.2", false)]
|
|
public void HashCode_WithVersion(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Version = NuGetVersion.Parse(left)
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Version = NuGetVersion.Parse(right)
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("net461", "net461", true)]
|
|
[InlineData("net461", "NET461", false)]
|
|
[InlineData("net46", "netcoreapp10", false)]
|
|
public void HashCode_WithFramework(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Framework = left
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Framework = right
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("project", "project", true)]
|
|
[InlineData("project", "PROJECT", false)]
|
|
[InlineData("project", "package", false)]
|
|
public void HashCode_WithType(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Type = left
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Type = right
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithPackageDependency(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Dependencies = left.Split(';').Select(e => new PackageDependency(e, VersionRange.Parse("1.0.0"))).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Dependencies = right.Split(';').Select(e => new PackageDependency(e, VersionRange.Parse("1.0.0"))).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithFrameworkAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkAssemblies = left.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkAssemblies = right.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithFrameworkReferences(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkReferences = left.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
FrameworkReferences = right.Split(';').Select(e => e).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithRuntimeAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithResourceAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
ResourceAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
ResourceAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithCompileTimeAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
CompileTimeAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
CompileTimeAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithAnalyzerAssets_ReturnsExpectedResult(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
AnalyzerAssets = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
AnalyzerAssets = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithNativeLibraries(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
NativeLibraries = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
NativeLibraries = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithBuild(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
Build = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
Build = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithBuildMultiTargeting(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
BuildMultiTargeting = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
BuildMultiTargeting = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithToolsAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
ToolsAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
ToolsAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithEmbedAssemblies(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
EmbedAssemblies = left.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
EmbedAssemblies = right.Split(';').Select(e => new LockFileItem(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithContentFiles(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
ContentFiles = left.Split(';').Select(e => new LockFileContentFile(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
ContentFiles = right.Split(';').Select(e => new LockFileContentFile(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("A;b", "a;B", true)]
|
|
[InlineData("a;b;c", "c;a;B", true)]
|
|
[InlineData("a;b;c;d", "c;a;B", false)]
|
|
public void HashCode_WithRuntimeTargets(string left, string right, bool expected)
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeTargets = left.Split(';').Select(e => new LockFileRuntimeTarget(e)).ToList()
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeTargets = right.Split(';').Select(e => new LockFileRuntimeTarget(e)).ToList()
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
else
|
|
{
|
|
leftSide.GetHashCode().Should().NotBe(rightSide.GetHashCode());
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void HashCode_WithPackageType_IsIgnored()
|
|
{
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
PackageType = new List<PackageType>() { PackageType.Dependency }
|
|
};
|
|
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
PackageType = new List<PackageType>() { PackageType.DotnetCliTool }
|
|
};
|
|
|
|
leftSide.GetHashCode().Should().Be(rightSide.GetHashCode());
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("a", "a", true)]
|
|
[InlineData("a .pdb;.xml", "a .pdb;.xml", true)]
|
|
[InlineData("a .pdb;.xml", "a;", false)]
|
|
[InlineData("a .pdb", "b .pdb", false)]
|
|
[InlineData("a .pdb;.xml", "a .xml;.pdb", false)]
|
|
public void Equals_WithRuntimeAssembliesAndRelatedFiles(string left, string right, bool expected)
|
|
{
|
|
string[] leftParts = left.Trim().Split(' ');
|
|
var leftRuntimeAssembly = new LockFileItem(leftParts[0]);
|
|
if (leftParts.Length > 1)
|
|
{
|
|
leftRuntimeAssembly.Properties.Add("related", leftParts[1]);
|
|
}
|
|
var leftSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeAssemblies = new List<LockFileItem>() { leftRuntimeAssembly }
|
|
};
|
|
|
|
string[] rightParts = right.Split(' ');
|
|
var rightRuntimeAssembly = new LockFileItem(rightParts[0]);
|
|
if (rightParts.Length > 1)
|
|
{
|
|
rightRuntimeAssembly.Properties.Add("related", rightParts[1]);
|
|
}
|
|
var rightSide = new LockFileTargetLibrary()
|
|
{
|
|
RuntimeAssemblies = new List<LockFileItem>() { rightRuntimeAssembly }
|
|
};
|
|
|
|
// Act & Assert
|
|
if (expected)
|
|
{
|
|
leftSide.Should().Be(rightSide);
|
|
}
|
|
else
|
|
{
|
|
leftSide.Should().NotBe(rightSide);
|
|
}
|
|
}
|
|
}
|
|
}
|