public void Should_Convert_Collection()
        {
            var responses = new Fixture().CreateMany<TestObject>().ToList();
            var objectConverter = new PartialObjectConverter();
            var responseObject = objectConverter.ConvertToExpandoObject(responses,
                new PartialObjectDefinition()
                {
                    Properties = new Dictionary<string, PartialObjectDefinition>()
                    {
                        {"Birthday", null},
                        {"Integer", null},
                        {"NullableDouble", null},
                        {"NullableBirthday", null},
                        {
                            "NestedObject",
                            new PartialObjectDefinition()
                            {
                                Properties = new Dictionary<string, PartialObjectDefinition>()
                                {
                                    {"Birthday", null},
                                    {"Integer", null}
                                }
                            }
                        },
                        {
                            "ListObjects", new PartialObjectDefinition()
                            {
                                Properties = new Dictionary<string, PartialObjectDefinition>()
                                {
                                    {"OtherProperty", null}
                                }
                            }
                        }
                    }
                });

            var responseList = ((IList<object>) responseObject).ToList();
            Assert.AreEqual(responses.Count(), responseList.Count);

            for (int i = 0; i < responseList.Count; i++)
            {
                var response = responses.ElementAt(i);
                var resultObject = responseList.ElementAt(i) as IDictionary<string, object>;
                // check the nested object
                var nestObjectDict = resultObject["NestedObject"] as IDictionary<string, object>;
                Assert.IsNotNull(nestObjectDict);
                Assert.AreEqual(4, nestObjectDict.Keys.Count);
                Assert.AreEqual(response.NestedObject.TestObject2Id, nestObjectDict["TestObject2Id"]);
                Assert.AreEqual(response.NestedObject.URI, nestObjectDict["URI"]);
                Assert.AreEqual(response.NestedObject.Birthday, nestObjectDict["Birthday"]);
                Assert.AreEqual(response.NestedObject.Integer, nestObjectDict["Integer"]);

                // check the listed object
                var listObjects = resultObject["ListObjects"] as ICollection<object>;
                Assert.IsNotNull(listObjects);
                Assert.AreEqual(response.ListObjects.Count, listObjects.Count);
                for (int j = 0; j < listObjects.Count; j++)
                {
                    var convertedElement = listObjects.ElementAt(i) as IDictionary<string, object>;
                    Assert.AreEqual(response.ListObjects[i].TestObject3Id, convertedElement["TestObject3Id"]);
                    Assert.AreEqual(response.ListObjects[i].URI, convertedElement["URI"]);
                    Assert.AreEqual(response.ListObjects[i].OtherProperty, convertedElement["OtherProperty"]);

                }
            }
        }