public void Row_TryConvertToType_Should_Convert_Nested_Collections() { var setTypeInfo = new CqlColumn { TypeCode = ColumnTypeCode.Set, TypeInfo = new SetColumnInfo { KeyTypeCode = ColumnTypeCode.Set, KeyTypeInfo = new SetColumnInfo { KeyTypeCode = ColumnTypeCode.Int } } }; var listTypeInfo = new CqlColumn { TypeCode = ColumnTypeCode.List, TypeInfo = new ListColumnInfo { ValueTypeCode = ColumnTypeCode.Set, ValueTypeInfo = new SetColumnInfo { KeyTypeCode = ColumnTypeCode.Timeuuid } } }; var values = new[] { Tuple.Create((IEnumerable) new [] { new Guid[] { TimeUuid.NewId() } }, listTypeInfo, typeof(TimeUuid[][])), Tuple.Create((IEnumerable) new [] { new [] { Guid.NewGuid() } }, listTypeInfo, typeof(Guid[][])), Tuple.Create((IEnumerable) new [] { new Guid[] { TimeUuid.NewId() } }, listTypeInfo, typeof(SortedSet <TimeUuid>[])), Tuple.Create((IEnumerable) new [] { new [] { Guid.NewGuid() } }, listTypeInfo, typeof(HashSet <Guid>[])), Tuple.Create((IEnumerable) new [] { new [] { 314 } }, setTypeInfo, typeof(HashSet <int>[])), Tuple.Create((IEnumerable) new [] { new [] { 213 } }, setTypeInfo, typeof(int[][])), Tuple.Create((IEnumerable) new [] { new [] { 111 } }, setTypeInfo, typeof(SortedSet <SortedSet <int> >)) }; foreach (var item in values) { var value = Row.TryConvertToType(item.Item1, item.Item2, item.Item3); Assert.True(item.Item3.GetTypeInfo().IsInstanceOfType(value), "{0} is not assignable from {1}", item.Item3, value.GetType()); Assert.AreEqual(TestHelper.FirstString(item.Item1), TestHelper.FirstString((IEnumerable)value)); } }
public void Row_TryConvertToType_Should_Convert_Dictionaries() { var mapTypeInfo1 = new CqlColumn { TypeCode = ColumnTypeCode.Map, TypeInfo = new MapColumnInfo { KeyTypeCode = ColumnTypeCode.Timeuuid, ValueTypeCode = ColumnTypeCode.Set, ValueTypeInfo = new SetColumnInfo { KeyTypeCode = ColumnTypeCode.Int } } }; var values = new[] { Tuple.Create( (IDictionary) new SortedDictionary <Guid, IEnumerable <int> > { { Guid.NewGuid(), new[] { 1, 2, 3 } } }, mapTypeInfo1, typeof(SortedDictionary <Guid, IEnumerable <int> >)), Tuple.Create( (IDictionary) new SortedDictionary <Guid, IEnumerable <int> > { { TimeUuid.NewId(), new[] { 1, 2, 3 } } }, mapTypeInfo1, typeof(IDictionary <TimeUuid, int[]>)) }; foreach (var item in values) { var value = Row.TryConvertToType(item.Item1, item.Item2, item.Item3); Assert.True(item.Item3.GetTypeInfo().IsInstanceOfType(value), "{0} is not assignable from {1}", item.Item3, value.GetType()); Assert.AreEqual(TestHelper.FirstString(item.Item1), TestHelper.FirstString((IEnumerable)value)); } }