コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }