public void TestMailMergeGetRegionsHierarchy()
{
//ExStart
//ExFor:MailMerge.GetRegionsHierarchy
//ExFor:MailMergeRegionInfo.Regions
//ExFor:MailMergeRegionInfo.Name
//ExFor:MailMergeRegionInfo.Fields
//ExFor:MailMergeRegionInfo.StartField
//ExFor:MailMergeRegionInfo.EndField
//ExFor:MailMergeRegionInfo.Level
//ExSummary:Shows how to get MailMergeRegionInfo and work with it
Document doc = new Document(MyDir+ "MailMerge.TestRegionsHierarchy.doc");
//Returns a full hierarchy of regions (with fields) available in the document.
MailMergeRegionInfo regionInfo = doc.MailMerge.GetRegionsHierarchy();
//Get top regions in the document
ArrayList topRegions = regionInfo.Regions;
Assert.AreEqual(2, topRegions.Count);
Assert.AreEqual(((MailMergeRegionInfo)topRegions[0]).Name, "Region1");
Assert.AreEqual(((MailMergeRegionInfo)topRegions[1]).Name, "Region2");
Assert.AreEqual(1, ((MailMergeRegionInfo)topRegions[0]).Level);
Assert.AreEqual(1, ((MailMergeRegionInfo)topRegions[1]).Level);
//Get nested region in first top region
ArrayList nestedRegions = ((MailMergeRegionInfo)topRegions[0]).Regions;
Assert.AreEqual(2, nestedRegions.Count);
Assert.AreEqual(((MailMergeRegionInfo)nestedRegions[0]).Name, "NestedRegion1");
Assert.AreEqual(((MailMergeRegionInfo)nestedRegions[1]).Name, "NestedRegion2");
Assert.AreEqual(2, ((MailMergeRegionInfo)nestedRegions[0]).Level);
Assert.AreEqual(2, ((MailMergeRegionInfo)nestedRegions[1]).Level);
//Get field list in first top region
ArrayList fieldList = ((MailMergeRegionInfo)topRegions[0]).Fields;
Assert.AreEqual(4, fieldList.Count);
FieldMergeField startFieldMergeField = ((MailMergeRegionInfo)nestedRegions[0]).StartField;
Assert.AreEqual("TableStart:NestedRegion1", startFieldMergeField.FieldName);
FieldMergeField endFieldMergeField = ((MailMergeRegionInfo)nestedRegions[0]).EndField;
Assert.AreEqual("TableEnd:NestedRegion1", endFieldMergeField.FieldName);
//ExEnd
}