xref: /freebsd/usr.bin/column/tests/column.sh (revision 313713b24c6d2a3061972c4f431515c4f1b01c77)
16f2b1b56SLexi Winter# SPDX-License-Identifier: ISC
26f2b1b56SLexi Winter#
36f2b1b56SLexi Winter# Copyright (c) 2025 Lexi Winter
46f2b1b56SLexi Winter#
56f2b1b56SLexi Winter# Permission to use, copy, modify, and distribute this software for any
66f2b1b56SLexi Winter# purpose with or without fee is hereby granted, provided that the above
76f2b1b56SLexi Winter# copyright notice and this permission notice appear in all copies.
86f2b1b56SLexi Winter#
96f2b1b56SLexi Winter# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
106f2b1b56SLexi Winter# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
116f2b1b56SLexi Winter# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
126f2b1b56SLexi Winter# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
136f2b1b56SLexi Winter# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
146f2b1b56SLexi Winter# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
156f2b1b56SLexi Winter# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
166f2b1b56SLexi Winter
176f2b1b56SLexi Winteratf_test_case "basic"
186f2b1b56SLexi Winterbasic_head()
196f2b1b56SLexi Winter{
206f2b1b56SLexi Winter	atf_set descr "Basic column(1) with default options"
216f2b1b56SLexi Winter}
226f2b1b56SLexi Winter
236f2b1b56SLexi Winterbasic_body()
246f2b1b56SLexi Winter{
256f2b1b56SLexi Winter	cat >input.1 <<END
266f2b1b56SLexi Winterthis is the first input file
276f2b1b56SLexi Winterit has multiple lines
286f2b1b56SLexi WinterEND
296f2b1b56SLexi Winter
306f2b1b56SLexi Winter	cat >input.2 <<END
316f2b1b56SLexi Winterhere lies the second input file
326f2b1b56SLexi Wintersome lines
336f2b1b56SLexi Winter
346f2b1b56SLexi Winterare empty
356f2b1b56SLexi WinterEND
366f2b1b56SLexi Winter
376f2b1b56SLexi Winter	cat >input.3 <<END
386f2b1b56SLexi Winterthird of the input files am i
396f2b1b56SLexi Winterand i have
406f2b1b56SLexi Wintermore
416f2b1b56SLexi Winterlines
426f2b1b56SLexi Winterthan before
436f2b1b56SLexi WinterEND
446f2b1b56SLexi Winter
456f2b1b56SLexi Winter	cat >expected <<END
466f2b1b56SLexi Winterthis is the first input file	are empty			lines
476f2b1b56SLexi Winterit has multiple lines		third of the input files am i	than before
486f2b1b56SLexi Winterhere lies the second input file	and i have
496f2b1b56SLexi Wintersome lines			more
506f2b1b56SLexi WinterEND
516f2b1b56SLexi Winter
526f2b1b56SLexi Winter	atf_check -o save:output column -c120 input.1 input.2 input.3
536f2b1b56SLexi Winter	atf_check diff expected output
546f2b1b56SLexi Winter}
556f2b1b56SLexi Winter
566f2b1b56SLexi Winteratf_test_case "rows"
576f2b1b56SLexi Winterrows_head()
586f2b1b56SLexi Winter{
596f2b1b56SLexi Winter	atf_set descr "column(1) with -x (row-wise) option"
606f2b1b56SLexi Winter}
616f2b1b56SLexi Winter
626f2b1b56SLexi Winterrows_body()
636f2b1b56SLexi Winter{
646f2b1b56SLexi Winter	cat >input.1 <<END
656f2b1b56SLexi Winterthis is the first input file
666f2b1b56SLexi Winterit has multiple lines
676f2b1b56SLexi WinterEND
686f2b1b56SLexi Winter
696f2b1b56SLexi Winter	cat >input.2 <<END
706f2b1b56SLexi Winterhere lies the second input file
716f2b1b56SLexi Wintersome lines
726f2b1b56SLexi Winter
736f2b1b56SLexi Winterare empty
746f2b1b56SLexi WinterEND
756f2b1b56SLexi Winter
766f2b1b56SLexi Winter	cat >input.3 <<END
776f2b1b56SLexi Winterthird of the input files am i
786f2b1b56SLexi Winterand i have
796f2b1b56SLexi Wintermore
806f2b1b56SLexi Winterlines
816f2b1b56SLexi Winterthan before
826f2b1b56SLexi WinterEND
836f2b1b56SLexi Winter
846f2b1b56SLexi Winter	cat >expected <<END
856f2b1b56SLexi Winterthis is the first input file	it has multiple lines		here lies the second input file
866f2b1b56SLexi Wintersome lines			are empty			third of the input files am i
876f2b1b56SLexi Winterand i have			more				lines
886f2b1b56SLexi Winterthan before
896f2b1b56SLexi WinterEND
906f2b1b56SLexi Winter
916f2b1b56SLexi Winter	atf_check -o save:output column -xc120 input.1 input.2 input.3
926f2b1b56SLexi Winter	atf_check diff expected output
936f2b1b56SLexi Winter}
946f2b1b56SLexi Winter
956f2b1b56SLexi Winteratf_test_case "basic_table"
966f2b1b56SLexi Winterbasic_table_head()
976f2b1b56SLexi Winter{
986f2b1b56SLexi Winter	atf_set descr "column(1) with -t (table) option"
996f2b1b56SLexi Winter}
1006f2b1b56SLexi Winter
1016f2b1b56SLexi Winterbasic_table_body()
1026f2b1b56SLexi Winter{
1036f2b1b56SLexi Winter	cat >input.1 <<END
1046f2b1b56SLexi Winter1 2 3 4
1056f2b1b56SLexi Winterfoo bar baz quux
1066f2b1b56SLexi WinterEND
1076f2b1b56SLexi Winter
1086f2b1b56SLexi Winter	cat >input.2 <<END
1096f2b1b56SLexi Winterfie fi fo fum
1106f2b1b56SLexi WinterEND
1116f2b1b56SLexi Winter
1126f2b1b56SLexi Winter	cat >input.3 <<END
1136f2b1b56SLexi Winterwhere did my
1146f2b1b56SLexi Winterfields go
1156f2b1b56SLexi Winterargh
1166f2b1b56SLexi WinterEND
1176f2b1b56SLexi Winter
1186f2b1b56SLexi Winter	cat >expected <<END
1196f2b1b56SLexi Winter1       2    3    4
1206f2b1b56SLexi Winterfoo     bar  baz  quux
1216f2b1b56SLexi Winterfie     fi   fo   fum
1226f2b1b56SLexi Winterwhere   did  my
1236f2b1b56SLexi Winterfields  go
1246f2b1b56SLexi Winterargh
1256f2b1b56SLexi WinterEND
1266f2b1b56SLexi Winter
1276f2b1b56SLexi Winter	atf_check -o save:output column -tc120 input.1 input.2 input.3
1286f2b1b56SLexi Winter	atf_check diff expected output
1296f2b1b56SLexi Winter}
1306f2b1b56SLexi Winter
1316f2b1b56SLexi Winteratf_test_case "colonic_table"
1326f2b1b56SLexi Wintercolonic_table_head()
1336f2b1b56SLexi Winter{
1346f2b1b56SLexi Winter	atf_set descr "column(1) with -t (table) and -s options"
1356f2b1b56SLexi Winter}
1366f2b1b56SLexi Winter
1376f2b1b56SLexi Wintercolonic_table_body()
1386f2b1b56SLexi Winter{
1396f2b1b56SLexi Winter	cat >input <<END
1406f2b1b56SLexi Winterone:two.three
1416f2b1b56SLexi Winterfour.five:six
1426f2b1b56SLexi Winterseven.:eight.:nine
1436f2b1b56SLexi Winter:ein
1446f2b1b56SLexi Winter::zwei
1456f2b1b56SLexi Winterdrei..
1466f2b1b56SLexi Wintervier:
147*313713b2SLexi Winter:
1486f2b1b56SLexi Winter
1496f2b1b56SLexi WinterEND
1506f2b1b56SLexi Winter
1516f2b1b56SLexi Winter	cat >expected <<END
1526f2b1b56SLexi Winterone    two    three
1536f2b1b56SLexi Winterfour   five   six
1546f2b1b56SLexi Winterseven  eight  nine
1556f2b1b56SLexi Winterein
1566f2b1b56SLexi Winterzwei
1576f2b1b56SLexi Winterdrei
1586f2b1b56SLexi Wintervier
1596f2b1b56SLexi WinterEND
1606f2b1b56SLexi Winter
1616f2b1b56SLexi Winter	atf_check -o save:output column -tc120 -s:. input
1626f2b1b56SLexi Winter	atf_check diff expected output
1636f2b1b56SLexi Winter}
1646f2b1b56SLexi Winter
165*313713b2SLexi Winteratf_test_case "ncols"
166*313713b2SLexi Winterncols_head()
167*313713b2SLexi Winter{
168*313713b2SLexi Winter	atf_set descr "column(1) with -t (table) and -s and -l options"
169*313713b2SLexi Winter}
170*313713b2SLexi Winter
171*313713b2SLexi Winterncols_body()
172*313713b2SLexi Winter{
173*313713b2SLexi Winter	cat >input <<END
174*313713b2SLexi Winternow we have five columns
175*313713b2SLexi Winterhere there are four
176*313713b2SLexi Winternow only three
177*313713b2SLexi Winterjust two
178*313713b2SLexi Winterone
179*313713b2SLexi WinterEND
180*313713b2SLexi Winter
181*313713b2SLexi Winter	cat >expected <<END
182*313713b2SLexi Winternow   we     have five columns
183*313713b2SLexi Winterhere  there  are four
184*313713b2SLexi Winternow   only   three
185*313713b2SLexi Winterjust  two
186*313713b2SLexi Winterone
187*313713b2SLexi WinterEND
188*313713b2SLexi Winter
189*313713b2SLexi Winter	atf_check -o save:output column -tc120 -l3 input
190*313713b2SLexi Winter	atf_check diff expected output
191*313713b2SLexi Winter}
192*313713b2SLexi Winter
1936f2b1b56SLexi Winteratf_init_test_cases()
1946f2b1b56SLexi Winter{
1956f2b1b56SLexi Winter	atf_add_test_case basic
1966f2b1b56SLexi Winter	atf_add_test_case rows
1976f2b1b56SLexi Winter	atf_add_test_case basic_table
1986f2b1b56SLexi Winter	atf_add_test_case colonic_table
199*313713b2SLexi Winter	atf_add_test_case ncols
2006f2b1b56SLexi Winter}
201