Implemented ZipCode value type representing US ZIP code. Covered ZipCode value type by unit tests.
Fixed some unit tests and argument check behavior for USState and Country value types.
Added IsBlank property to USState and Country value types. Implemented additional unit tests covered Country and USState blank instances.
Made State and Country properties of USMailAddress and ForeignMailAddress classes respectively as not nullable. Replaced string ZipCode property of USMailAddress class with the appropriate ZipCode value type.
Renamed IsEquvalentOf string extension method to IsEquivalentTo. Updated all refs.
Corrected refs to IsEquivalentTo method in comments.
Renamed MailAddress, USMailAddress, ForeignMailAddress classes to PostalAddress, USPostalAddress, ForeignPostalAddress respectively. Updated all refs and unit tests for renamed classes.
Removed StateCode property from USPostalAddress class preventing conflicts with State property. Updated unit tests for USPostalAddress class.
Removed CountryCode property from ForeignPostalAddress class preventing conflicts with Country property. Updated unit tests for ForeignPostalAddress class.
Cleaned up USPostalAddress and ForeignPostalAddress unit tests.
Renamed Address property to MailingAddress in test Customer class. Updated all refs to the renamed property.
Replaced the type of MailingAddress property in Customer mock class from Address to ForeignPostalAddress. Fixed broken unit tests.
Implemented the additional check for IsBlank property in presense validator.
Removed Country mock value type replacing it with the actual Country business domain object.