Skip to content

Analyzer incorrectly recommends ContainsSingle for HaveCount(1).And.Contains() #96

Closed
@AquilaSands

Description

@AquilaSands

Description

Analyzer incorrectly recommends ContainsSingle() for HaveCount(1).And.Contains(predicate) but looking at the tests for ContaiansSingle they are not equivalent as shown by this test https://github.com/fluentassertions/fluentassertions/blob/501cf353ecc872154fae54960ee1b692851bfb8a/Tests/FluentAssertions.Specs/Collections/GenericCollectionAssertionsSpecs.cs#L302-L314 which passes when a collection has multiple elements with only one matching the predicate.

Complete minimal example reproducing the issue

Complete means the code snippet can be copied into a unit test method in a fresh C# project and run.
Minimal means it is stripped from code not related to reproducing the issue.

// Arrange
IEnumerable<int> collection = new[] { 1, 2, 3 };

// Assert
collection.Should().HaveCount(1).And.Contain(i => i == 1 ); // This would fail
collection.Should().ContainSingle(i => i == 1 ); // This would pass

Expected behavior:

No analyzer recommendation

or suggest:

collection.Should().ContainSingle().Which.Should().Be(1);

Actual behavior:

Analyzer recommends using ContainsSingle

Versions

Fluent Assertions 0.11.4
.Net 5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions