Due to the nature of the program and it's use of regular expressions, this section performed as expected. Unfortunately the only way to fully test user input was through manual input. This meant inputting each possible combination of each command correctly to prove that all allowed commands were recognised as such. I also tested injecting invalid input to be certain that CsvSQL would recognise an incorrect command and respond with an appropriate error. Further to this I checked any commands which might depend on factors outside of the programs control, such as incorrect file names and directory paths in both SQL and non-SQL commands.
The program was also tested using Perl's special variable characters. To test this I entered Perl wildcard characters in both user commands and CSV files, and recorded how CsvSQL responded. In all cases the characters were caught by the program and dealt with according to where in a statement the error occured.
The results of user input validation testing was that CsvSQL performed as expected. The program caught all errors, and correctly validated all commands.