]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: cut: expand GB18030 tests
authorPádraig Brady <P@draigBrady.com>
Mon, 6 Apr 2026 12:44:30 +0000 (13:44 +0100)
committerPádraig Brady <P@draigBrady.com>
Mon, 6 Apr 2026 14:52:58 +0000 (15:52 +0100)
* tests/cut/mb-non-utf8.sh: Add more test cases.

tests/cut/mb-non-utf8.sh

index 00d9d0467cb6245a73d1306ab3fbd2c19493ab33..896018a12fdd1677f22714cacc0dce172778176e 100755 (executable)
@@ -24,10 +24,57 @@ export LC_ALL=zh_CN.gb18030
 test "$(locale charmap 2>/dev/null | sed 's/gb/GB/')" = GB18030 ||
   skip_ 'GB18030 charset support not detected'
 
-for delim in ',' ':' "$(env printf '\xa2\xe3')" "$(env printf '\xff')"; do
+delim_gb18030=$(env printf '\xa2\xe3')
+delim_ff=$(env printf '\xff')
+
+# Exercise ASCII, multibyte, and invalid single-byte delimiters.
+# Note 0xFF is invalid in GB18030, but we support all single byte delimiters.
+for delim in ',' ':' "$delim_gb18030" "$delim_ff"; do
   num_out=$(printf "1${delim}2${delim}3\n" \
             | cut -d "$delim" -f2,3 --output-delimiter=_)
   test "$num_out" = "2_3" || fail=1
 done
 
+# A valid 2-byte GB18030 character.
+printf '%sx\n' "$delim_gb18030" | cut -c1 > out || fail=1
+printf '%s\n' "$delim_gb18030" > exp || framework_failure_
+compare exp out || fail=1
+
+printf '%sx\n' "$delim_gb18030" | cut -c2 > out || fail=1
+printf 'x\n' > exp || framework_failure_
+compare exp out || fail=1
+
+printf '%sx\n' "$delim_gb18030" | cut -b1 -n > out || fail=1
+printf '\n' > exp || framework_failure_
+compare exp out || fail=1
+
+printf '%sx\n' "$delim_gb18030" | cut -b2 -n > out || fail=1
+printf '%s\n' "$delim_gb18030" > exp || framework_failure_
+compare exp out || fail=1
+
+printf '1%s2%s3\n' "$delim_gb18030" "$delim_gb18030" \
+  | cut -d "$delim_gb18030" -f1,3 > out || fail=1
+printf '1%s3\n' "$delim_gb18030" > exp || framework_failure_
+compare exp out || fail=1
+
+printf '1%s2%s3\n' "$delim_gb18030" "$delim_gb18030" \
+  | cut --complement -d "$delim_gb18030" -f1 > out || fail=1
+printf '2%s3\n' "$delim_gb18030" > exp || framework_failure_
+compare exp out || fail=1
+
+printf '1%s2' "$delim_gb18030" \
+  | cut -d "$delim_gb18030" -f2 > out || fail=1
+printf '2\n' > exp || framework_failure_
+compare exp out || fail=1
+
+printf '1%s2\0' "$delim_gb18030" \
+  | cut -z -d "$delim_gb18030" -f2 > out || fail=1
+printf '2\0' > exp || framework_failure_
+compare exp out || fail=1
+
+printf '%s%s3\n' "$delim_gb18030" "$delim_gb18030" \
+  | cut -d "$delim_gb18030" -f1-3 --output-delimiter=':' > out || fail=1
+printf '::3\n' > exp || framework_failure_
+compare exp out || fail=1
+
 Exit $fail