X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Fcontrol%2Fdo-repeat.at;h=22ffaa90a5f5c2c5ccd75f6f9096855e30ed2c92;hb=578bc59e7ec144bc8424e9a58807a791314cc0e8;hp=8f300dc95ea265d178c499603ce1b45f0aeea5b5;hpb=d6e4461802aa4bcc06a457c3419d544117c1df90;p=pspp diff --git a/tests/language/control/do-repeat.at b/tests/language/control/do-repeat.at index 8f300dc95e..22ffaa90a5 100644 --- a/tests/language/control/do-repeat.at +++ b/tests/language/control/do-repeat.at @@ -1,6 +1,115 @@ +dnl PSPP - a program for statistical analysis. +dnl Copyright (C) 2017 Free Software Foundation, Inc. +dnl +dnl This program is free software: you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation, either version 3 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program. If not, see . +dnl AT_BANNER([DO REPEAT]) -AT_SETUP([DO REPEAT -- ordinary]) +AT_SETUP([DO REPEAT -- simple]) +AT_DATA([do-repeat.sps], [dnl +INPUT PROGRAM. +STRING y(A1). +DO REPEAT xval = 1 2 3 / yval = 'a' 'b' 'c' / var = a b c. +COMPUTE x=xval. +COMPUTE y=yval. +COMPUTE var=xval. +END CASE. +END REPEAT. +END FILE. +END INPUT PROGRAM. +LIST. +]) +AT_CHECK([pspp -o pspp.csv do-repeat.sps]) +AT_CHECK([cat pspp.csv], [0], [dnl +Table: Data List +y,x,a,b,c +a,1.00,1.00,. ,. @&t@ +b,2.00,. ,2.00,. @&t@ +c,3.00,. ,. ,3.00 +]) +AT_CLEANUP + +AT_SETUP([DO REPEAT -- containing BEGIN DATA]) +AT_DATA([do-repeat.sps], [dnl +DO REPEAT offset = 1 2 3. +DATA LIST NOTABLE /x 1-2. +BEGIN DATA. +10 +20 +30 +END DATA. +COMPUTE x = x + offset. +LIST. +END REPEAT. +]) +AT_CHECK([pspp -o pspp.csv do-repeat.sps]) +AT_CHECK([cat pspp.csv], [0], [dnl +Table: Data List +x +11 +21 +31 + +Table: Data List +x +12 +22 +32 + +Table: Data List +x +13 +23 +33 +]) +AT_CLEANUP + +AT_SETUP([DO REPEAT -- dummy vars not expanded in include files]) +AT_DATA([include.sps], [dnl +COMPUTE y = y + x + 10. +]) +AT_DATA([do-repeat.sps], [dnl +INPUT PROGRAM. +COMPUTE x = 0. +COMPUTE y = 0. +END CASE. +END FILE. +END INPUT PROGRAM. + +DO REPEAT x = 1 2 3. +INCLUDE include.sps. +END REPEAT. + +LIST. +]) +AT_CHECK([pspp -o pspp.csv do-repeat.sps], [0], [dnl +do-repeat.sps:8.11: warning: DO REPEAT: Dummy variable name `x' hides dictionary variable `x'. + 8 | DO REPEAT x = 1 2 3. + | ^ +]) +AT_CHECK([cat pspp.csv], [0], [dnl +"do-repeat.sps:8.11: warning: DO REPEAT: Dummy variable name `x' hides dictionary variable `x'. + 8 | DO REPEAT x = 1 2 3. + | ^" + +Table: Data List +x,y +.00,30.00 +]) +AT_CLEANUP + +AT_SETUP([DO REPEAT -- nested]) AT_DATA([do-repeat.sps], [dnl DATA LIST NOTABLE /a 1. BEGIN DATA. @@ -47,3 +156,15 @@ AT_CHECK([pspp -o pspp.csv do-repeat.sps]) AT_CHECK([cat pspp.csv], [0], [dnl ]) AT_CLEANUP + +dnl This program tests for a bug that crashed PSPP when END REPEAT +dnl was missing. See bug #31016. +AT_SETUP([DO REPEAT -- missing END REPEAT]) +AT_DATA([do-repeat.sps], [dnl +DATA LIST NOTABLE /x 1. +DO REPEAT y = 1 TO 10. +]) +AT_CHECK([pspp -O format=csv do-repeat.sps], [1], [dnl +error: DO REPEAT: At end of input: Syntax error expecting END. +]) +AT_CLEANUP