blob: 2458c019c46eb8ecd0ff6d4edf02eda7f9013aa1 [file] [log] [blame]
Denis Vlasenko30297a52007-11-26 07:23:27 +00001#!/bin/sh
2
3# Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko0ef64bd2010-08-16 20:14:46 +02004# Licensed under GPLv2, see file LICENSE in this source tree.
Denis Vlasenko30297a52007-11-26 07:23:27 +00005
Mike Frysingercaa79402009-11-04 18:41:22 -05006. ./testing.sh
Denis Vlasenko30297a52007-11-26 07:23:27 +00007
8# testing "test name" "options" "expected result" "file input" "stdin"
9# file input will be file called "input"
10# test can create a file "actual" instead of writing to stdout
11
12testing "cut '-' (stdin) and multi file handling" \
13 "cut -d' ' -f2 - input" \
14 "over\n""quick\n" \
15 "the quick brown fox\n" \
16 "jumps over the lazy dog\n" \
17
Rob Landley0068ce22021-07-20 16:02:31 +020018abc="\
19one:two:three:four:five:six:seven
20alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
21the quick brown fox jumps over the lazy dog
22"
23
24testing "cut -b a,a,a" "cut -b 3,3,3 input" "e\np\ne\n" "$abc" ""
25
26testing "cut -b overlaps" "cut -b 1-3,2-5,7-9,9-10 input" \
27 "one:to:th\nalphabeta\nthe qick \n" "$abc" ""
28testing "-b encapsulated" "cut -b 3-8,4-6 input" "e:two:\npha:be\ne quic\n" \
29 "$abc" ""
30# --output-delimiter not implemnted (yet?)
31#testing "cut -bO overlaps" \
32# "cut --output-delimiter ' ' -b 1-3,2-5,7-9,9-10 input" \
33# "one:t o:th\nalpha beta\nthe q ick \n" "$abc" ""
34testing "cut high-low error" "cut -b 8-3 abc.txt 2>/dev/null || echo err" "err\n" \
35 "$abc" ""
36
37testing "cut -c a-b" "cut -c 4-10 input" ":two:th\nha:beta\n quick \n" "$abc" ""
38testing "cut -c a-" "cut -c 41- input" "\ntheta:iota:kappa:lambda:mu\ndog\n" "$abc" ""
39testing "cut -c -b" "cut -c -39 input" \
40 "one:two:three:four:five:six:seven\nalpha:beta:gamma:delta:epsilon:zeta:eta\nthe quick brown fox jumps over the lazy\n" \
41 "$abc" ""
42testing "cut -c a" "cut -c 40 input" "\n:\n \n" "$abc" ""
43testing "cut -c a,b-c,d" "cut -c 3,5-7,10 input" "etwoh\npa:ba\nequi \n" "$abc" ""
44
45testing "cut -f a-" "cut -d ':' -f 5- input" "five:six:seven\nepsilon:zeta:eta:theta:iota:kappa:lambda:mu\nthe quick brown fox jumps over the lazy dog\n" "$abc" ""
46
47testing "cut show whole line with no delim" "cut -d ' ' -f 3 input" \
48 "one:two:three:four:five:six:seven\nalpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu\nbrown\n" "$abc" ""
49
50testing "cut with echo, -c (a-b)" "echo 'ref_categorie=test' | cut -c 1-15 " "ref_categorie=t\n" "" ""
51testing "cut with echo, -c (a)" "echo 'ref_categorie=test' | cut -c 14" "=\n" "" ""
52
53testing "cut with -c (a,b,c)" "cut -c 4,5,20 input" "det\n" "abcdefghijklmnopqrstuvwxyz" ""
54
55testing "cut with -b (a,b,c)" "cut -b 4,5,20 input" "det\n" "abcdefghijklmnopqrstuvwxyz" ""
56
57input="\
58406378:Sales:Itorre:Jan
59031762:Marketing:Nasium:Jim
60636496:Research:Ancholie:Mel
61396082:Sales:Jucacion:Ed
62"
63testing "cut with -d -f(:) -s" "cut -d: -f3 -s input" "Itorre\nNasium\nAncholie\nJucacion\n" "$input" ""
64testing "cut with -d -f( ) -s" "cut -d' ' -f3 -s input && echo yes" "yes\n" "$input" ""
65testing "cut with -d -f(a) -s" "cut -da -f3 -s input" "n\nsium:Jim\n\ncion:Ed\n" "$input" ""
66testing "cut with -d -f(a) -s -n" "cut -da -f3 -s -n input" "n\nsium:Jim\n\ncion:Ed\n" "$input" ""
67
68# substitute for awk
Denys Vlasenkoeaa8ee42021-08-15 20:15:42 +020069optional FEATURE_CUT_REGEX
Rob Landley0068ce22021-07-20 16:02:31 +020070testing "cut -DF" "cut -DF 2,7,5" \
71 "said and your\nare\nis demand. supply\nforecast :\nyou you better,\n\nEm: Took hate\n" "" \
72"Bother, said Pooh. It's your husband, and he has a gun.
73Cheerios are donut seeds.
74Talk is cheap because supply exceeds demand.
75Weather forecast for tonight : dark.
76Apple: you can buy better, but you can't pay more.
77Subcalifragilisticexpialidocious.
78Auntie Em: Hate you, hate Kansas. Took the dog. Dorothy."
Denys Vlasenkoeaa8ee42021-08-15 20:15:42 +020079SKIP=
Rob Landley0068ce22021-07-20 16:02:31 +020080
81testing "cut empty field" "cut -d ':' -f 1-3" "a::b\n" "" "a::b\n"
82testing "cut empty field 2" "cut -d ':' -f 3-5" "b::c\n" "" "a::b::c:d\n"
83
Denis Vlasenko30297a52007-11-26 07:23:27 +000084exit $FAILCOUNT