public void StringField()
        {
            string json = @"{""name"" : ""fred""}";

            var msg = new FudgeJSONStreamReader(context, json).ReadMsg();

            Assert.Equal("fred", msg.GetString("name"));
        }
        public void NullFields()
        {
            string json = @"{""old"" : null}";

            var msg = new FudgeJSONStreamReader(context, json).ReadMsg();

            Assert.Equal(IndicatorType.Instance, msg.GetByName("old").Value);
        }
        public void BooleanFields()
        {
            string json = @"{""old"" : true, ""young"" : false}";

            var msg = new FudgeJSONStreamReader(context, json).ReadMsg();

            Assert.Equal(true, msg.GetBoolean("old"));
            Assert.Equal(false, msg.GetBoolean("young"));
        }
        public void NumberFields()
        {
            string json = @"{""int"" : 1234, ""float"" : 123.45, ""exp"" : -123.45e4}";

            var msg = new FudgeJSONStreamReader(context, json).ReadMsg();

            Assert.Equal(1234, msg.GetInt("int"));
            Assert.Equal(123.45, msg.GetDouble("float"));
            Assert.Equal(-1234500, msg.GetDouble("exp"));
        }
        public void SubObjects()
        {
            string json = @"{""inner"" : { ""a"" : 3, ""b"" : 17.3 }}";

            var msg = new FudgeJSONStreamReader(context, json).ReadMsg();

            var inner = msg.GetMessage("inner");

            Assert.NotNull(inner);
            Assert.Equal(3, inner.GetInt("a"));
            Assert.Equal(17.3, inner.GetDouble("b"));
        }
        public void LargeMsg()
        {
            var      stringWriter = new StringWriter();
            var      streamWriter = new FudgeJSONStreamWriter(context, stringWriter);
            FudgeMsg inMsg        = StandardFudgeMessages.CreateLargeMessage(context);

            streamWriter.WriteMsg(inMsg);

            var msg = new FudgeJSONStreamReader(context, stringWriter.GetStringBuilder().ToString()).ReadMsg();

            FudgeUtils.AssertAllFieldsMatch(inMsg, msg);
        }
        public void MultipleMessages()
        {
            string json   = @"{""name"" : ""fred""} {""number"" : 17}";
            var    reader = new FudgeJSONStreamReader(context, json);
            var    writer = new FudgeMsgStreamWriter();

            new FudgeStreamPipe(reader, writer).Process();

            Assert.Equal(2, writer.PeekAllMessages().Count);
            Assert.Equal("fred", writer.DequeueMessage().GetString("name"));
            Assert.Equal(17, writer.DequeueMessage().GetInt("number"));
        }
Beispiel #8
0
        public void RoundTrip()
        {
            var msg = context.NewMessage(new Field("outer",
                                                   new Field("a", 7),
                                                   new Field("b", "fred")));
            var stringWriter = new StringWriter();
            var writer       = new FudgeJSONStreamWriter(context, stringWriter);

            writer.WriteMsg(msg);
            string s = stringWriter.ToString();

            var reader = new FudgeJSONStreamReader(context, s);
            var msg2   = reader.ReadMsg();

            FudgeUtils.AssertAllFieldsMatch(msg, msg2);
        }
        public void Arrays()
        {
            string json = @"{""numbers"" : [ 1, 2, 4], ""submsgs"" : [ { ""a"" : -3 }, { ""b"" : 28 } ] }";

            var msg = new FudgeJSONStreamReader(context, json).ReadMsg();

            var numbers = msg.GetAllByName("numbers");

            Assert.Equal(3, numbers.Count);                 // REVIEW 2009-12-18 t0rx -- Should JSON arrays collapse to primitive arrays where possible?
            Assert.Equal(1, (sbyte)numbers[0].Value);
            Assert.Equal(2, (sbyte)numbers[1].Value);
            Assert.Equal(4, (sbyte)numbers[2].Value);

            var messages = msg.GetAllByName("submsgs");

            Assert.Equal(2, messages.Count);
            Assert.IsType <FudgeMsg>(messages[1].Value);
            var message2 = (FudgeMsg)messages[1].Value;

            Assert.Equal(28, (sbyte)message2.GetInt("b"));
        }