fsprojects / FsUnit

FsUnit makes unit-testing with F# more enjoyable. It adds a special syntax to your favorite .NET testing framework.
http://fsprojects.github.io/FsUnit/
MIT License
426 stars 79 forks source link

Testing lists for equality gives unpleasant failure report #266

Open snuup opened 8 months ago

snuup commented 8 months ago

[ 77 ] |> shouldEqual [ 99 ]

reports the failure

Unhandled exception. NUnit.Framework.AssertionException: Assert.That(, ) Expected: < 99 > or < 99 > But was: < 77 >

This is caused by this tricky code in Equality.fs:

static member inline IsEqualTo(x: 'T) =
    match (box x) with
    | :? IStructuralEquatable -> Is.EqualTo(x).Or.EqualTo(x).Using<'T>(Equality.Structural)
    | :? IStructuralComparable -> Is.EqualTo(x).Or.EqualTo(x).Using<'T>(Equality.StructuralC)
    | _ -> Is.EqualTo(x)

(I did not succeed fixing this, removing the Or constraints leads to no detailed list comparison.)

CaptnCodr commented 8 months ago

Hi @snuup, I'm looking into it.

CaptnCodr commented 8 months ago

Hi @snuup, I found out that this is the most precise code regarding the failure message. The message blocks changed slightly since NUnit v4.

snuup commented 7 months ago

Thx for your efforts. From a user perspective the message is irritating. Certainly not a show stopper, more a somewhat serious cosmetic issue.

CaptnCodr commented 7 months ago

Yea, I let this open here. Perhaps, someone/I find a way to change this.