示例#1
0
        public void Maybe_Serializes_Objects()
        {
            var converter = new MaybeConverter();

            var expectedJust = "{\"F\":123}";
            var just         = new Maybe <Foo>(new Foo {
                F = 123
            });
            var actualJust = JsonConvert.SerializeObject(just, Formatting.None, converter);

            var expectedNone = "null";
            var none         = new Maybe <Foo>();
            var actualNone   = JsonConvert.SerializeObject(none, Formatting.None, converter);

            var expectedInt = "789";
            var justInt     = new Maybe <int>(789);
            var actualInt   = JsonConvert.SerializeObject(justInt, Formatting.None, converter);

            var actualReadFoo  = JsonConvert.DeserializeObject <Maybe <Foo> >("{\"F\":999}", converter);
            var actualReadNone = JsonConvert.DeserializeObject <Maybe <Foo> >("null", converter);
            var actualReadInt  = JsonConvert.DeserializeObject <Maybe <int> >("456", converter);

            Assert.Equal(expectedJust, actualJust);
            Assert.Equal(expectedNone, actualNone);
            Assert.Equal(expectedInt, actualInt);
            Assert.Equal(-1, actualReadNone.Map(x => x.F).Extract(-1));
            Assert.Equal(999, actualReadFoo.Map(x => x.F).Extract(-1));
            Assert.Equal(456, actualReadInt.Extract(-1));
        }
示例#2
0
            public void TestReadJsonWithNull()
            {
                var maybeConverter = new MaybeConverter();
                var obj            = JsonConvert.DeserializeObject("null", typeof(Maybe <int>), maybeConverter);

                Assert.IsTrue(obj is Maybe <int>);
                Assert.IsFalse(((Maybe <int>)obj).HasValue);
            }
示例#3
0
            public void TestWriteJsonWithValue()
            {
                var maybeConverter = new MaybeConverter();

                Assert.AreEqual("3", JsonConvert.SerializeObject(Maybe.FromValue(3), maybeConverter));
                Assert.AreEqual("true", JsonConvert.SerializeObject(Maybe.FromValue(true), maybeConverter));
                Assert.AreEqual("\"Test\"", JsonConvert.SerializeObject(Maybe.FromValue("Test"), maybeConverter));
            }
示例#4
0
            public void TestWriteJsonWithComplexValue()
            {
                var maybeConverter = new MaybeConverter();
                Maybe <List <Maybe <int> > > complex = new List <Maybe <int> >();

                complex.Value.Add(Maybe <int> .None);
                Assert.AreEqual("[]", JsonConvert.SerializeObject(complex, maybeConverter));

                complex.Value.AddRange(new[] { Maybe.FromValue(232), 9 });
                Assert.AreEqual("[232,9]", JsonConvert.SerializeObject(complex, maybeConverter));
            }
示例#5
0
            public void TestReadJsonWithConversionValue()
            {
                var maybeConverter = new MaybeConverter();
                var objGuid        = JsonConvert.DeserializeObject("\"dc95aa3e-c209-4225-becb-3f28eca1ea56\"", typeof(Maybe <Guid>), maybeConverter);

                Assert.IsTrue(objGuid is Maybe <Guid>);

                var mguid = (Maybe <Guid>)objGuid;

                Assert.IsTrue(mguid.HasValue);
            }
示例#6
0
            public void TestCanConvert()
            {
                MaybeConverter mc = new MaybeConverter();

                Assert.IsFalse(mc.CanConvert(typeof(int)));
                Assert.IsFalse(mc.CanConvert(typeof(bool)));
                Assert.IsFalse(mc.CanConvert(typeof(string)));
                Assert.IsFalse(mc.CanConvert(typeof(int?)));

                Assert.IsTrue(mc.CanConvert(typeof(Maybe <int>)));
                Assert.IsTrue(mc.CanConvert(typeof(Maybe <string>)));
                Assert.IsTrue(mc.CanConvert(typeof(Maybe <int?>)));
            }
示例#7
0
            public void TestReadJsonWithComplexValue()
            {
                var maybeConverter = new MaybeConverter();
                var objBool        = JsonConvert.DeserializeObject("[true,false,false,true,null]", typeof(Maybe <List <Maybe <bool> > >), maybeConverter);

                Assert.IsTrue(objBool is Maybe <List <Maybe <bool> > >);

                var mlist = (Maybe <List <Maybe <bool> > >)objBool;

                Assert.IsTrue(mlist.HasValue);
                Assert.AreEqual(5, mlist.Value.Count);
                Assert.IsTrue(mlist.Value.Contains(Maybe <bool> .None));
            }
示例#8
0
            public void TestReadJsonWithValue()
            {
                var maybeConverter = new MaybeConverter();
                var objStr         = JsonConvert.DeserializeObject("\"MaybeHero\"", typeof(Maybe <string>), maybeConverter);

                Assert.IsTrue(objStr is Maybe <string>);
                Assert.IsTrue(((Maybe <string>)objStr).HasValue);
                Assert.AreEqual("MaybeHero", ((Maybe <string>)objStr).Value);

                var objInt = JsonConvert.DeserializeObject("432324328", typeof(Maybe <int>), maybeConverter);

                Assert.IsTrue(objInt is Maybe <int>);
                Assert.IsTrue(((Maybe <int>)objInt).HasValue);
                Assert.AreEqual(432324328, ((Maybe <int>)objInt).Value);
            }
示例#9
0
            public void TestWriteJsonNoValue()
            {
                var maybeConverter = new MaybeConverter();

                Assert.AreEqual("", JsonConvert.SerializeObject(Maybe <string> .None, maybeConverter));
            }