示例#2
0
        private IInputTableBuilder <TRow> Add <TValue>(string columnName, Func <TRow, TValue> columnExpression)
        {
            AddCustomColumn(new InputTableColumn(
                                columnName,
                                row => ColumnValue.From(columnExpression((TRow)row))));

            return(this);
        }
示例#3
0
        public void From_should_return_initialized_column_value(object value, string expectedFormat)
        {
            var columnValue = ColumnValue.From(value);

            Assert.AreEqual(value, columnValue.Value);
            Assert.IsTrue(columnValue.HasValue);
            Assert.AreEqual(expectedFormat, columnValue.ToString());
            Assert.AreEqual(expectedFormat, columnValue.Format(ValueFormattingServices.Current));
        }
示例#4
0
        private IVerifiableDataTableBuilder <TRow> Add <TValue>(string columnName, bool isKey, Func <TRow, TValue> columnExpression, Func <TValue, IExpectation <TValue> > expectationFn)
        {
            AddCustomColumn(new VerifiableTableColumn(
                                columnName,
                                isKey,
                                row => ColumnValue.From(columnExpression((TRow)row)),
                                value => expectationFn((TValue)value).CastFrom(Expect.Type <object>())));

            return(this);
        }
示例#7
0
        private static IEnumerable <ColumnInfo> AsCollection <TRow>(TRow[] rows, bool addLengthToCollections)
        {
            if (addLengthToCollections)
            {
                yield return(new ColumnInfo("Length", row => row != null ? ColumnValue.From(((IList)row).Count) : ColumnValue.None));
            }

            var totalColumns = rows.Cast <IList>().Aggregate(0, (max, col) => Math.Max(max, col.Count));

            for (var i = 0; i < totalColumns; ++i)
            {
                var index = i;
                yield return(new ColumnInfo($"[{i}]", row =>
                {
                    var collection = (IList)row;
                    return collection.Count > index ? ColumnValue.From(collection[index]) : ColumnValue.None;
                }));
            }
        }
示例#8
0
 private static IOrderedEnumerable <ColumnInfo> AsExpandoColumns <TRow>(IEnumerable <TRow> rows)
 {
     return(rows.Cast <IDictionary <string, object> >()
            .SelectMany(r => r.Keys)
            .Distinct()
            .Select(name => new ColumnInfo(name, row => ((IDictionary <string, object>)row).TryGetValue(name, out var value) ? ColumnValue.From(value) : ColumnValue.None))
            .OrderBy(x => x.Name));
 }
示例#9
0
 private static IEnumerable <ColumnInfo> AsPoco(Type type)
 {
     return(GetProperties(type)
            .Select(property => new ColumnInfo(property.Name, r => r != null ? ColumnValue.From(property.GetValue(r)) : ColumnValue.None))
            .Concat(GetFields(type)
                    .Select(field => new ColumnInfo(field.Name, r => r != null ? ColumnValue.From(field.GetValue(r)) : ColumnValue.None)))
            .OrderBy(x => x.Name));
 }