mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-29 03:57:44 +00:00
Merge pull request #5416 from Luv-Ray/fix-expr-issue5411
`expr`: return 0 for `"" \| ""`
This commit is contained in:
commit
895e13683c
2 changed files with 26 additions and 10 deletions
|
@ -464,12 +464,15 @@ fn infix_operator_or(values: &[String]) -> String {
|
||||||
assert!(values.len() == 2);
|
assert!(values.len() == 2);
|
||||||
if value_as_bool(&values[0]) {
|
if value_as_bool(&values[0]) {
|
||||||
values[0].clone()
|
values[0].clone()
|
||||||
} else {
|
} else if value_as_bool(&values[1]) {
|
||||||
values[1].clone()
|
values[1].clone()
|
||||||
|
} else {
|
||||||
|
0.to_string()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn infix_operator_and(values: &[String]) -> String {
|
fn infix_operator_and(values: &[String]) -> String {
|
||||||
|
assert!(values.len() == 2);
|
||||||
if value_as_bool(&values[0]) && value_as_bool(&values[1]) {
|
if value_as_bool(&values[0]) && value_as_bool(&values[1]) {
|
||||||
values[0].clone()
|
values[0].clone()
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -143,6 +143,14 @@ fn test_or() {
|
||||||
.args(&["12", "|", "9a", "+", "1"])
|
.args(&["12", "|", "9a", "+", "1"])
|
||||||
.succeeds()
|
.succeeds()
|
||||||
.stdout_only("12\n");
|
.stdout_only("12\n");
|
||||||
|
|
||||||
|
new_ucmd!().args(&["", "|", ""]).run().stdout_only("0\n");
|
||||||
|
|
||||||
|
new_ucmd!().args(&["", "|", "0"]).run().stdout_only("0\n");
|
||||||
|
|
||||||
|
new_ucmd!().args(&["", "|", "00"]).run().stdout_only("0\n");
|
||||||
|
|
||||||
|
new_ucmd!().args(&["", "|", "-0"]).run().stdout_only("0\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -152,14 +160,20 @@ fn test_and() {
|
||||||
.succeeds()
|
.succeeds()
|
||||||
.stdout_only("foo\n");
|
.stdout_only("foo\n");
|
||||||
|
|
||||||
new_ucmd!().args(&["", "&", "1"]).run().stdout_is("0\n");
|
new_ucmd!()
|
||||||
|
.args(&["14", "&", "1"])
|
||||||
new_ucmd!().args(&["14", "&", "1"]).run().stdout_is("14\n");
|
.succeeds()
|
||||||
|
.stdout_only("14\n");
|
||||||
|
|
||||||
new_ucmd!()
|
new_ucmd!()
|
||||||
.args(&["-14", "&", "1"])
|
.args(&["-14", "&", "1"])
|
||||||
.run()
|
.succeeds()
|
||||||
.stdout_is("-14\n");
|
.stdout_only("-14\n");
|
||||||
|
|
||||||
|
new_ucmd!()
|
||||||
|
.args(&["-1", "&", "10", "/", "5"])
|
||||||
|
.succeeds()
|
||||||
|
.stdout_only("-1\n");
|
||||||
|
|
||||||
new_ucmd!()
|
new_ucmd!()
|
||||||
.args(&["0", "&", "a", "/", "5"])
|
.args(&["0", "&", "a", "/", "5"])
|
||||||
|
@ -171,10 +185,9 @@ fn test_and() {
|
||||||
.run()
|
.run()
|
||||||
.stdout_only("0\n");
|
.stdout_only("0\n");
|
||||||
|
|
||||||
new_ucmd!()
|
new_ucmd!().args(&["", "&", "1"]).run().stdout_only("0\n");
|
||||||
.args(&["-1", "&", "10", "/", "5"])
|
|
||||||
.succeeds()
|
new_ucmd!().args(&["", "&", ""]).run().stdout_only("0\n");
|
||||||
.stdout_only("-1\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue