1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 12:07:46 +00:00

Merge pull request #3133 from sylvestre/issue-3132

expr: Use chars().count() as we can have some multibytes chars
This commit is contained in:
Terts Diepraam 2022-02-13 17:48:37 +01:00 committed by GitHub
commit 351a56d3fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 2 deletions

View file

@ -10,7 +10,7 @@
//! * `<https://en.wikipedia.org/wiki/Shunting-yard_algorithm>`
//!
// spell-checker:ignore (ToDO) binop binops ints paren prec
// spell-checker:ignore (ToDO) binop binops ints paren prec multibytes
use num_bigint::BigInt;
use num_traits::{One, Zero};
@ -465,7 +465,9 @@ fn operator_match(values: &[String]) -> Result<String, String> {
fn prefix_operator_length(values: &[String]) -> String {
assert!(values.len() == 1);
values[0].len().to_string()
// Use chars().count() as we can have some multibytes chars
// See https://github.com/uutils/coreutils/issues/3132
values[0].chars().count().to_string()
}
fn prefix_operator_index(values: &[String]) -> String {

View file

@ -1,3 +1,5 @@
// spell-checker:ignore αbcdef
use crate::common::util::*;
#[test]
@ -95,6 +97,27 @@ fn test_and() {
new_ucmd!().args(&["", "&", "1"]).run().stdout_is("0\n");
}
#[test]
fn test_length_fail() {
new_ucmd!().args(&["length", "αbcdef", "1"]).fails();
}
#[test]
fn test_length() {
new_ucmd!()
.args(&["length", "abcdef"])
.succeeds()
.stdout_only("6\n");
}
#[test]
fn test_length_mb() {
new_ucmd!()
.args(&["length", "αbcdef"])
.succeeds()
.stdout_only("6\n");
}
#[test]
fn test_substr() {
new_ucmd!()