changing enum argument checking to use Enum.IsDefined
adding tests to ensure that all invalid enum values are caught
removing unneeded test