Some basic tests.
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 18 Jan 2022 03:31:08 +0000 (19:31 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sat, 2 Apr 2022 01:48:55 +0000 (18:48 -0700)
examples/nhtsa.sav [new file with mode: 0644]
src/language/stats/ctables.c
tests/language/stats/ctables.at

diff --git a/examples/nhtsa.sav b/examples/nhtsa.sav
new file mode 100644 (file)
index 0000000..9e63f33
Binary files /dev/null and b/examples/nhtsa.sav differ
index 6b6b46a035239564d3a54c43d353a9bcf06c84f1..edeb97cc28a883e28e44e5b1cda4d2cabaa8bc41 100644 (file)
@@ -2567,12 +2567,16 @@ ctables_table_output (struct ctables *ct, struct ctables_table *t)
     pivot_table_set_caption (
       pt, pivot_value_new_user_text (t->corner, SIZE_MAX));
 
-  bool summary_dimension = t->summary_axis != t->slabels_axis;
+  bool summary_dimension = (t->summary_axis != t->slabels_axis
+                            || (!t->slabels_visible
+                                && t->summary_specs.n > 1));
   if (summary_dimension)
     {
       struct pivot_dimension *d = pivot_dimension_create (
-        pt, t->slabels_axis, N_("Summaries"));
+        pt, t->slabels_axis, N_("Statistics"));
       const struct ctables_summary_spec_set *specs = &t->summary_specs;
+      if (!t->slabels_visible)
+        d->hide_all_labels = true;
       for (size_t i = 0; i < specs->n; i++)
         pivot_category_create_leaf (
           d->root, pivot_value_new_text (specs->specs[i].label));
@@ -2700,7 +2704,7 @@ ctables_table_output (struct ctables *ct, struct ctables_table *t)
                     }
                 }
 
-              if (a == t->slabels_axis && a == t->summary_axis)
+              if (!summary_dimension && a == t->slabels_axis)
                 {
                   levels[n_levels++] = (struct ctables_level) {
                     .type = CTL_SUMMARY,
index e8b5981b101e704dba609e51030b189465fdffe7..be67e3e56947697188ec9551e39476811257d1ea 100644 (file)
@@ -1,25 +1,25 @@
 AT_BANNER([CTABLES])
 
-AT_SETUP([CTABLES parsing])
-AT_DATA([ctables.sps],
-[[DATA LIST LIST NOTABLE /x y z.
-CTABLES /TABLE=(x + y) > z.
-CTABLES /TABLE=(x[c] + y[c]) > z.
-CTABLES /TABLE=(x + y) > z[c].
-CTABLES /TABLE=x BY y BY z.
-CTABLES /TABLE=x[c] [ROWPCT.COUNT] > y[c].
-CTABLES /TABLE=x[c] > y[c] [ROWPCT.COUNT].
-]])
-AT_CHECK([pspp ctables.sps])
-AT_CLEANUP
+AT_SETUP([CTABLES parsing])
+AT_DATA([ctables.sps],
+[[DATA LIST LIST NOTABLE /x y z.
+CTABLES /TABLE=(x + y) > z.
+CTABLES /TABLE=(x[c] + y[c]) > z.
+CTABLES /TABLE=(x + y) > z[c].
+CTABLES /TABLE=x BY y BY z.
+CTABLES /TABLE=x[c] [ROWPCT.COUNT] > y[c].
+CTABLES /TABLE=x[c] > y[c] [ROWPCT.COUNT].
+]])
+AT_CHECK([pspp ctables.sps])
+AT_CLEANUP
 
 AT_SETUP([CTABLES one categorical variable])
 AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
 AT_DATA([ctables.sps],
 [[GET 'nhtsa.sav'.
-CTABLES /TABLE QN1.
-CTABLES /TABLE BY QN1.
-CTABLES /TABLE BY BY QN1.
+CTABLES /TABLE qn1.
+CTABLES /TABLE BY qn1.
+CTABLES /TABLE BY BY qn1.
 ]])
 AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
                                   Custom Tables
@@ -60,9 +60,9 @@ AT_SETUP([CTABLES one scale variable])
 AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
 AT_DATA([ctables.sps],
 [[GET 'nhtsa.sav'.
-CTABLES /TABLE QND1[COUNT, MEAN, STDDEV, MINIMUM, MAXIMUM].
-CTABLES /TABLE BY QND1.
-CTABLES /TABLE BY BY QND1.
+CTABLES /TABLE qnd1[COUNT, MEAN, STDDEV, MINIMUM, MAXIMUM].
+CTABLES /TABLE BY qnd1.
+CTABLES /TABLE BY BY qnd1.
 ]])
 AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
                             Custom Tables
@@ -90,3 +90,391 @@ D1. AGE: What is your age?
 ╰────╯
 ])
 AT_CLEANUP
+
+AT_SETUP([CTABLES simple stacking])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[GET 'nhtsa.sav'.
+CTABLES /TABLE qn105ba + qn105bb + qn105bc + qn105bd BY qns3a [COLPCT PCT8.0].
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+                                  Custom Tables
+╭───────────────────────────────────────────────────────────────┬──────────────╮
+│                                                               │ S3a. GENDER: │
+│                                                               ├──────┬───────┤
+│                                                               │ Male │ Female│
+│                                                               ├──────┼───────┤
+│                                                               │Column│ Column│
+│                                                               │   %  │   %   │
+├───────────────────────────────────────────────────────────────┼──────┼───────┤
+│105b. How likely is it that drivers who have had   Almost      │   10%│    11%│
+│too much to drink to drive safely will A. Get      certain     │      │       │
+│stopped by the police?                             Very likely │   21%│    22%│
+│                                                   Somewhat    │   38%│    42%│
+│                                                   likely      │      │       │
+│                                                   Somewhat    │   21%│    18%│
+│                                                   unlikely    │      │       │
+│                                                   Very        │   10%│     8%│
+│                                                   unlikely    │      │       │
+├───────────────────────────────────────────────────────────────┼──────┼───────┤
+│105b. How likely is it that drivers who have had   Almost      │   14%│    18%│
+│too much to drink to drive safely will B. Have an  certain     │      │       │
+│accident?                                          Very likely │   36%│    45%│
+│                                                   Somewhat    │   39%│    32%│
+│                                                   likely      │      │       │
+│                                                   Somewhat    │    9%│     4%│
+│                                                   unlikely    │      │       │
+│                                                   Very        │    3%│     2%│
+│                                                   unlikely    │      │       │
+├───────────────────────────────────────────────────────────────┼──────┼───────┤
+│105b. How likely is it that drivers who have had   Almost      │   18%│    16%│
+│too much to drink to drive safely will C. Be       certain     │      │       │
+│convicted for drunk driving?                       Very likely │   32%│    28%│
+│                                                   Somewhat    │   27%│    32%│
+│                                                   likely      │      │       │
+│                                                   Somewhat    │   15%│    15%│
+│                                                   unlikely    │      │       │
+│                                                   Very        │    9%│     9%│
+│                                                   unlikely    │      │       │
+├───────────────────────────────────────────────────────────────┼──────┼───────┤
+│105b. How likely is it that drivers who have had   Almost      │   16%│    16%│
+│too much to drink to drive safely will D. Be       certain     │      │       │
+│arrested for drunk driving?                        Very likely │   26%│    27%│
+│                                                   Somewhat    │   32%│    35%│
+│                                                   likely      │      │       │
+│                                                   Somewhat    │   17%│    15%│
+│                                                   unlikely    │      │       │
+│                                                   Very        │    9%│     7%│
+│                                                   unlikely    │      │       │
+╰───────────────────────────────────────────────────────────────┴──────┴───────╯
+])
+AT_CLEANUP
+
+
+AT_SETUP([CTABLES simple nesting])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[GET 'nhtsa.sav'.
+CTABLES /TABLE (qn105ba + qn105bb + qn105bc + qn105bd) > qns3a [TABLEPCT PCT8.0]
+  /CATEGORIES VARIABLES=qns3a TOTAL=NO.
+CTABLES /TABLE qns3a > (qn105ba + qn105bb + qn105bc + qn105bd) [TABLEPCT PCT8.0]
+  /CATEGORIES VARIABLES=qns3a TOTAL=NO
+  /CLABELS ROW=OPPOSITE.
+]])
+dnl XXX With TOTAL=YES above, the totals get included in the denominator so that
+dnl the percentages are about half of the correct values.
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+                                  Custom Tables
+╭───────────────────────────────────────────────────────────────────────┬──────╮
+│                                                                       │ Table│
+│                                                                       │   %  │
+├───────────────────────────────────────────────────────────────────────┼──────┤
+│105b. How likely is it that drivers who     Almost      S3a.     Male  │    4%│
+│have had too much to drink to drive safely  certain     GENDER:  Female│    6%│
+│will A. Get stopped by the police?         ╶───────────────────────────┼──────┤
+│                                            Very likely S3a.     Male  │   10%│
+│                                                        GENDER:  Female│   12%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │   17%│
+│                                            likely      GENDER:  Female│   23%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │    9%│
+│                                            unlikely    GENDER:  Female│   10%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Very        S3a.     Male  │    5%│
+│                                            unlikely    GENDER:  Female│    4%│
+├───────────────────────────────────────────────────────────────────────┼──────┤
+│105b. How likely is it that drivers who     Almost      S3a.     Male  │    6%│
+│have had too much to drink to drive safely  certain     GENDER:  Female│   10%│
+│will B. Have an accident?                  ╶───────────────────────────┼──────┤
+│                                            Very likely S3a.     Male  │   16%│
+│                                                        GENDER:  Female│   25%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │   17%│
+│                                            likely      GENDER:  Female│   18%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │    4%│
+│                                            unlikely    GENDER:  Female│    2%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Very        S3a.     Male  │    1%│
+│                                            unlikely    GENDER:  Female│    1%│
+├───────────────────────────────────────────────────────────────────────┼──────┤
+│105b. How likely is it that drivers who     Almost      S3a.     Male  │    8%│
+│have had too much to drink to drive safely  certain     GENDER:  Female│    9%│
+│will C. Be convicted for drunk driving?    ╶───────────────────────────┼──────┤
+│                                            Very likely S3a.     Male  │   14%│
+│                                                        GENDER:  Female│   15%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │   12%│
+│                                            likely      GENDER:  Female│   18%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │    7%│
+│                                            unlikely    GENDER:  Female│    8%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Very        S3a.     Male  │    4%│
+│                                            unlikely    GENDER:  Female│    5%│
+├───────────────────────────────────────────────────────────────────────┼──────┤
+│105b. How likely is it that drivers who     Almost      S3a.     Male  │    7%│
+│have had too much to drink to drive safely  certain     GENDER:  Female│    9%│
+│will D. Be arrested for drunk driving?     ╶───────────────────────────┼──────┤
+│                                            Very likely S3a.     Male  │   12%│
+│                                                        GENDER:  Female│   15%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │   14%│
+│                                            likely      GENDER:  Female│   19%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Somewhat    S3a.     Male  │    8%│
+│                                            unlikely    GENDER:  Female│    8%│
+│                                           ╶───────────────────────────┼──────┤
+│                                            Very        S3a.     Male  │    4%│
+│                                            unlikely    GENDER:  Female│    4%│
+╰───────────────────────────────────────────────────────────────────────┴──────╯
+
+                                  Custom Tables
+╭─────────────────────────────────┬────────┬──────┬─────────┬─────────┬────────╮
+│                                 │ Almost │ Very │ Somewhat│ Somewhat│  Very  │
+│                                 │ certain│likely│  likely │ unlikely│unlikely│
+│                                 ├────────┼──────┼─────────┼─────────┼────────┤
+│                                 │        │ Table│         │         │        │
+│                                 │ Table %│   %  │ Table % │ Table % │ Table %│
+├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│S3a.    Male   105b. How likely  │      4%│   10%│      17%│       9%│      5%│
+│GENDER:        is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               A. Get stopped by │        │      │         │         │        │
+│               the police?       │        │      │         │         │        │
+│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│        Female 105b. How likely  │      6%│   12%│      23%│      10%│      4%│
+│               is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               A. Get stopped by │        │      │         │         │        │
+│               the police?       │        │      │         │         │        │
+├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│S3a.    Male   105b. How likely  │      6%│   16%│      17%│       4%│      1%│
+│GENDER:        is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               B. Have an        │        │      │         │         │        │
+│               accident?         │        │      │         │         │        │
+│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│        Female 105b. How likely  │     10%│   25%│      18%│       2%│      1%│
+│               is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               B. Have an        │        │      │         │         │        │
+│               accident?         │        │      │         │         │        │
+├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│S3a.    Male   105b. How likely  │      8%│   14%│      12%│       7%│      4%│
+│GENDER:        is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               C. Be convicted   │        │      │         │         │        │
+│               for drunk driving?│        │      │         │         │        │
+│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│        Female 105b. How likely  │      9%│   15%│      18%│       8%│      5%│
+│               is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               C. Be convicted   │        │      │         │         │        │
+│               for drunk driving?│        │      │         │         │        │
+├─────────────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│S3a.    Male   105b. How likely  │      7%│   12%│      14%│       8%│      4%│
+│GENDER:        is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               D. Be arrested for│        │      │         │         │        │
+│               drunk driving?    │        │      │         │         │        │
+│       ╶─────────────────────────┼────────┼──────┼─────────┼─────────┼────────┤
+│        Female 105b. How likely  │      9%│   15%│      19%│       8%│      4%│
+│               is it that drivers│        │      │         │         │        │
+│               who have had too  │        │      │         │         │        │
+│               much to drink to  │        │      │         │         │        │
+│               drive safely will │        │      │         │         │        │
+│               D. Be arrested for│        │      │         │         │        │
+│               drunk driving?    │        │      │         │         │        │
+╰─────────────────────────────────┴────────┴──────┴─────────┴─────────┴────────╯
+])
+AT_CLEANUP
+
+AT_SETUP([CTABLES nesting and scale variables])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[GET 'nhtsa.sav'.
+CTABLES /TABLE=qnd1 > qn1 BY qns3a.
+CTABLES /TABLE=qnd1 [MINIMUM, MAXIMUM, MEAN] > qns3a > (qn26 + qn27).
+CTABLES /TABLE=qnsa1 > qn105ba [COLPCT] BY qns1.
+CTABLES /TABLE=AgeGroup > qn20 [MEAN F8.1, STDDEV F8.1].
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+                                  Custom Tables
+╭─────────────────────────────────────────────────────────────────┬────────────╮
+│                                                                 │S3a. GENDER:│
+│                                                                 ├─────┬──────┤
+│                                                                 │ Male│Female│
+│                                                                 ├─────┼──────┤
+│                                                                 │ Mean│ Mean │
+├─────────────────────────────────────────────────────────────────┼─────┼──────┤
+│D1. AGE: What   1. How often do you usually drive Every day      │   46│    46│
+│is your age?   a car or other motor vehicle?      Several days a │   51│    59│
+│                                                  week           │     │      │
+│                                                  Once a week or │   44│    54│
+│                                                  less           │     │      │
+│                                                  Only certain   │   34│    41│
+│                                                  times a year   │     │      │
+│                                                  Never          │   39│    55│
+╰─────────────────────────────────────────────────────────────────┴─────┴──────╯
+
+                                  Custom Tables
+╭─────────────────────────────────────────────────────────┬───────┬───────┬────╮
+│                                                         │Minimum│Maximum│Mean│
+├─────────────────────────────────────────────────────────┼───────┼───────┼────┤
+│D1. AGE: S3a.     Male   26. During the last 12       Yes│     16│     86│  42│
+│What is  GENDER:         months, has there been a        │       │       │    │
+│your                     time when you felt you          │       │       │    │
+│age?                     should cut down on your      No │     16│     86│  46│
+│                         drinking?                       │       │       │    │
+│                 ╶───────────────────────────────────────┼───────┼───────┼────┤
+│                  Female 26. During the last 12       Yes│     16│     86│  43│
+│                         months, has there been a        │       │       │    │
+│                         time when you felt you          │       │       │    │
+│                         should cut down on your      No │     16│     86│  48│
+│                         drinking?                       │       │       │    │
+├─────────────────────────────────────────────────────────┼───────┼───────┼────┤
+│D1. AGE: S3a.     Male   27. During the last 12       Yes│     16│     86│  38│
+│What is  GENDER:         months, has there been a        │       │       │    │
+│your                     time when people criticized  No │     16│     86│  46│
+│age?                     your drinking?                  │       │       │    │
+│                 ╶───────────────────────────────────────┼───────┼───────┼────┤
+│                  Female 27. During the last 12       Yes│     17│     69│  37│
+│                         months, has there been a        │       │       │    │
+│                         time when people criticized  No │     16│     86│  48│
+│                         your drinking?                  │       │       │    │
+╰─────────────────────────────────────────────────────────┴───────┴───────┴────╯
+
+                                  Custom Tables
+╭──────────────────────────────────┬───────────────────────────────────────────╮
+│                                  │S1. Including yourself, how many members of│
+│                                  │    this household are age 16 or older?    │
+│                                  ├──────┬───────┬──────┬──────┬───────┬──────┤
+│                                  │      │       │      │      │       │ 6 or │
+│                                  │   1  │   2   │   3  │   4  │   5   │ more │
+│                                  ├──────┼───────┼──────┼──────┼───────┼──────┤
+│                                  │Column│ Column│Column│Column│ Column│Column│
+│                                  │   %  │   %   │   %  │   %  │   %   │   %  │
+├──────────────────────────────────┼──────┼───────┼──────┼──────┼───────┼──────┤
+│Sa1.     RDD 105b. How    Almost  │  9.5%│   8.2%│ 12.4%│  9.9%│  20.0%│ 23.8%│
+│SAMPLE       likely is it certain │      │       │      │      │       │      │
+│SOURCE:      that drivers Very    │ 24.9%│  18.5%│ 24.0%│ 26.6%│  25.5%│ 33.3%│
+│             who have had likely  │      │       │      │      │       │      │
+│             too much to  Somewhat│ 38.3%│  41.9%│ 38.6%│ 37.5%│  36.4%│ 23.8%│
+│             drink to     likely  │      │       │      │      │       │      │
+│             drive safely Somewhat│ 18.1%│  21.7%│ 16.8%│ 16.7%│  10.9%│  9.5%│
+│             will A. Get  unlikely│      │       │      │      │       │      │
+│             stopped by   Very    │  9.2%│   9.7%│  8.2%│  9.4%│   7.3%│  9.5%│
+│             the police?  unlikely│      │       │      │      │       │      │
+╰──────────────────────────────────┴──────┴───────┴──────┴──────┴───────┴──────╯
+
+                                  Custom Tables
+╭──────────────────────────────────────────────────────────────┬────┬──────────╮
+│                                                              │    │    Std   │
+│                                                              │Mean│ Deviation│
+├──────────────────────────────────────────────────────────────┼────┼──────────┤
+│Age    16 to 25 20. On how many of the thirty days in this    │ 5.2│       6.0│
+│group           typical month did you have one or more        │    │          │
+│                alcoholic beverages to drink?                 │    │          │
+│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
+│       26 to 35 20. On how many of the thirty days in this    │ 4.7│       5.9│
+│                typical month did you have one or more        │    │          │
+│                alcoholic beverages to drink?                 │    │          │
+│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
+│       36 to 45 20. On how many of the thirty days in this    │ 5.5│       6.8│
+│                typical month did you have one or more        │    │          │
+│                alcoholic beverages to drink?                 │    │          │
+│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
+│       46 to 55 20. On how many of the thirty days in this    │ 5.8│       7.7│
+│                typical month did you have one or more        │    │          │
+│                alcoholic beverages to drink?                 │    │          │
+│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
+│       56 to 65 20. On how many of the thirty days in this    │ 6.3│       8.2│
+│                typical month did you have one or more        │    │          │
+│                alcoholic beverages to drink?                 │    │          │
+│      ╶───────────────────────────────────────────────────────┼────┼──────────┤
+│       66 or    20. On how many of the thirty days in this    │ 7.1│       9.2│
+│       older    typical month did you have one or more        │    │          │
+│                alcoholic beverages to drink?                 │    │          │
+╰──────────────────────────────────────────────────────────────┴────┴──────────╯
+])
+AT_CLEANUP
+
+
+AT_SETUP([CTABLES SLABELS])
+AT_CHECK([ln $top_srcdir/examples/nhtsa.sav . || cp $top_srcdir/examples/nhtsa.sav .])
+AT_DATA([ctables.sps],
+[[GET 'nhtsa.sav'.
+CTABLES /TABLE qn1 [COUNT COLPCT].
+CTABLES /TABLE qn1 [COUNT COLPCT]
+    /SLABELS POSITION=ROW.
+CTABLES /TABLE qn1 [COUNT COLPCT]
+    /SLABELS POSITION=ROW VISIBLE=NO.
+]])
+AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl
+                                  Custom Tables
+╭────────────────────────────────────────────────────────────────┬─────┬───────╮
+│                                                                │     │ Column│
+│                                                                │Count│   %   │
+├────────────────────────────────────────────────────────────────┼─────┼───────┤
+│ 1. How often do you usually drive a car or  Every day          │ 4667│  66.9%│
+│other motor vehicle?                         Several days a week│ 1274│  18.3%│
+│                                             Once a week or less│  361│   5.2%│
+│                                             Only certain times │  130│   1.9%│
+│                                             a year             │     │       │
+│                                             Never              │  540│   7.7%│
+╰────────────────────────────────────────────────────────────────┴─────┴───────╯
+
+                                  Custom Tables
+╭────────────────────────────────────────────────────────────────────────┬─────╮
+│ 1. How often do you usually drive a car or  Every day           Count  │ 4667│
+│other motor vehicle?                                             Column │66.9%│
+│                                                                 %      │     │
+│                                            ╶───────────────────────────┼─────┤
+│                                             Several days a week Count  │ 1274│
+│                                                                 Column │18.3%│
+│                                                                 %      │     │
+│                                            ╶───────────────────────────┼─────┤
+│                                             Once a week or less Count  │  361│
+│                                                                 Column │ 5.2%│
+│                                                                 %      │     │
+│                                            ╶───────────────────────────┼─────┤
+│                                             Only certain times  Count  │  130│
+│                                             a year              Column │ 1.9%│
+│                                                                 %      │     │
+│                                            ╶───────────────────────────┼─────┤
+│                                             Never               Count  │  540│
+│                                                                 Column │ 7.7%│
+│                                                                 %      │     │
+╰────────────────────────────────────────────────────────────────────────┴─────╯
+
+                                  Custom Tables
+╭────────────────────────────────────────────────────────────────────────┬─────╮
+│ 1. How often do you usually drive a car or other  Every day            │ 4667│
+│motor vehicle?                                                          │66.9%│
+│                                                   Several days a week  │ 1274│
+│                                                                        │18.3%│
+│                                                   Once a week or less  │  361│
+│                                                                        │ 5.2%│
+│                                                   Only certain times a │  130│
+│                                                   year                 │ 1.9%│
+│                                                   Never                │  540│
+│                                                                        │ 7.7%│
+╰────────────────────────────────────────────────────────────────────────┴─────╯
+])
+AT_CLEANUP