One would think that calling CContact.NewAddress("somePurpose") would give you a CAddress with the purpose you specified. However, that is not the case. The following NUnit demo passes:
[Test, Explicit("Just a demonstration of weird iMIS behavior.")]
public void Demo_NewAddressDoesNotSetPurpose()
{
var imisContact = new CContact(user)
{
Prefix = Prefix,
FirstName = FirstName,
MiddleName = MiddleName,
LastName = LastName,
Suffix = Suffix
};
var address = imisContact.NewAddress(TestAddressPurpose);
var actualPurpose = address.AddressPurpose;
Assert.IsEmpty(actualPurpose);
}