public void Fallback_FileHashComparer_CorrectlyDeDupesList()
        {
            // Arrange
            var comparer = new BuildVNextCoverageSearchFallback.FileHashComparer();

            BuildVNextCoverageSearchFallback.FileWithContentHash[] input =
            {
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] { 1 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] { 1 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] {1, 2 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] {1, 2 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] {1, 2, 3 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] {1, 2, 3 })
            };

            // Act
            var actual = input.Distinct(comparer).ToArray();

            // Assert
            actual.Should().BeEquivalentTo(
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] { 1 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] { 1, 2 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("", new byte[] { 1, 2, 3 })
                );
        }
        public void Fallback_FileHashComparer_SimpleComparisons()
        {
            var testSubject = new BuildVNextCoverageSearchFallback.FileHashComparer();

            // Identical content hash, identical file name -> same
            testSubject.Equals(
                new BuildVNextCoverageSearchFallback.FileWithContentHash("c:\\path1.txt", new byte[] { 1, 2 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("c:\\path1.txt", new byte[] { 1, 2 })
                ).Should().BeTrue();

            // Identical content hash, different file name -> same
            testSubject.Equals(
                new BuildVNextCoverageSearchFallback.FileWithContentHash("c:\\path1.txt", new byte[] { 1, 2 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("c:\\path2.txt", new byte[] { 1, 2 })
                ).Should().BeTrue();

            // Different content hash, identical file name -> different
            testSubject.Equals(
                new BuildVNextCoverageSearchFallback.FileWithContentHash("c:\\path1.txt", new byte[] { 1, 2 }),
                new BuildVNextCoverageSearchFallback.FileWithContentHash("c:\\path2.txt", new byte[] { 1, 3 })
                ).Should().BeFalse();
        }