nushell/tests/repl
Joaquín Triñanes f738932bbd
Fix range contains (#14011)
# Description

This PR changes the range contains logic to take the step into account. 

```nushell
# before
2 in 1..3.. # true

# now
2 in 1..3.. # false
```

---

I encountered another issue while adding tests. Due to floating point
precision, `2.1 in 1..1.1..3` will return `false`. The floating point
error is even bigger than `f64::EPSILON` (`0.09999999999999876` vs
`2.220446049250313e-16`). This issue disappears with bigger numbers.

I tried a different algorithm (checking if the estimated number of steps
is close enough to any integer) but the results are still pretty bad:

```rust
let n_steps = (value - self.start) / self.step; // 14.999999999999988
(n_steps - n_steps.round()).abs() < f64::EPSILON // returns false
```

Maybe it can be shipped like this, the REPL already has floating point
errors (`1.1 - 1` returns `0.10000000000000009`). Or maybe there's a way
to fix this that I didn't think of. I'm open to ideas! But in any case
performing this kind of checks on a range of floats seems more niche
than doing it on a range of ints.

# User-Facing Changes

Code that depended on this behavior to check if a number is between
`start` and `end` will potentially return a different value.

# Tests + Formatting

# After Submitting
2024-10-22 10:34:41 -05:00
..
mod.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_bits.rs Fix bits ror/bits rol implementation (#13673) 2024-08-22 21:22:10 +02:00
test_cell_path.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_commandline.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_conditionals.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_config_path.rs Reduce duplication in history path construction (#13475) 2024-10-11 07:51:50 -05:00
test_config.rs Refactor config updates (#13802) 2024-10-11 18:40:32 +02:00
test_converters.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_custom_commands.rs run ensure_flag_arg_type for short flag values (#14074) 2024-10-20 23:12:57 +02:00
test_engine.rs Fix $in in range expressions (#13447) 2024-07-25 18:28:44 +08:00
test_env.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_help.rs Remove superfluous separator when there's no flag description/comment (#14007) 2024-10-05 15:19:26 +02:00
test_hiding.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_ide.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_iteration.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_known_external.rs Make parsing for unknown args in known externals like normal external calls (#13414) 2024-07-21 01:32:36 -07:00
test_math.rs Fix bugs and UB in bit shifting ops (#13663) 2024-08-22 11:54:27 +02:00
test_modules.rs fix error when exporting consts with type signatures in modules (#14118) 2024-10-22 11:54:31 +02:00
test_parser.rs fix unknown_command when parsing certain strings with equal signs (#14053) 2024-10-11 07:53:39 -05:00
test_ranges.rs Fix range contains (#14011) 2024-10-22 10:34:41 -05:00
test_regex.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_signatures.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_spread.rs Rewrite run_external.rs (#12921) 2024-05-23 02:05:27 +00:00
test_stdlib.rs Improves startup time when using std-lib (#13842) 2024-10-03 06:28:22 -05:00
test_strings.rs Restrict strings beginning with quote should also ending with quote (#13131) 2024-06-28 09:47:12 +08:00
test_table_operations.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_type_check.rs Overhaul $in expressions (#13357) 2024-07-17 16:02:42 -05:00
tests.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00