I also adding test cases for Array and HashTable arguments. If you have any preference on style or conventions you would like changed, let me know. There's a case for not having the KeyValueArgument class (or having it inherit from NamedArgument) that I put in. NamedArgument with the constructor overload that passes in the Format can just as easily replace KeyValueArgument, but I decided to make it a separate class, so that each class can have its own identity and not be tethered to purposes other than their original intended purpose.
I also adding test cases for Array and HashTable arguments. If you have any preference on style or conventions you would like changed, let me know. There's a case for not having the KeyValueArgument class (or having it inherit from NamedArgument) that I put in. NamedArgument with the constructor overload that passes in the Format can just as easily replace KeyValueArgument, but I decided to make it a separate class, so that each class can have its own identity and not be tethered to purposes other than their original intended purpose.