add testcase

This commit is contained in:
WindSoilder 2024-07-17 09:31:52 +08:00
parent 279297425d
commit 64c579517b

View File

@ -3,7 +3,7 @@ use nu_test_support::{nu, pipeline};
#[test] #[test]
fn generate_no_next_break() { fn generate_no_next_break() {
let actual = nu!( let actual = nu!(
"generate 1 {|x| if $x == 3 { {out: $x}} else { {out: $x, next: ($x + 1)} }} | to nuon" "generate {|x| if $x == 3 { {out: $x}} else { {out: $x, next: ($x + 1)} }} 1 | to nuon"
); );
assert_eq!(actual.out, "[1, 2, 3]"); assert_eq!(actual.out, "[1, 2, 3]");
@ -11,7 +11,7 @@ fn generate_no_next_break() {
#[test] #[test]
fn generate_null_break() { fn generate_null_break() {
let actual = nu!("generate 1 {|x| if $x <= 3 { {out: $x, next: ($x + 1)} }} | to nuon"); let actual = nu!("generate {|x| if $x <= 3 { {out: $x, next: ($x + 1)} }} 1 | to nuon");
assert_eq!(actual.out, "[1, 2, 3]"); assert_eq!(actual.out, "[1, 2, 3]");
} }
@ -20,13 +20,13 @@ fn generate_null_break() {
fn generate_allows_empty_output() { fn generate_allows_empty_output() {
let actual = nu!(pipeline( let actual = nu!(pipeline(
r#" r#"
generate 0 {|x| generate {|x|
if $x == 1 { if $x == 1 {
{next: ($x + 1)} {next: ($x + 1)}
} else if $x < 3 { } else if $x < 3 {
{out: $x, next: ($x + 1)} {out: $x, next: ($x + 1)}
} }
} | to nuon } 0 | to nuon
"# "#
)); ));
@ -37,11 +37,11 @@ fn generate_allows_empty_output() {
fn generate_allows_no_output() { fn generate_allows_no_output() {
let actual = nu!(pipeline( let actual = nu!(pipeline(
r#" r#"
generate 0 {|x| generate {|x|
if $x < 3 { if $x < 3 {
{next: ($x + 1)} {next: ($x + 1)}
} }
} | to nuon } 0 | to nuon
"# "#
)); ));
@ -52,7 +52,7 @@ fn generate_allows_no_output() {
fn generate_allows_null_state() { fn generate_allows_null_state() {
let actual = nu!(pipeline( let actual = nu!(pipeline(
r#" r#"
generate 0 {|x| generate {|x|
if $x == null { if $x == null {
{out: "done"} {out: "done"}
} else if $x < 1 { } else if $x < 1 {
@ -60,7 +60,7 @@ fn generate_allows_null_state() {
} else { } else {
{out: "stopping", next: null} {out: "stopping", next: null}
} }
} | to nuon } 0 | to nuon
"# "#
)); ));
@ -71,7 +71,42 @@ fn generate_allows_null_state() {
fn generate_allows_null_output() { fn generate_allows_null_output() {
let actual = nu!(pipeline( let actual = nu!(pipeline(
r#" r#"
generate 0 {|x| generate {|x|
if $x == 3 {
{out: "done"}
} else {
{out: null, next: ($x + 1)}
}
} 0 | to nuon
"#
));
assert_eq!(actual.out, "[null, null, null, done]");
}
#[test]
fn generate_disallows_extra_keys() {
let actual = nu!("generate {|x| {foo: bar, out: $x}} 0 ");
assert!(actual.err.contains("Invalid block return"));
}
#[test]
fn generate_disallows_list() {
let actual = nu!("generate {|x| [$x, ($x + 1)]} 0 ");
assert!(actual.err.contains("Invalid block return"));
}
#[test]
fn generate_disallows_primitive() {
let actual = nu!("generate {|x| 1} 0");
assert!(actual.err.contains("Invalid block return"));
}
#[test]
fn generate_allow_default_parameter() {
let actual = nu!(pipeline(
r#"
generate {|x = 0|
if $x == 3 { if $x == 3 {
{out: "done"} {out: "done"}
} else { } else {
@ -82,22 +117,18 @@ fn generate_allows_null_output() {
)); ));
assert_eq!(actual.out, "[null, null, null, done]"); assert_eq!(actual.out, "[null, null, null, done]");
}
#[test] // if initial is given, use initial value
fn generate_disallows_extra_keys() { let actual = nu!(pipeline(
let actual = nu!("generate 0 {|x| {foo: bar, out: $x}}"); r#"
assert!(actual.err.contains("Invalid block return")); generate {|x = 0|
} if $x == 3 {
{out: "done"}
#[test] } else {
fn generate_disallows_list() { {out: null, next: ($x + 1)}
let actual = nu!("generate 0 {|x| [$x, ($x + 1)]}"); }
assert!(actual.err.contains("Invalid block return")); } 1 | to nuon
} "#
));
#[test] assert_eq!(actual.out, "[null, null, done]");
fn generate_disallows_primitive() {
let actual = nu!("generate 0 {|x| 1}");
assert!(actual.err.contains("Invalid block return"));
} }