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