]> git.draconx.ca Git - cdecl99.git/blobdiff - tests/internal.at
libcdecl: Fix scanning of hexadecimal constants.
[cdecl99.git] / tests / internal.at
index 9012c156d1d21314a2dafa8dc4e98474d503e95d..ee87919076a85f28398c396680f1f90226cb0749 100644 (file)
@@ -73,3 +73,77 @@ AT_CLEANUP
 
 TEST_TAP_SIMPLE([cdecl__err sanity], [cdeclerr],
   [TEST_NEED_PROGRAM([cdeclerr])], [libcdecl internal])
+
+AT_SETUP([cdecl_declare truncation])
+AT_KEYWORDS([libcdecl internal])
+
+AT_DATA([input],
+[[int hello_world
+int x[1234567890]
+]])
+
+AT_CHECK([rendertest -n 0 <input], [0],
+[[15
+17
+]])
+
+AT_CHECK([rendertest -n 10 <input], [0],
+[[15 int hello
+17 int x@<:@123
+]])
+
+AT_CLEANUP
+
+AT_SETUP([cdecl_explain truncation])
+AT_KEYWORDS([libcdecl internal])
+
+AT_DATA([input],
+[[declare x as int
+type array 123456789 of int
+]])
+
+AT_CHECK([rendertest --english -n 0 <input], [0],
+[[16
+27
+]])
+
+AT_CHECK([rendertest --english -n 15 <input], [0],
+[[16 declare x as i
+27 type array 123
+]])
+
+AT_CLEANUP
+
+AT_SETUP([cdecl__yylex integer constants])
+
+AT_CHECK([scantest \
+  '0 000 0x00 0X00' \
+  '1234 01234 0x1234 0X1234' \
+  '4294967295 037777777777 0xffffffff 0XFFFFFFFF' \
+  09 012345678 0x 0X], [0],
+[[integer constant 0
+integer constant 0
+integer constant 0
+integer constant 0
+eof
+integer constant 1234
+integer constant 668
+integer constant 4660
+integer constant 4660
+eof
+integer constant 4294967295
+integer constant 4294967295
+integer constant 4294967295
+integer constant 4294967295
+eof
+T_LEX_ERROR
+eof
+T_LEX_ERROR
+eof
+T_LEX_ERROR
+eof
+T_LEX_ERROR
+eof
+]])
+
+AT_CLEANUP