private IInputTableBuilder <TRow> Add <TValue>(string columnName, Func <TRow, TValue> columnExpression) { AddCustomColumn(new InputTableColumn( columnName, row => ColumnValue.From(columnExpression((TRow)row)))); return(this); }
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)); }
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); }
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; })); } }
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)); }
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)); }