public void MemberExportCustomization() { var calls = new ArrayList(); var logicalType = new TestTypeDescriptor(); var properties = logicalType.GetProperties(); var memexp1 = new TestObjectMemberExporter(calls); var services = new Hashtable { [typeof(IObjectMemberExporter)] = memexp1 }; properties.Add(new TestPropertyDescriptor("prop1", services)); var memexp2 = new TestObjectMemberExporter(calls); services = new Hashtable { [typeof(IObjectMemberExporter)] = memexp2 }; properties.Add(new TestPropertyDescriptor("prop2", services)); var exporter = new ComponentExporter(typeof(Thing), logicalType); var context = new ExportContext(); context.Register(exporter); var writer = new JsonRecorder(); var thing = new Thing(); context.Export(thing, writer); Assert.AreEqual(2, calls.Count); object[] args = { context, writer, thing }; Assert.AreSame(memexp1, calls[0]); Assert.AreEqual(args, ((TestObjectMemberExporter)calls[0]).ExportArgs); Assert.AreSame(memexp2, calls[1]); Assert.AreEqual(args, ((TestObjectMemberExporter)calls[1]).ExportArgs); }
public void MemberExportCustomization() { ArrayList calls = new ArrayList(); TestTypeDescriptor logicalType = new TestTypeDescriptor(); PropertyDescriptorCollection properties = logicalType.GetProperties(); Hashtable services; TestObjectMemberExporter memexp1 = new TestObjectMemberExporter(calls); services = new Hashtable(); services.Add(typeof(IObjectMemberExporter), memexp1); properties.Add(new TestPropertyDescriptor("prop1", services)); TestObjectMemberExporter memexp2 = new TestObjectMemberExporter(calls); services = new Hashtable(); services.Add(typeof(IObjectMemberExporter), memexp2); properties.Add(new TestPropertyDescriptor("prop2", services)); ComponentExporter exporter = new ComponentExporter(typeof(Thing), logicalType); ExportContext context = new ExportContext(); context.Register(exporter); JsonRecorder writer = new JsonRecorder(); Thing thing = new Thing(); context.Export(thing, writer); Assert.AreEqual(2, calls.Count); object[] args = { context, writer, thing }; Assert.AreSame(memexp1, calls[0]); Assert.AreEqual(args, ((TestObjectMemberExporter) calls[0]).ExportArgs); Assert.AreSame(memexp2, calls[1]); Assert.AreEqual(args, ((TestObjectMemberExporter) calls[1]).ExportArgs); }
public void MemberExportCustomization() { TestObjectMemberExporter memberExporter = new TestObjectMemberExporter(); Hashtable services = new Hashtable(); services.Add(typeof(IObjectMemberExporter), memberExporter); TestTypeDescriptor logicalType = new TestTypeDescriptor(); PropertyDescriptorCollection properties = logicalType.GetProperties(); properties.Add(new TestPropertyDescriptor("prop", services)); ComponentExporter exporter = new ComponentExporter(typeof(Thing), logicalType); ExportContext context = new ExportContext(); context.Register(exporter); JsonRecorder writer = new JsonRecorder(); Thing thing = new Thing(); context.Export(thing, writer); Assert.AreSame(context, memberExporter.ExportContext); Assert.AreSame(writer, memberExporter.ExportWriter); Assert.AreSame(thing, memberExporter.ExportSource); }