From: Ben Pfaff Date: Mon, 27 Sep 2021 05:31:04 +0000 (-0700) Subject: matrix-reader tests X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fmatrix;p=pspp matrix-reader tests --- diff --git a/src/language/data-io/matrix-reader.c b/src/language/data-io/matrix-reader.c index 44ea5b18a8..73d60c844d 100644 --- a/src/language/data-io/matrix-reader.c +++ b/src/language/data-io/matrix-reader.c @@ -23,12 +23,14 @@ #include "data/casegrouper.h" #include "data/casereader.h" +#include "data/casewriter.h" #include "data/data-out.h" #include "data/dataset.h" #include "data/dictionary.h" #include "data/format.h" #include "data/variable.h" #include "language/command.h" +#include "language/lexer/lexer.h" #include "libpspp/i18n.h" #include "libpspp/message.h" #include "libpspp/str.h" @@ -99,12 +101,12 @@ find_matrix_string_var (const struct dictionary *dict, const char *name) const struct variable *var = dict_lookup_var (dict, name); if (var == NULL) { - msg (ME, _("Matrix dataset lacks a variable called %s."), name); + msg (SE, _("Matrix dataset lacks a variable called %s."), name); return NULL; } if (!var_is_alpha (var)) { - msg (ME, _("Matrix dataset variable %s should be of string type."), name); + msg (SE, _("Matrix dataset variable %s should be of string type."), name); return NULL; } return var; @@ -123,7 +125,7 @@ matrix_reader_create (const struct dictionary *dict, size_t rowtype_idx = var_get_dict_index (rowtype); if (varname_idx < rowtype_idx) { - msg (ME, _("Variable %s must precede %s in matrix file dictionary."), + msg (SE, _("Variable %s must precede %s in matrix file dictionary."), "ROWTYPE_", "VARNAME_"); return NULL; } @@ -133,7 +135,7 @@ matrix_reader_create (const struct dictionary *dict, const struct variable *v = dict_get_var (dict, i); if (!var_is_numeric (v) && v != rowtype && v != varname) { - msg (ME, _("Matrix dataset variable %s should be numeric."), + msg (SE, _("Matrix dataset variable %s should be numeric."), var_get_name (v)); return NULL; } @@ -152,7 +154,7 @@ matrix_reader_create (const struct dictionary *dict, size_t n_cvars = n_vars - varname_idx - 1; if (!n_cvars) { - msg (ME, _("Matrix dataset does not have any continuous variables.")); + msg (SE, _("Matrix dataset does not have any continuous variables.")); free (vars); return NULL; } @@ -340,8 +342,19 @@ matrix_reader_next (struct matrix_material *mm, struct matrix_reader *mr, } int -cmd_debug_matrix_read (struct lexer *lexer UNUSED, struct dataset *ds) +cmd_debug_matrix_read (struct lexer *lexer, struct dataset *ds) { + if (lex_match_id (lexer, "NODATA")) + { + struct casereader *cr = casewriter_make_reader ( + mem_writer_create (dict_get_proto (dataset_dict (ds)))); + struct matrix_reader *mr = matrix_reader_create (dataset_dict (ds), cr); + if (!mr) + return CMD_FAILURE; + matrix_reader_destroy (mr); + return CMD_SUCCESS; + } + struct matrix_reader *mr = matrix_reader_create (dataset_dict (ds), proc_open (ds)); if (!mr) diff --git a/tests/automake.mk b/tests/automake.mk index 802666bfac..3f76cbc32a 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -358,6 +358,7 @@ TESTSUITE_AT = \ tests/language/data-io/list.at \ tests/language/data-io/match-files.at \ tests/language/data-io/matrix-data.at \ + tests/language/data-io/matrix-reader.at \ tests/language/data-io/mconvert.at \ tests/language/data-io/print-space.at \ tests/language/data-io/print.at \ diff --git a/tests/language/data-io/mconvert.at b/tests/language/data-io/mconvert.at index a6b9ab6948..fccd435f65 100644 --- a/tests/language/data-io/mconvert.at +++ b/tests/language/data-io/mconvert.at @@ -216,5 +216,7 @@ AT_SETUP([MCONVERT negative test]) AT_DATA([mconvert.sps], [MCONVERT. ]) AT_CHECK([pspp mconvert.sps], [1], [dnl +mconvert.sps:1: error: MCONVERT: No active file is defined and no external file +is specified on MATRIX=IN. ]) AT_CLEANUP \ No newline at end of file