public void FormatWithZeroTest() { SignedNumeral signed = new SignedNumeral(ChurchTuple <Numeral, Numeral> .Create(12U.Church())(23U.Church())); signed = signed.Format(); Assert.IsTrue(0U == signed.Positive().Unchurch()); Assert.IsTrue(11U == signed.Negative().Unchurch()); signed = new SignedNumeral(ChurchTuple <Numeral, Numeral> .Create(23U.Church())(12U.Church())); signed = signed.Format(); Assert.IsTrue(11U == signed.Positive().Unchurch()); Assert.IsTrue(0U == signed.Negative().Unchurch()); }
public void ShiftTest() { Tuple <int, int> tuple1 = ChurchTuple <int, int> .Create(1)(2).Shift(_ => _); Assert.AreEqual(2, tuple1.Item1()); Assert.AreEqual(2, tuple1.Item2()); Tuple <int, int> tuple2 = ChurchTuple <int, int> .Create(2)(3).Shift(value => value * 2); Assert.AreEqual(3, tuple2.Item1()); Assert.AreEqual(6, tuple2.Item2()); Tuple <string, string> tuple3 = ChurchTuple <string, string> .Create("a")("b").Shift(value => value + "c"); Assert.AreEqual("b", tuple3.Item1()); Assert.AreEqual("bc", tuple3.Item2()); }
public void SwapTest() { Tuple <int, string> tuple1 = ChurchTuple <string, int> .Create("a")(1).Swap(); Assert.AreEqual(1, tuple1.Item1()); Assert.AreEqual("a", tuple1.Item2()); Tuple <string, int> tuple2 = ChurchTuple <int, string> .Create(1)("a").Swap(); Assert.AreEqual("a", tuple2.Item1()); Assert.AreEqual(1, tuple2.Item2()); object @object = new object(); Tuple <object, int> tuple3 = ChurchTuple <int, object> .Create(1)(@object).Swap(); Assert.AreEqual(@object, tuple3.Item1()); Assert.AreEqual(1, tuple3.Item2()); }
public void CreateItem1Item2Test() { Tutorial.LambdaCalculus.Tuple <int, string> tuple1 = ChurchTuple <int, string> .Create(1)("a"); Assert.AreEqual(1, tuple1.Item1()); Assert.AreEqual("a", tuple1.Item2()); Tutorial.LambdaCalculus.Tuple <string, int> tuple2 = ChurchTuple <string, int> .Create("a")(1); Assert.AreEqual("a", tuple2.Item1()); Assert.AreEqual(1, tuple2.Item2()); object @object = new object(); Tutorial.LambdaCalculus.Tuple <object, int> tuple3 = ChurchTuple <object, int> .Create(@object)(1); Assert.AreEqual(@object, tuple3.Item1()); Assert.AreEqual(1, tuple3.Item2()); }
public void CreateItem1Item2Test() { Tutorial.LambdaCalculus.Tuple <int, string, bool> tuple1 = ChurchTuple <int, string, bool> .Create(1)("a")(true); Assert.AreEqual(1, tuple1.Item1()); Assert.AreEqual("a", tuple1.Item2()); Assert.AreEqual(true, tuple1.Item3()); Tutorial.LambdaCalculus.Tuple <string, int, bool> tuple2 = ChurchTuple <string, int, bool> .Create("a")(1)(false); Assert.AreEqual("a", tuple2.Item1()); Assert.AreEqual(1, tuple2.Item2()); Assert.AreEqual(false, tuple2.Item3()); object @object = new object(); Uri uri = new Uri("https://weblogs.asp.net/dixin"); Tutorial.LambdaCalculus.Tuple <object, int, Uri> tuple3 = ChurchTuple <object, int, Uri> .Create(@object)(1)(uri); Assert.AreEqual(@object, tuple3.Item1()); Assert.AreEqual(1, tuple3.Item2()); Assert.AreEqual(uri, tuple3.Item3()); }
public void SignNegatePositiveNegativeTest() { SignedNumeral signed = 0U.Church().Sign(); Assert.IsTrue(0U == signed.Positive().Unchurch()); Assert.IsTrue(0U == signed.Negative().Unchurch()); signed = signed.Negate(); Assert.IsTrue(0U == signed.Positive().Unchurch()); Assert.IsTrue(0U == signed.Negative().Unchurch()); signed = 1U.Church().Sign(); Assert.IsTrue(1U == signed.Positive().Unchurch()); Assert.IsTrue(0U == signed.Negative().Unchurch()); signed = signed.Negate(); Assert.IsTrue(0U == signed.Positive().Unchurch()); Assert.IsTrue(1U == signed.Negative().Unchurch()); signed = 2U.Church().Sign(); Assert.IsTrue(2U == signed.Positive().Unchurch()); Assert.IsTrue(0U == signed.Negative().Unchurch()); signed = signed.Negate(); Assert.IsTrue(0U == signed.Positive().Unchurch()); Assert.IsTrue(2U == signed.Negative().Unchurch()); signed = 123U.Church().Sign(); Assert.IsTrue(123U == signed.Positive().Unchurch()); Assert.IsTrue(0U == signed.Negative().Unchurch()); signed = signed.Negate(); Assert.IsTrue(0U == signed.Positive().Unchurch()); Assert.IsTrue(123U == signed.Negative().Unchurch()); signed = new SignedNumeral(ChurchTuple <Numeral, Numeral> .Create(12U.Church())(23U.Church())); Assert.IsTrue(12U == signed.Positive().Unchurch()); Assert.IsTrue(23U == signed.Negative().Unchurch()); signed = signed.Negate(); Assert.IsTrue(23U == signed.Positive().Unchurch()); Assert.IsTrue(12U == signed.Negative().Unchurch()); }