-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fuzzing 0 ^ -1 is sometimes +Infinity and sometimes -Infinity #215
Comments
Is maybe one of them getting -0 instead of (positive) 0, but they both
print as "0" so it's hidden in the error message display?
…On Wed, Apr 26, 2023, 2:08 PM nunntom ***@***.***> wrote:
I've recently upgraded to elm-test 2 for one of my packages which passed
all tests in the old version. The new fuzzers have thrown some interesting
things into the mix.
A very contrived reproduction of a real problem I ran into:
SSCCE:
infinityWeirdnessTest : TestinfinityWeirdnessTest =
Test.describe
"Fuzzing 0 ^ -1 is sometimes +Infinity and sometimes -Infinity"
[ Test.fuzz (Fuzz.pair (Fuzz.floatRange -1 1) (Fuzz.floatRange -1 1))
"This test will fail Infinity /= -Infinity"
<|
\( f1, f2 ) ->
if f1 == 0 && f2 == -1 then
Expect.within (Expect.Absolute 0) (f1 ^ f2) (0 ^ -1)
else
Expect.within (Expect.Absolute 0) (f1 ^ f2) (f1 ^ f2)
, Test.fuzz (Fuzz.pair (Fuzz.floatRange -1 1) (Fuzz.floatRange -1 1))
"This test will fail -Infinity /= Infinity"
<|
\( f1, f2 ) ->
if f1 == 0 && f2 == -1 then
Expect.within (Expect.Absolute 0) (f1 ^ f2) (-1 / 0)
else
Expect.within (Expect.Absolute 0) (f1 ^ f2) (f1 ^ f2)
]
npx elm-test --fuzz 100 --seed 150514400077418
Output:
Compiling > Starting tests
elm-test 0.19.1-revision9
-------------------------
Running 2 tests. To reproduce these results, run: elm-test --fuzz 100 --seed 150514400077418
↓ Power
↓ Fuzzing 0 ^ -1 is sometimes +Infinity and sometimes -Infinity
✗ This test will fail Infinity /= -Infinity
Given (0,-1)
Infinity
╷
│ Expect.within Absolute 0
╵
-Infinity
↓ Power
↓ Fuzzing 0 ^ -1 is sometimes +Infinity and sometimes -Infinity
✗ This test will fail -Infinity /= Infinity
Given (0,-1)
-Infinity
╷
│ Expect.within Absolute 0
╵
Infinity
TEST RUN FAILED
Duration: 166 ms
Passed: 0
Failed: 2
Notice both failures are given (0, -1), but in the second one the
-Infinity has switched places.
Any ideas what's going on?
—
Reply to this email directly, view it on GitHub
<#215>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAAJRW6OWYUFDBIRO7BH4TXDGFEXANCNFSM6AAAAAAXM7GGC4>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Interesting. Yes that does appear to be what's happening. Seems that Maybe it would be good to check for -0 and specifically print "-0" for the error? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I've recently upgraded to elm-test 2 for one of my packages which passed all tests in the old version. The new fuzzers have thrown some interesting things into the mix.
A very contrived reproduction of a real problem I ran into:
SSCCE:
npx elm-test --fuzz 100 --seed 150514400077418
Output:
Notice both failures are given (0, -1), but in the second one the -Infinity has switched places.
Any ideas what's going on?
The text was updated successfully, but these errors were encountered: