elm-explorations / elm-explorations/test
Fuzzing 0 ^ -1 is sometimes +Infinity and sometimes -Infinity
- Dominant language
- Elm
- Stars
- 244
- Forks
- 40
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 2
Description
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:
```elm
infinityWeirdnessTest : Test
infinityWeirdnessTest =
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?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.