public void IsoUnOptionalTest() { Assert.AreEqual(false, SubStL(bISO)(true)); Assert.AreEqual(true, SubStL(bISO)(false)); Assert.AreEqual(false, SubStL(badISO)(true)); Assert.Throws(typeof(Exception), () => SubStL(badISO)(false)); }
public void IsoTupleTest() { var tuple = SubStL(IsoTuple(tISO, tISO))(Tuple.Create(true, false)); Assert.AreEqual(MEOW, tuple.Item1); Assert.AreEqual(MOE, tuple.Item2); }
public void IsoEitherTest() { Assert.AreEqual(Either <bool, string> .Left(false), SubStL(IsoEither(IsoBoolNot(), tISO))(Either <bool, bool> .Left(true))); Assert.AreEqual(Either <bool, string> .Left(true), SubStL(IsoEither(IsoBoolNot(), tISO))(Either <bool, bool> .Left(false))); Assert.AreEqual(Either <bool, string> .Right(MEOW), SubStL(IsoEither(IsoBoolNot(), tISO))(Either <bool, bool> .Right(true))); }
public void IsoEUTest() { Assert.AreEqual(lrl(IsoEU())(Either <List <Unit>, Unit> .Left(new List <Unit>())), Either <List <Unit>, Unit> .Left(new List <Unit>())); Assert.AreEqual(lrl(IsoEU())(Either <List <Unit>, Unit> .Left(lu())), Either <List <Unit>, Unit> .Left(lu())); Assert.AreEqual(lrl(IsoEU())(Either <List <Unit>, Unit> .Right(Unit.INSTANCE)), Either <List <Unit>, Unit> .Right(Unit.INSTANCE)); Assert.AreEqual(rlr(IsoEU())(Either <List <Unit>, Void> .Left(new List <Unit>())), Either <List <Unit>, Unit> .Left(new List <Unit>())); Assert.AreEqual(rlr(IsoEU())(Either <List <Unit>, Void> .Left(lu())), Either <List <Unit>, Unit> .Left(lu())); Assert.AreEqual(SubStL(IsoEU())(Either <List <Unit>, Unit> .Right(Unit.INSTANCE)) .Match(l => true, r => false), true); }
public void SubStRTest() { Assert.AreEqual(MEOW, SubStL(SubStR(new ISO <ISO <bool, string>, object>(null, e => tISO))(null))(true)); Assert.AreEqual(true, SubStR(IsoBool())(true)); Assert.AreEqual(false, SubStR(IsoBool())(false)); }
public void SubStLTest() { Assert.AreEqual(MEOW, SubStL(tISO)(true)); Assert.AreEqual(false, SubStL(IsoBool())(false)); Assert.AreEqual(true, SubStL(IsoBool())(true)); }
public void IsoOptionalTest() { Assert.IsFalse(SubStL(IsoOptional(tISO))(Optional <bool> .Empty()).IsPresent()); Assert.AreEqual(MEOW, SubStL(IsoOptional(tISO))(Optional <bool> .From(true)).Get()); }
public void IsoFuncTest() { Assert.AreEqual(MEOW, SubStL(IsoFunc(Symm(tISO), tISO))(MEOW.Equals)(true)); }
public void IsoListTest() { Assert.AreEqual(MEOW + MEOW + MOE, SubStL(IsoList(tISO))(new List <bool>(new[] { true, true, false })) .Aggregate((a, b) => a + b)); }
public void TransTest() { Assert.AreEqual(MEOW, SubStL(Trans(Refl <bool>(), Trans(tISO, Refl <string>())))(true)); }
public void ReflTest() { Assert.AreEqual(MEOW, SubStL(SubStL(Refl <ISO <bool, string> >())(tISO))(true)); }