elm-explorations / elm-explorations/test

Fuzzing 0 ^ -1 is sometimes +Infinity and sometimes -Infinity

Open
#215 2 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.