mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
seq: implement integer sequences
If we notice that we can represent all arguments as BigInts, take a different code path. Just like GNU seq this means we can print an infinite amount of numbers in this case.
This commit is contained in:
parent
8d714b0ab0
commit
6ccc305513
4 changed files with 173 additions and 29 deletions
|
@ -1,5 +1,7 @@
|
|||
use crate::common::util::*;
|
||||
|
||||
// ---- Tests for the big integer based path ----
|
||||
|
||||
#[test]
|
||||
fn test_count_up() {
|
||||
new_ucmd!()
|
||||
|
@ -45,3 +47,62 @@ fn test_seq_wrong_arg() {
|
|||
fn test_zero_step() {
|
||||
new_ucmd!().args(&["10", "0", "32"]).fails();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_big_numbers() {
|
||||
new_ucmd!()
|
||||
.args(&[
|
||||
"1000000000000000000000000000",
|
||||
"1000000000000000000000000001",
|
||||
])
|
||||
.succeeds()
|
||||
.stdout_only("1000000000000000000000000000\n1000000000000000000000000001\n");
|
||||
}
|
||||
|
||||
// ---- Tests for the floating point based path ----
|
||||
|
||||
#[test]
|
||||
fn test_count_up_floats() {
|
||||
new_ucmd!()
|
||||
.args(&["10.0"])
|
||||
.run()
|
||||
.stdout_is("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_count_down_floats() {
|
||||
new_ucmd!()
|
||||
.args(&["--", "5", "-1.0", "1"])
|
||||
.run()
|
||||
.stdout_is("5.0\n4.0\n3.0\n2.0\n1.0\n");
|
||||
new_ucmd!()
|
||||
.args(&["5", "-1", "1.0"])
|
||||
.run()
|
||||
.stdout_is("5\n4\n3\n2\n1\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_separator_and_terminator_floats() {
|
||||
new_ucmd!()
|
||||
.args(&["-s", ",", "-t", "!", "2.0", "6"])
|
||||
.run()
|
||||
.stdout_is("2.0,3.0,4.0,5.0,6.0!");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_equalize_widths_floats() {
|
||||
new_ucmd!()
|
||||
.args(&["-w", "5", "10.0"])
|
||||
.run()
|
||||
.stdout_is("05\n06\n07\n08\n09\n10\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_seq_wrong_arg_floats() {
|
||||
new_ucmd!().args(&["-w", "5", "10.0", "33", "32"]).fails();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_zero_step_floats() {
|
||||
new_ucmd!().args(&["10.0", "0", "32"]).fails();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue