@@ -4,25 +4,119 @@ function echo_filter_test() (
44 source " $DOROTHY /sources/bash.bash"
55 eval-tester --ignore-stderr --status=22 -- echo-filter --help
66
7- eval-tester --name=' no args' -- \
7+ # # FILTER
8+
9+ eval-tester --name=' no args' --status=22 --ignore-stderr -- \
810 echo-filter
911
10- eval-tester --name=' no args' -- \
12+ eval-tester --name=' no args' --status=22 --ignore-stderr -- \
1113 echo-filter --
1214
15+ local \
16+ inputs=(a B ' c C' ' d D' ' e E' ' f F' ) \
17+ filters=(--any --each --value=' a' --value=' b' --prefix=' c' --prefix=' D' --suffix=' e' --suffix=' F' )
18+
1319 # respect case
14- eval-tester --stdout=$' A \n C \n e \n a \n b \n ' --trailing-newlines -- \
15- echo-filter -- A C e a b a b
20+ eval-tester --stdout=$' a \n c C \n f F \n ' --trailing-newlines -- \
21+ echo-filter " ${filters[@]} " -- " ${inputs[@]} "
1622
17- __print_lines A C e a b a b | eval-tester --stdout=$' A \n C \n e \n a \n b \n ' --trailing-newlines -- \
18- echo-filter --stdin
23+ __print_lines " ${inputs[@]} " | eval-tester --stdout=$' a \n c C \n f F \n ' --trailing-newlines -- \
24+ echo-filter --stdin " ${filters[@]} "
1925
2026 # ignore case
21- eval-tester --stdout=$' a\n c\n e\n b\n ' --trailing-newlines -- \
22- echo-filter --ignore-case -- A C e a b a b
27+ eval-tester --stdout=$' a\n B\n c C\n d D\n e E\n f F\n ' --trailing-newlines -- \
28+ echo-filter --ignore-case " ${filters[@]} " -- " ${inputs[@]} "
29+
30+ __print_lines " ${inputs[@]} " | eval-tester --stdout=$' a\n B\n c C\n d D\n e E\n f F\n ' --trailing-newlines -- \
31+ echo-filter --stdin --ignore-case " ${filters[@]} "
32+
33+ # lowercase
34+ eval-tester --stdout=$' a\n b\n c c\n d d\n e e\n f f\n ' --trailing-newlines -- \
35+ echo-filter --lowercase " ${filters[@]} " -- " ${inputs[@]} "
36+
37+ __print_lines " ${inputs[@]} " | eval-tester --stdout=$' a\n b\n c c\n d d\n e e\n f f\n ' --trailing-newlines -- \
38+ echo-filter --stdin --lowercase " ${filters[@]} "
39+
40+ # uppercase
41+ eval-tester --stdout=$' A\n B\n C C\n D D\n E E\n F F\n ' --trailing-newlines -- \
42+ echo-filter --uppercase " ${filters[@]} " -- " ${inputs[@]} "
43+
44+ __print_lines " ${inputs[@]} " | eval-tester --stdout=$' A\n B\n C C\n D D\n E E\n F F\n ' --trailing-newlines -- \
45+ echo-filter --stdin --uppercase " ${filters[@]} "
46+
47+ # # HAS
48+
49+ return 0 # @todo finish these tests
50+
51+ eval-tester --status=22 --ignore-stderr -- \
52+ echo-filter --has
53+
54+ eval-tester --status=22 --ignore-stderr -- \
55+ echo-filter --has --
56+
57+ eval-tester --status=22 --ignore-stderr -- \
58+ echo-filter --has -- a b c
59+
60+ eval-tester --status=22 --ignore-stderr -- \
61+ echo-filter --has a b -- a b c
62+
63+ eval-tester --status=22 --ignore-stderr -- \
64+ echo-filter --has a b --
65+
66+ eval-tester --status=22 --ignore-stderr -- \
67+ echo-filter --has a b
68+
69+ eval-tester --status=1 -- \
70+ echo-filter --has a --
71+
72+ eval-tester --status=1 -- \
73+ echo-filter --has --any a b --
74+
75+ eval-tester --status=1 -- \
76+ echo-filter --has --all a b --
77+
78+ # capture what [[ " ${items[*]} " =~ " $item " ]] cannot
79+ eval-tester --status=1 -- \
80+ echo-filter --has b -- a ' b b b'
81+
82+ eval-tester --status=1 -- \
83+ echo-filter --has c -- a ' b b b'
84+
85+ eval-tester --status=1 -- \
86+ echo-filter --has --any b c -- a ' b b b'
87+
88+ eval-tester --status=1 -- \
89+ echo-filter --has --all b c -- a ' b b b'
90+
91+ eval-tester -- \
92+ echo-filter --has --any a ' b b b' -- a ' b b b'
93+
94+ eval-tester -- \
95+ echo-filter --has --all a ' b b b' -- a ' b b b'
96+
97+ eval-tester -- \
98+ echo-filter --has --any --needle=a --needle=' b b b' -- a ' b b b'
99+
100+ eval-tester -- \
101+ echo-filter --has --all --needle=a --needle=' b b b' -- a ' b b b'
102+
103+ eval-tester -- \
104+ echo-filter --has --any a a -- a ' b b b'
105+
106+ eval-tester -- \
107+ echo-filter --has --all a a -- a ' b b b'
108+
109+ eval-tester -- \
110+ echo-filter --has --any a c -- a ' b b b'
111+
112+ eval-tester --status=1 -- \
113+ echo-filter --has --all a c -- a ' b b b'
114+
115+ eval-tester -- \
116+ echo-filter --has --any a c -- a ' b b b'
23117
24- __print_lines A c e a b a b | eval-tester --stdout= $' a \n c \n e \n b \n ' --trailing-newlines -- \
25- echo-filter --stdin --ignore-case
118+ eval-tester -- \
119+ echo-filter --has --all -- ignore-case a C -- A ' b b b ' c
26120
27121 return 0
28122)
@@ -57,15 +151,14 @@ function echo_filter() (
57151 }
58152
59153 # process
60- local item options_filter=() option_stdinargs=()
154+ local options_filter=() option_stdinargs=()
61155 while [[ $# -ne 0 ]]; do
62- item=" $1 "
156+ if __is_stdinargs_option_or_argument " $1 " ; then
157+ option_stdinargs+=(" $1 " )
158+ else
159+ options_filter+=(" $1 " )
160+ fi
63161 shift
64- case " $item " in
65- ' --no-color' * | ' --color' | ' --no-stdin' * | ' --stdin' | ' --no-timeout' * | ' --timeout' | ' --no-inline' * | ' --inline' | ' --max-args=' | ' -' | ' --' ) option_stdinargs+=(" $item " ) ;;
66- ' --' * ) options_filter+=(" $item " ) ;;
67- * ) option_stdinargs+=(" $item " ) ;;
68- esac
69162 done
70163
71164 # =====================================
0 commit comments