1013953ebSAlan Somers# 2013953ebSAlan Somers# Copyright 2017 Shivansh 3013953ebSAlan Somers# All rights reserved. 4013953ebSAlan Somers# 5013953ebSAlan Somers# Redistribution and use in source and binary forms, with or without 6013953ebSAlan Somers# modification, are permitted provided that the following conditions 7013953ebSAlan Somers# are met: 8013953ebSAlan Somers# 1. Redistributions of source code must retain the above copyright 9013953ebSAlan Somers# notice, this list of conditions and the following disclaimer. 10013953ebSAlan Somers# 2. Redistributions in binary form must reproduce the above copyright 11013953ebSAlan Somers# notice, this list of conditions and the following disclaimer in the 12013953ebSAlan Somers# documentation and/or other materials provided with the distribution. 13013953ebSAlan Somers# 14013953ebSAlan Somers# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15013953ebSAlan Somers# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16013953ebSAlan Somers# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17013953ebSAlan Somers# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18013953ebSAlan Somers# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19013953ebSAlan Somers# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20013953ebSAlan Somers# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21013953ebSAlan Somers# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22013953ebSAlan Somers# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23013953ebSAlan Somers# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24013953ebSAlan Somers# SUCH DAMAGE. 25013953ebSAlan Somers# 26013953ebSAlan Somers# 27013953ebSAlan Somers 28013953ebSAlan Somersatf_test_case c_flag 29013953ebSAlan Somersc_flag_head() 30013953ebSAlan Somers{ 31013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'c'" 32013953ebSAlan Somers} 33013953ebSAlan Somers 34013953ebSAlan Somersc_flag_body() 35013953ebSAlan Somers{ 36*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 37*7ad9aa0bSJohn Baldwin5 6 7 8 38*7ad9aa0bSJohn Baldwin" rs -c, 2 <<EOF 39*7ad9aa0bSJohn Baldwin1,2,3,4,5,6,7,8 40*7ad9aa0bSJohn BaldwinEOF 41013953ebSAlan Somers} 42013953ebSAlan Somers 43013953ebSAlan Somersatf_test_case s_flag 44013953ebSAlan Somerss_flag_head() 45013953ebSAlan Somers{ 46013953ebSAlan Somers atf_set "descr" "Verify the usage of option 's'" 47013953ebSAlan Somers} 48013953ebSAlan Somers 49013953ebSAlan Somerss_flag_body() 50013953ebSAlan Somers{ 51*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 52*7ad9aa0bSJohn Baldwin5 6 7 8 53*7ad9aa0bSJohn Baldwin" rs -s% 2 <<EOF 54*7ad9aa0bSJohn Baldwin1%%2%%3%4%5%%%6%%%7%8 55*7ad9aa0bSJohn BaldwinEOF 56*7ad9aa0bSJohn Baldwin 57013953ebSAlan Somers} 58013953ebSAlan Somers 59013953ebSAlan Somersatf_test_case C_flag 60013953ebSAlan SomersC_flag_head() 61013953ebSAlan Somers{ 62013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'C'" 63013953ebSAlan Somers} 64013953ebSAlan Somers 65013953ebSAlan SomersC_flag_body() 66013953ebSAlan Somers{ 67*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1,2,3,4, 68*7ad9aa0bSJohn Baldwin5,6,7,8, 69*7ad9aa0bSJohn Baldwin" rs -C, 2 <<EOF 70*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 71*7ad9aa0bSJohn BaldwinEOF 72013953ebSAlan Somers} 73013953ebSAlan Somers 74013953ebSAlan Somersatf_test_case S_flag 75013953ebSAlan SomersS_flag_head() 76013953ebSAlan Somers{ 77013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'S'" 78013953ebSAlan Somers} 79013953ebSAlan Somers 80013953ebSAlan SomersS_flag_body() 81013953ebSAlan Somers{ 82*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1,,2,,3,,4 83*7ad9aa0bSJohn Baldwin5,,6,,7,,8 84*7ad9aa0bSJohn Baldwin" rs -S, 2 <<EOF 85*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 86*7ad9aa0bSJohn BaldwinEOF 87013953ebSAlan Somers} 88013953ebSAlan Somers 89013953ebSAlan Somersatf_test_case t_flag 90013953ebSAlan Somerst_flag_head() 91013953ebSAlan Somers{ 92013953ebSAlan Somers atf_set "descr" "Verify the usage of option 't'" 93013953ebSAlan Somers} 94013953ebSAlan Somers 95013953ebSAlan Somerst_flag_body() 96013953ebSAlan Somers{ 97*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 4 7 98*7ad9aa0bSJohn Baldwin2 5 8 99*7ad9aa0bSJohn Baldwin3 6 100*7ad9aa0bSJohn Baldwin" rs -t 3 <<EOF 101*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 102*7ad9aa0bSJohn BaldwinEOF 103013953ebSAlan Somers} 104013953ebSAlan Somers 105013953ebSAlan Somersatf_test_case T_flag 106013953ebSAlan SomersT_flag_head() 107013953ebSAlan Somers{ 108013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'T'" 109013953ebSAlan Somers} 110013953ebSAlan Somers 111013953ebSAlan SomersT_flag_body() 112013953ebSAlan Somers{ 113*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 114*7ad9aa0bSJohn Baldwin2 115*7ad9aa0bSJohn Baldwin3 116*7ad9aa0bSJohn Baldwin" rs -T <<EOF 117*7ad9aa0bSJohn Baldwin1 2 3 118*7ad9aa0bSJohn BaldwinEOF 119013953ebSAlan Somers} 120013953ebSAlan Somers 121013953ebSAlan Somersatf_test_case k_flag 122013953ebSAlan Somersk_flag_head() 123013953ebSAlan Somers{ 124013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'k'" 125013953ebSAlan Somers} 126013953ebSAlan Somers 127013953ebSAlan Somersk_flag_body() 128013953ebSAlan Somers{ 129*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"3 4 5 130*7ad9aa0bSJohn Baldwin6 7 8 131*7ad9aa0bSJohn Baldwin" rs -k 1 2 <<EOF 132*7ad9aa0bSJohn Baldwin1 2 133*7ad9aa0bSJohn Baldwin3 4 5 6 134*7ad9aa0bSJohn Baldwin7 8 135*7ad9aa0bSJohn BaldwinEOF 136013953ebSAlan Somers} 137013953ebSAlan Somers 138013953ebSAlan Somersatf_test_case K_flag 139013953ebSAlan SomersK_flag_head() 140013953ebSAlan Somers{ 141013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'K'" 142013953ebSAlan Somers} 143013953ebSAlan Somers 144013953ebSAlan SomersK_flag_body() 145013953ebSAlan Somers{ 146013953ebSAlan Somers atf_check -s exit:0 -o inline:" 147afb4998dSJohn Baldwin" rs -K 1 < /dev/null 148013953ebSAlan Somers} 149013953ebSAlan Somers 150013953ebSAlan Somersatf_test_case g_flag 151013953ebSAlan Somersg_flag_head() 152013953ebSAlan Somers{ 153013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'g'" 154013953ebSAlan Somers} 155013953ebSAlan Somers 156013953ebSAlan Somersg_flag_body() 157013953ebSAlan Somers{ 158*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 159*7ad9aa0bSJohn Baldwin5 6 7 8 160*7ad9aa0bSJohn Baldwin" rs -g 1 2 <<EOF 161*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 162*7ad9aa0bSJohn BaldwinEOF 163013953ebSAlan Somers} 164013953ebSAlan Somers 165013953ebSAlan Somersatf_test_case G_flag 166013953ebSAlan SomersG_flag_head() 167013953ebSAlan Somers{ 168013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'G'" 169013953ebSAlan Somers} 170013953ebSAlan Somers 171013953ebSAlan SomersG_flag_body() 172013953ebSAlan Somers{ 173*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 174*7ad9aa0bSJohn Baldwin5 6 7 acbdefghij 175*7ad9aa0bSJohn Baldwin" rs -G 50 2 <<EOF 176*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 acbdefghij 177*7ad9aa0bSJohn BaldwinEOF 178013953ebSAlan Somers} 179013953ebSAlan Somers 180013953ebSAlan Somersatf_test_case e_flag 181013953ebSAlan Somerse_flag_head() 182013953ebSAlan Somers{ 183013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'e'" 184013953ebSAlan Somers} 185013953ebSAlan Somers 186013953ebSAlan Somerse_flag_body() 187013953ebSAlan Somers{ 188013953ebSAlan Somers atf_check -s exit:0 -o inline:" 189013953ebSAlan Somers" rs -e < /dev/null 190013953ebSAlan Somers} 191013953ebSAlan Somers 192013953ebSAlan Somersatf_test_case n_flag 193013953ebSAlan Somersn_flag_head() 194013953ebSAlan Somers{ 195013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'n'" 196013953ebSAlan Somers} 197013953ebSAlan Somers 198013953ebSAlan Somersn_flag_body() 199013953ebSAlan Somers{ 200*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 201*7ad9aa0bSJohn Baldwin4 5 202*7ad9aa0bSJohn Baldwin6 7 203*7ad9aa0bSJohn Baldwin" rs -n 0 3 <<EOF 204*7ad9aa0bSJohn Baldwin1 2 3 205*7ad9aa0bSJohn Baldwin4 5 206*7ad9aa0bSJohn Baldwin6 7 207*7ad9aa0bSJohn BaldwinEOF 208013953ebSAlan Somers} 209013953ebSAlan Somers 210013953ebSAlan Somersatf_test_case y_flag 211013953ebSAlan Somersy_flag_head() 212013953ebSAlan Somers{ 213013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'y'" 214013953ebSAlan Somers} 215013953ebSAlan Somers 216013953ebSAlan Somersy_flag_body() 217013953ebSAlan Somers{ 218*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 219*7ad9aa0bSJohn Baldwin4 5 6 220*7ad9aa0bSJohn Baldwin7 8 1 221*7ad9aa0bSJohn Baldwin" rs -y 3 <<EOF 222*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 223*7ad9aa0bSJohn BaldwinEOF 224013953ebSAlan Somers} 225013953ebSAlan Somers 226013953ebSAlan Somersatf_test_case h_flag 227013953ebSAlan Somersh_flag_head() 228013953ebSAlan Somers{ 229013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'h'" 230013953ebSAlan Somers} 231013953ebSAlan Somers 232013953ebSAlan Somersh_flag_body() 233013953ebSAlan Somers{ 234013953ebSAlan Somers atf_check -s exit:0 -o inline:"1 0 235013953ebSAlan Somers" rs -h < /dev/null 236013953ebSAlan Somers} 237013953ebSAlan Somers 238013953ebSAlan Somersatf_test_case H_flag 239013953ebSAlan SomersH_flag_head() 240013953ebSAlan Somers{ 241013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'H'" 242013953ebSAlan Somers} 243013953ebSAlan Somers 244013953ebSAlan SomersH_flag_body() 245013953ebSAlan Somers{ 246013953ebSAlan Somers atf_check -s exit:0 -o inline:" 0 line 1 247013953ebSAlan Somers1 0 248013953ebSAlan Somers" rs -H < /dev/null 249013953ebSAlan Somers} 250013953ebSAlan Somers 251013953ebSAlan Somersatf_test_case j_flag 252013953ebSAlan Somersj_flag_head() 253013953ebSAlan Somers{ 254013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'j'" 255013953ebSAlan Somers} 256013953ebSAlan Somers 257013953ebSAlan Somersj_flag_body() 258013953ebSAlan Somers{ 259*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:" 1 2 3 260*7ad9aa0bSJohn Baldwinabc def ghi 261*7ad9aa0bSJohn Baldwin" rs -j 2 <<EOF 262*7ad9aa0bSJohn Baldwin1 2 3 abc def ghi 263*7ad9aa0bSJohn BaldwinEOF 264013953ebSAlan Somers} 265013953ebSAlan Somers 266013953ebSAlan Somersatf_test_case m_flag 267013953ebSAlan Somersm_flag_head() 268013953ebSAlan Somers{ 269013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'm'" 270013953ebSAlan Somers} 271013953ebSAlan Somers 272013953ebSAlan Somersm_flag_body() 273013953ebSAlan Somers{ 274*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 275*7ad9aa0bSJohn Baldwinabc def ghi 276*7ad9aa0bSJohn Baldwin" rs -m 2 <<EOF 277*7ad9aa0bSJohn Baldwin1 2 3 abc def ghi 278*7ad9aa0bSJohn BaldwinEOF 279013953ebSAlan Somers} 280013953ebSAlan Somers 281013953ebSAlan Somersatf_test_case z_flag 282013953ebSAlan Somersz_flag_head() 283013953ebSAlan Somers{ 284013953ebSAlan Somers atf_set "descr" "Verify the usage of option 'z'" 285013953ebSAlan Somers} 286013953ebSAlan Somers 287013953ebSAlan Somersz_flag_body() 288013953ebSAlan Somers{ 289*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 290*7ad9aa0bSJohn Baldwin5 6 7 acbdefghij 291*7ad9aa0bSJohn Baldwin" rs -z 2 <<EOF 292*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 acbdefghij 293*7ad9aa0bSJohn BaldwinEOF 294013953ebSAlan Somers} 295013953ebSAlan Somers 296013953ebSAlan Somersatf_test_case invalid_usage 297013953ebSAlan Somersinvalid_usage_head() 298013953ebSAlan Somers{ 299013953ebSAlan Somers atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message" 300013953ebSAlan Somers} 301013953ebSAlan Somers 302013953ebSAlan Somersinvalid_usage_body() 303013953ebSAlan Somers{ 304afb4998dSJohn Baldwin atf_check -s not-exit:0 -e inline:"rs: option requires an argument -- w 305afb4998dSJohn Baldwinusage: rs [-[csCS][x][kKgGw][N]tTeEnyjhHmz] [rows [cols]] 306013953ebSAlan Somers" rs -w 307013953ebSAlan Somers} 308013953ebSAlan Somers 309013953ebSAlan Somersatf_test_case no_arguments 310013953ebSAlan Somersno_arguments_head() 311013953ebSAlan Somers{ 312013953ebSAlan Somers atf_set "descr" "Verify that rs(1) executes successfully and produces a valid output when invoked without any arguments" 313013953ebSAlan Somers} 314013953ebSAlan Somers 315013953ebSAlan Somersno_arguments_body() 316013953ebSAlan Somers{ 317*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 5 6 7 8 318*7ad9aa0bSJohn Baldwin" rs <<EOF 319*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 320*7ad9aa0bSJohn BaldwinEOF 321*7ad9aa0bSJohn Baldwin} 322*7ad9aa0bSJohn Baldwin 323*7ad9aa0bSJohn Baldwinatf_test_case rows_2 324*7ad9aa0bSJohn Baldwinrows_2_head() 325*7ad9aa0bSJohn Baldwin{ 326*7ad9aa0bSJohn Baldwin atf_set "descr" "Simple output with 2 rows" 327*7ad9aa0bSJohn Baldwin} 328*7ad9aa0bSJohn Baldwin 329*7ad9aa0bSJohn Baldwinrows_2_body() 330*7ad9aa0bSJohn Baldwin{ 331*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 4 332*7ad9aa0bSJohn Baldwin5 6 7 8 333*7ad9aa0bSJohn Baldwin" rs 2 <<EOF 334*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 335*7ad9aa0bSJohn BaldwinEOF 336*7ad9aa0bSJohn Baldwin} 337*7ad9aa0bSJohn Baldwin 338*7ad9aa0bSJohn Baldwinatf_test_case rows_3 339*7ad9aa0bSJohn Baldwinrows_3_head() 340*7ad9aa0bSJohn Baldwin{ 341*7ad9aa0bSJohn Baldwin atf_set "descr" "Simple output with 3 rows" 342*7ad9aa0bSJohn Baldwin} 343*7ad9aa0bSJohn Baldwin 344*7ad9aa0bSJohn Baldwinrows_3_body() 345*7ad9aa0bSJohn Baldwin{ 346*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 3 347*7ad9aa0bSJohn Baldwin4 5 6 348*7ad9aa0bSJohn Baldwin7 8 349*7ad9aa0bSJohn Baldwin" rs 3 <<EOF 350*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 351*7ad9aa0bSJohn BaldwinEOF 352*7ad9aa0bSJohn Baldwin} 353*7ad9aa0bSJohn Baldwin 354*7ad9aa0bSJohn Baldwinatf_test_case rows_4 355*7ad9aa0bSJohn Baldwinrows_4_head() 356*7ad9aa0bSJohn Baldwin{ 357*7ad9aa0bSJohn Baldwin atf_set "descr" "Simple output with 4 rows" 358*7ad9aa0bSJohn Baldwin} 359*7ad9aa0bSJohn Baldwin 360*7ad9aa0bSJohn Baldwinrows_4_body() 361*7ad9aa0bSJohn Baldwin{ 362*7ad9aa0bSJohn Baldwin atf_check -s exit:0 -o inline:"1 2 363*7ad9aa0bSJohn Baldwin3 4 364*7ad9aa0bSJohn Baldwin5 6 365*7ad9aa0bSJohn Baldwin7 8 366*7ad9aa0bSJohn Baldwin" rs 4 <<EOF 367*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8 368*7ad9aa0bSJohn BaldwinEOF 369013953ebSAlan Somers} 370013953ebSAlan Somers 371013953ebSAlan Somersatf_init_test_cases() 372013953ebSAlan Somers{ 373013953ebSAlan Somers atf_add_test_case c_flag 374013953ebSAlan Somers atf_add_test_case s_flag 375013953ebSAlan Somers atf_add_test_case C_flag 376013953ebSAlan Somers atf_add_test_case S_flag 377013953ebSAlan Somers atf_add_test_case t_flag 378013953ebSAlan Somers atf_add_test_case T_flag 379013953ebSAlan Somers atf_add_test_case k_flag 380013953ebSAlan Somers atf_add_test_case K_flag 381013953ebSAlan Somers atf_add_test_case g_flag 382013953ebSAlan Somers atf_add_test_case G_flag 383013953ebSAlan Somers atf_add_test_case e_flag 384013953ebSAlan Somers atf_add_test_case n_flag 385013953ebSAlan Somers atf_add_test_case y_flag 386013953ebSAlan Somers atf_add_test_case h_flag 387013953ebSAlan Somers atf_add_test_case H_flag 388013953ebSAlan Somers atf_add_test_case j_flag 389013953ebSAlan Somers atf_add_test_case m_flag 390013953ebSAlan Somers atf_add_test_case z_flag 391013953ebSAlan Somers atf_add_test_case invalid_usage 392013953ebSAlan Somers atf_add_test_case no_arguments 393*7ad9aa0bSJohn Baldwin atf_add_test_case rows_2 394*7ad9aa0bSJohn Baldwin atf_add_test_case rows_3 395*7ad9aa0bSJohn Baldwin atf_add_test_case rows_4 396013953ebSAlan Somers} 397