public void Map(string str, int length) { var result = Reader.Return(str) .Map(s => new { Str = s, s.Length }) .Read(); Assert.Equal(str, result.Str); Assert.Equal(length, result.Length); }
public void Bind(int n) { var result = Reader.Return(n) .Bind(x => Reader.Return(new { X = x, Y = x * 2 })) .Read(); Assert.Equal(n, result.X); Assert.Equal(n * 2, result.Y); }
public void Select(string str, int length) { var reader = from s in Reader.Return(str) select new { Str = s, s.Length }; var result = reader.Read(); Assert.Equal(str, result.Str); Assert.Equal(length, result.Length); }
public void UnitUnit(string str, int length) { var reader = from s in Reader.Return(str) from l in Reader.Return(s.Length) select new { Str = s, Length = l }; var result = reader.Read(); Assert.Equal(str, result.Str); Assert.Equal(length, result.Length); }
public void Env(string str, int length) { var reader = from s in Reader.Return <object, string>(str) from l in Reader.Return <object, int>(s.Length) from e in Reader.Env <object>() select new { Str = s, Length = l, Env = e }; var env = new object(); var result = reader.Read(env); Assert.Equal(str, result.Str); Assert.Equal(length, result.Length); Assert.Equal(env, result.Env); }
public void ReturnReturnsValue() { Assert.Equal(42, Reader.Return(42).Read()); }