X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=tests%2Flanguage%2Fdata-io%2Finpt-pgm.at;h=1c61d52fe73caa922f59b1cde5ffd67c3efe250a;hb=a208fcf0dcdcc445dd7d492e00ebdf3ce23e247f;hp=f676e308bb5b72b91040201d6395675513b015c9;hpb=facb4a1ad3c9e8b2cdf55824680eed2afb91aebe;p=pspp diff --git a/tests/language/data-io/inpt-pgm.at b/tests/language/data-io/inpt-pgm.at index f676e308bb..1c61d52fe7 100644 --- a/tests/language/data-io/inpt-pgm.at +++ b/tests/language/data-io/inpt-pgm.at @@ -28,7 +28,9 @@ END DATA. END INPUT PROGRAM. ]) AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl -input-program.sps:3: error: BEGIN DATA: BEGIN DATA is not allowed inside INPUT PROGRAM. +"input-program.sps:3.1-3.10: error: BEGIN DATA: BEGIN DATA is not allowed inside INPUT PROGRAM. + 3 | BEGIN DATA + | ^~~~~~~~~~" ]) AT_CLEANUP @@ -44,7 +46,7 @@ END INPUT PROGRAM. DESCRIPTIVES x. ]) AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl -error: DESCRIPTIVES: Syntax error at end of input: expecting BEGIN. +error: DESCRIPTIVES: At end of input: Syntax error expecting `BEGIN DATA'. ]) AT_CLEANUP @@ -57,9 +59,14 @@ END INPUT PROGRAM. EXECUTE. ]) AT_CHECK([pspp -O format=csv input-program.sps], [1], [dnl -input-program.sps:3: error: INPUT PROGRAM: Input program must contain DATA LIST or END FILE. +"input-program.sps:1.1-3.17: error: INPUT PROGRAM: Input program does not contain DATA LIST or END FILE. + 1 | INPUT PROGRAM. + 2 | STRING firstname lastname (a24) / address (a80). + 3 | END INPUT PROGRAM." -input-program.sps:4: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined. +"input-program.sps:4.1-4.7: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined. + 4 | EXECUTE. + | ^~~~~~~" ]) AT_CLEANUP @@ -96,3 +103,252 @@ vec1,vec2,vec3,vec4,vec5 1.00,2.00,3.00,4.00,5.00 ]) AT_CLEANUP + +AT_SETUP([INPUT PROGRAM taking shorter of two files]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. + DATA LIST NOTABLE FILE='a.txt'/X 1-10. + DATA LIST NOTABLE FILE='b.txt'/Y 1-10. +END INPUT PROGRAM. +LIST. +]) +AT_DATA([short.txt], [dnl +1 +2 +3 +]) +AT_DATA([long.txt], [dnl +4 +5 +6 +7 +]) + +cp short.txt a.txt +cp long.txt b.txt +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X,Y +1,4 +2,5 +3,6 +]) + +cp short.txt b.txt +cp long.txt a.txt +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X,Y +4,1 +5,2 +6,3 +]) +AT_CLEANUP + +AT_SETUP([INPUT PROGRAM taking longer of two files]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. + NUMERIC #A #B. + + DO IF NOT #A. + DATA LIST NOTABLE END=#A FILE='a.txt'/X 1-10. + END IF. + DO IF NOT #B. + DATA LIST NOTABLE END=#B FILE='b.txt'/Y 1-10. + END IF. + DO IF #A AND #B. + END FILE. + END IF. + END CASE. +END INPUT PROGRAM. +LIST. +]) +AT_DATA([short.txt], [dnl +1 +2 +3 +]) +AT_DATA([long.txt], [dnl +4 +5 +6 +7 +8 +]) + +cp short.txt a.txt +cp long.txt b.txt +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X,Y +1,4 +2,5 +3,6 +.,7 +.,8 +]) + +cp short.txt b.txt +cp long.txt a.txt +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X,Y +4,1 +5,2 +6,3 +7,. +8,. +]) +AT_CLEANUP + +AT_SETUP([INPUT PROGRAM concatenating two files - version 1]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. + NUMERIC #A #B. + + DO IF #A. + DATA LIST NOTABLE END=#B FILE='b.txt'/X 1-10. + DO IF #B. + END FILE. + ELSE. + END CASE. + END IF. + ELSE. + DATA LIST NOTABLE END=#A FILE='a.txt'/X 1-10. + DO IF NOT #A. + END CASE. + END IF. + END IF. +END INPUT PROGRAM. +LIST. +]) +AT_DATA([a.txt], [dnl +1 +2 +3 +]) +AT_DATA([b.txt], [dnl +4 +5 +6 +7 +8 +]) + +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X +1 +2 +3 +4 +5 +6 +7 +8 +]) +AT_CLEANUP + +AT_SETUP([INPUT PROGRAM concatenating two files - version 2]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. + NUMERIC #EOF. + + LOOP IF NOT #EOF. + DATA LIST NOTABLE END=#EOF FILE='a.txt'/X 1-10. + DO IF NOT #EOF. + END CASE. + END IF. + END LOOP. + + COMPUTE #EOF = 0. + LOOP IF NOT #EOF. + DATA LIST NOTABLE END=#EOF FILE='b.txt'/X 1-10. + DO IF NOT #EOF. + END CASE. + END IF. + END LOOP. + + END FILE. +END INPUT PROGRAM. +LIST. +]) +AT_DATA([a.txt], [dnl +1 +2 +3 +]) +AT_DATA([b.txt], [dnl +4 +5 +6 +7 +8 +]) + +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X +1 +2 +3 +4 +5 +6 +7 +8 +]) +AT_CLEANUP + +AT_SETUP([INPUT PROGRAM generating data]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. + LOOP #I=1 TO 10. + COMPUTE X=#I. + END CASE. + END LOOP. + END FILE. +END INPUT PROGRAM. +FORMAT X(F2). +LIST. +]) +AT_CHECK([pspp -O format=csv input-program.sps], 0, [dnl +Table: Data List +X +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +]) +AT_CLEANUP + +AT_SETUP([INPUT PROGRAM unexpected end of file]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. +]) +AT_CHECK([pspp input-program.sps], 1, [dnl +error: INPUT PROGRAM: Unexpected end-of-file within INPUT PROGRAM. +]) +AT_CLEANUP + + +AT_SETUP([INPUT PROGRAM no variables]) +AT_DATA([input-program.sps], [dnl +INPUT PROGRAM. +END FILE. +END INPUT PROGRAM. +]) +AT_CHECK([pspp input-program.sps], 1, [dnl +input-program.sps:1.1-3.17: error: INPUT PROGRAM: Input program did not create +any variables. + 1 | INPUT PROGRAM. + 2 | END FILE. + 3 | END INPUT PROGRAM. +]) +AT_CLEANUP \ No newline at end of file