示例#1
0
        public void TestRoundTrip()
        {
            object inObject = true;
            object outObject;

            string s;

            using (Stream output = new MemoryStream())
            {
                IWriter <object> w = TransitFactory.Writer <object>(TransitFactory.Format.JsonVerbose, output);
                w.Write(inObject);

                output.Position = 0;
                var sr = new StreamReader(output);
                s = sr.ReadToEnd();
            }

            byte[] buffer = Encoding.ASCII.GetBytes(s);
            using (Stream input = new MemoryStream(buffer))
            {
                IReader reader = TransitFactory.Reader(TransitFactory.Format.Json, input);
                outObject = reader.Read <object>();
            }

            Assert.IsTrue(IsEqual(inObject, outObject));
        }
示例#2
0
        public string Write(object obj, TransitFactory.Format format, IDictionary <Type, IWriteHandler> customHandlers)
        {
            using (Stream output = new MemoryStream())
            {
                IWriter <object> w = TransitFactory.Writer <object>(format, output, customHandlers);
                w.Write(obj);

                output.Position = 0;
                var sr = new StreamReader(output);
                return(sr.ReadToEnd());
            }
        }
示例#3
0
        public void TestLink()
        {
            ILink  l1  = TransitFactory.Link("http://google.com/", "search", "name", "link", "prompt");
            String str = WriteJson(l1);
            ILink  l2  = Reader(str).Read <ILink>();

            Assert.AreEqual("http://google.com/", l2.Href.AbsoluteUri);
            Assert.AreEqual("search", l2.Rel);
            Assert.AreEqual("name", l2.Name);
            Assert.AreEqual("link", l2.Render);
            Assert.AreEqual("prompt", l2.Prompt);
        }
示例#4
0
        public void TestReadUnknown()
        {
            Assert.AreEqual(TransitFactory.TaggedValue("j", "foo"), Reader("\"~jfoo\"").Read <ITaggedValue>());
            IList <object> l = new List <object> {
                1L, 2L
            };

            ITaggedValue expected = TransitFactory.TaggedValue("point", l);
            ITaggedValue result   = Reader("{\"~#point\":[1,2]}").Read <ITaggedValue>();

            Assert.AreEqual(expected.Tag, result.Tag);
            CollectionAssert.AreEqual(((IList <object>)expected.Representation).ToArray(), ((IList <object>)result.Representation).ToArray());
        }
示例#5
0
        public void TestWriteUnknown()
        {
            var l = new List <object>();

            l.Add("`jfoo");
            Assert.AreEqual("[\"~`jfoo\"]", WriteJsonVerbose(l));
            Assert.AreEqual(ScalarVerbose("\"~`jfoo\""), WriteJsonVerbose("`jfoo"));

            var l2 = new List <object>();

            l2.Add(1L);
            l2.Add(2L);
            Assert.AreEqual("{\"~#point\":[1,2]}", WriteJsonVerbose(TransitFactory.TaggedValue("point", l2)));
        }
示例#6
0
        public void TestUseISymbolAsDictionaryKey()
        {
            IDictionary <object, object> d = new Dictionary <object, object>();

            d.Add(TransitFactory.Symbol("foo"), 1);
            d.Add("foo", 2);
            d.Add(TransitFactory.Symbol("bar"), 3);
            d.Add("bar", 4);

            Assert.AreEqual(1, d[TransitFactory.Symbol("foo")]);
            Assert.AreEqual(2, d["foo"]);
            Assert.AreEqual(3, d[TransitFactory.Symbol("bar")]);
            Assert.AreEqual(4, d["bar"]);
        }
示例#7
0
        public void TestKeywordHashCode()
        {
            string s = "foo";

            IKeyword k1     = TransitFactory.Keyword("foo");
            IKeyword k2     = TransitFactory.Keyword("!foo".Substring(1));
            IKeyword k3     = TransitFactory.Keyword("bar");
            ISymbol  symbol = TransitFactory.Symbol("bar");

            Assert.AreEqual(k1.GetHashCode(), k2.GetHashCode());
            Assert.IsFalse(k3.GetHashCode() == k1.GetHashCode());
            Assert.IsFalse(symbol.GetHashCode() == k1.GetHashCode());
            Assert.IsFalse(s.GetHashCode() == k1.GetHashCode());
        }
示例#8
0
        public void TestSymbolHashCode()
        {
            string s = "foo";

            ISymbol  sym1    = TransitFactory.Symbol("foo");
            ISymbol  sym2    = TransitFactory.Symbol("!foo".Substring(1));
            ISymbol  sym3    = TransitFactory.Symbol("bar");
            IKeyword keyword = TransitFactory.Keyword("bar");

            Assert.AreEqual(sym1.GetHashCode(), sym2.GetHashCode());
            Assert.IsFalse(sym3.GetHashCode() == sym1.GetHashCode());
            Assert.IsFalse(keyword.GetHashCode() == sym1.GetHashCode());
            Assert.IsFalse(s.GetHashCode() == sym1.GetHashCode());
        }
示例#9
0
        public void TestWriteKeyword()
        {
            Assert.AreEqual(ScalarVerbose("\"~:foo\""), WriteJsonVerbose(TransitFactory.Keyword("foo")));
            Assert.AreEqual(Scalar("\"~:foo\""), WriteJson(TransitFactory.Keyword("foo")));

            IList l = new IKeyword[]
            {
                TransitFactory.Keyword("foo"),
                TransitFactory.Keyword("foo"),
                TransitFactory.Keyword("foo")
            };

            Assert.AreEqual("[\"~:foo\",\"~:foo\",\"~:foo\"]", WriteJsonVerbose(l));
            Assert.AreEqual("[\"~:foo\",\"^0\",\"^0\"]", WriteJson(l));
        }
示例#10
0
        public void TestSymbolEquality()
        {
            string s = "foo";

            ISymbol sym1 = TransitFactory.Symbol("foo");
            ISymbol sym2 = TransitFactory.Symbol("!foo".Substring(1));
            ISymbol sym3 = TransitFactory.Symbol("bar");

            Assert.AreEqual(sym1, sym2);
            Assert.AreEqual(sym2, sym1);
            Assert.IsFalse(sym1.Equals(sym3));
            Assert.IsFalse(sym3.Equals(sym1));
            Assert.IsFalse(s.Equals(sym1));
            Assert.IsFalse(sym1.Equals(s));
        }
示例#11
0
        public void TestKeywordEquality()
        {
            string s = "foo";

            IKeyword k1 = TransitFactory.Keyword("foo");
            IKeyword k2 = TransitFactory.Keyword("!foo".Substring(1));
            IKeyword k3 = TransitFactory.Keyword("bar");

            Assert.AreEqual(k1, k2);
            Assert.AreEqual(k2, k1);
            Assert.IsFalse(k1.Equals(k3));
            Assert.IsFalse(k3.Equals(k1));
            Assert.IsFalse(s.Equals(k1));
            Assert.IsFalse(k1.Equals(s));
        }
示例#12
0
        public void TestKeywordComparator()
        {
            List <IKeyword> l = new List <IKeyword> {
                { TransitFactory.Keyword("bbb") },
                { TransitFactory.Keyword("ccc") },
                { TransitFactory.Keyword("abc") },
                { TransitFactory.Keyword("dab") }
            };

            l.Sort();

            Assert.AreEqual("abc", l[0].ToString());
            Assert.AreEqual("bbb", l[1].ToString());
            Assert.AreEqual("ccc", l[2].ToString());
            Assert.AreEqual("dab", l[3].ToString());
        }
示例#13
0
        public void TestSymbolComparator()
        {
            List <ISymbol> l = new List <ISymbol> {
                { TransitFactory.Symbol("bbb") },
                { TransitFactory.Symbol("ccc") },
                { TransitFactory.Symbol("abc") },
                { TransitFactory.Symbol("dab") }
            };

            l.Sort();

            Assert.AreEqual("abc", l[0].ToString());
            Assert.AreEqual("bbb", l[1].ToString());
            Assert.AreEqual("ccc", l[2].ToString());
            Assert.AreEqual("dab", l[3].ToString());
        }
示例#14
0
        public override object Representation(object obj)
        {
            dynamic o = obj;

            if (StringableKeys(o))
            {
                return(Enumerable.ToList(o));
            }
            else
            {
                var l = new List <object>();

                foreach (var item in o)
                {
                    l.Add(item.Key);
                    l.Add(item.Value);
                }

                return(TransitFactory.TaggedValue("array", l));
            }
        }
示例#15
0
 public void TestWriteSymbol()
 {
     Assert.AreEqual(ScalarVerbose("\"~$foo\""), WriteJsonVerbose(TransitFactory.Symbol("foo")));
 }
 public object FromRepresentation(object representation)
 {
     return(TransitFactory.Keyword((string)representation));
 }
示例#17
0
        public IReader Reader(string s)
        {
            Stream input = new MemoryStream(Encoding.Default.GetBytes(s));

            return(TransitFactory.Reader(TransitFactory.Format.Json, input));
        }
示例#18
0
 public ITaggedValue FromRepresentation(string tag, object representation)
 {
     return(TransitFactory.TaggedValue(tag, representation));
 }
示例#19
0
 public override object Representation(object obj)
 {
     return(TransitFactory.TaggedValue("array", obj));
 }
示例#20
0
        public string Write(object obj, TransitFactory.Format format, IDictionary<Type, IWriteHandler> customHandlers)
        {
            using (Stream output = new MemoryStream())
            {
                IWriter<object> w = TransitFactory.Writer<object>(format, output, customHandlers);
                w.Write(obj);

                output.Position = 0;
                var sr = new StreamReader(output);
                return sr.ReadToEnd();
            }
        }