#!/bin/sh # # rec2csv.sh - System tests for rec2csv. # # Copyright (C) 2011-2022 Jose E. Marchesi. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Initialization # : ${srcdir=.} . $srcdir/testutils.sh test_init "rec2csv" # # Create input files. # test_declare_input_file default-records \ 'a: a1 b: b1 c: c1 a: a2 b: b2 c: c2 ' test_declare_input_file missing-fields \ 'a: a1 b: b1 c: c1 a: a2 c: c2 b: b3 c: c3 a: a4 b: b4 ' test_declare_input_file missing-fields-first \ 'a: a1 c: c1 a: a2 b: b2 c: c2 ' test_declare_input_file multi-line \ 'a: foo + bar + baz b: jo + ju + je ' test_declare_input_file escape-quotes \ 'a: foo"bar b: bar"baz ' test_declare_input_file repeated-fields \ 'a: a11 a: a12 a: a21 a: a22 ' test_declare_input_file repeated-missing \ 'a: a11 a: a12 b: b2 a: a21 ' test_declare_input_file several-types \ 'a: a_none b: b_none %rec: foo a: a_foo b: b_foo %rec: bar a: a_bar b: b_bar ' test_declare_input_file sort \ '%rec: Sorted %sort: foo %type: bar int foo: b bar: 100 foo: a bar: 50 foo: c bar: 0 ' # # Declare tests. # test_tool rec2csv-default-record ok \ rec2csv \ '' \ default-records \ '"a","b","c" "a1","b1","c1" "a2","b2","c2" ' test_tool rec2csv-missing-fields ok \ rec2csv \ '' \ missing-fields \ '"a","b","c" "a1","b1","c1" "a2",,"c2" ,"b3","c3" "a4","b4", ' test_tool rec2csv-missing-fields-first ok \ rec2csv \ '' \ missing-fields-first \ '"a","c","b" "a1","c1", "a2","c2","b2" ' test_tool rec2csv-multi-line ok \ rec2csv \ '' \ multi-line \ '"a","b" "foo bar baz","jo ju je" ' test_tool rec2csv-escape-quotes ok \ rec2csv \ '' \ escape-quotes \ '"a","b" "foo""bar","bar""baz" ' test_tool rec2csv-repeated-fields ok \ rec2csv \ '' \ repeated-fields \ '"a","a_2" "a11","a12" "a21","a22" ' test_tool rec2csv-repeated-missing ok \ rec2csv \ '' \ repeated-missing \ '"a","a_2","b" "a11","a12", "a21",,"b2" ' test_tool rec2csv-default-type ok \ rec2csv \ '' \ several-types \ '"a","b" "a_none","b_none" ' test_tool rec2csv-with-type ok \ rec2csv \ '-t bar' \ several-types \ '"a","b" "a_bar","b_bar" ' test_tool rec2csv-nonexistant-type ok \ rec2csv \ '-t jorl' \ several-types \ '' test_tool rec2csv-sort ok \ rec2csv \ '' \ sort \ '"foo","bar" "a","50" "b","100" "c","0" ' test_tool rec2csv-sort-field ok \ rec2csv \ '-S bar' \ sort \ '"foo","bar" "c","0" "a","50" "b","100" ' # # Cleanup # test_cleanup exit $? # End of rec2csv.sh