public void Successful() { var o = new object(); var result = RowParserResult.Successful(o); Assert.True(result.Successful); Assert.AreSame(result.Value, o); Assert.AreSame(result.Fold(e => e, r => r), o); Assert.AreSame(result.Recover(e => RowParserResult.Successful <object>(null)), result); }
public void Composition() { var a = new object(); var b = new object(); var ex = new Exception(); var good = RowParserResult.Successful(a); var bad = RowParserResult.Failed <object>(ex); Assert.AreSame(good.Map(_ => b).Value, b); Assert.AreSame(good.FlatMap(_ => RowParserResult.Successful(b)).Value, b); Assert.AreSame(Assert.Throws <Exception>(() => Console.WriteLine(bad.Map(_ => b).Value)), ex); Assert.AreSame(Assert.Throws <Exception>(() => Console.WriteLine(bad.FlatMap(_ => RowParserResult.Successful(b)).Value)), ex); }
public static RowParser <T, TRow> Constant <T, TRow>(T value) { return(new RowParser <T, TRow>(_ => RowParserResult.Successful(value))); }
public static RowParser <T, TRow> Simple <T, TRow>(Func <TRow, T> f) { return(new RowParser <T, TRow>(row => RowParserResult.Successful(f(row)))); }