public void TestEnum()
        {
            ProtoBufferDic dic = new ProtoBufferDic("dic");

            List <string> list = new List <string>();

            list.Add("package com.morln.game;");

            list.Add("enum Foo {");
            list.Add("ONE = 1;");
            list.Add("TWO = 2;");
            list.Add("THREE = 3;");
            list.Add("}");


            ProtoBufferFile file = new ProtoBufferFile("foo.proto", dic, list);

            dic.AddFile(file);
            dic.Parse();


            ProtoBufferMessage msg = dic.Files[0].Messages[0];

            Assert.AreEqual(DataType.Enum, msg.DataType);
            Assert.AreEqual(3, msg.Fields.Count);


            ProtoBufferField field = msg.Fields[0];

            Assert.AreEqual(DataType.Enum, field.DataType);
            Assert.AreEqual("enum", field.DataName);
            Assert.AreEqual("ONE", field.Name);
            Assert.AreEqual(1, field.FieldNumber);

            field = msg.Fields[1];
            Assert.AreEqual(DataType.Enum, field.DataType);
            Assert.AreEqual("enum", field.DataName);
            Assert.AreEqual("TWO", field.Name);
            Assert.AreEqual(2, field.FieldNumber);

            field = msg.Fields[2];
            Assert.AreEqual(DataType.Enum, field.DataType);
            Assert.AreEqual("enum", field.DataName);
            Assert.AreEqual("THREE", field.Name);
            Assert.AreEqual(3, field.FieldNumber);
        }
        public void TestMessage()
        {
            ProtoBufferDic dic = new ProtoBufferDic("dic");

            List <string> list = new List <string>();

            list.Add("package com.morln.game;");

            list.Add("option java_package = \"com.morln.game.newvs.command\";");

            list.Add("// Foo summary");
            list.Add("message Foo {");
            list.Add("// a_int summary");
            list.Add("required int32 a_int = 1;");
            list.Add("// a_long summary");
            list.Add("required int64 a_long = 2;");
            list.Add("// a_bool summary");
            list.Add("required bool a_bool = 3;");
            list.Add("// a_float summary");
            list.Add("required float a_float = 4;");
            list.Add("// a_double summary");
            list.Add("required double a_double = 5;");
            list.Add("// a_string summary");
            list.Add("required string a_string = 6;");
            list.Add("// a_bytes summary");
            list.Add("required bytes a_bytes = 7;");
            list.Add("}");


            ProtoBufferFile file = new ProtoBufferFile("foo.proto", dic, list);

            dic.AddFile(file);
            dic.Parse();

            Assert.AreEqual("foo.proto", dic.Files[0].FileName);
            Assert.AreEqual(1, dic.Files[0].Messages.Count);
            Assert.AreEqual(DataType.Class, dic.Files[0].Messages[0].DataType);
            Assert.AreEqual(7, dic.Files[0].Messages[0].Fields.Count);



            // field 1

            ProtoBufferField field = dic.Files[0].Messages[0].Fields[0];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_int summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.Int, field.DataType);
            Assert.AreEqual("int", field.DataName);
            Assert.AreEqual("a_int", field.Name);
            Assert.AreEqual(1, field.FieldNumber);

            field = dic.Files[0].Messages[0].Fields[1];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_long summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.Long, field.DataType);
            Assert.AreEqual("long", field.DataName);
            Assert.AreEqual("a_long", field.Name);
            Assert.AreEqual(2, field.FieldNumber);

            field = dic.Files[0].Messages[0].Fields[2];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_bool summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.Bool, field.DataType);
            Assert.AreEqual("bool", field.DataName);
            Assert.AreEqual("a_bool", field.Name);
            Assert.AreEqual(3, field.FieldNumber);

            field = dic.Files[0].Messages[0].Fields[3];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_float summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.Float, field.DataType);
            Assert.AreEqual("float", field.DataName);
            Assert.AreEqual("a_float", field.Name);
            Assert.AreEqual(4, field.FieldNumber);

            field = dic.Files[0].Messages[0].Fields[4];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_double summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.Double, field.DataType);
            Assert.AreEqual("double", field.DataName);
            Assert.AreEqual("a_double", field.Name);
            Assert.AreEqual(5, field.FieldNumber);

            field = dic.Files[0].Messages[0].Fields[5];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_string summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.String, field.DataType);
            Assert.AreEqual("string", field.DataName);
            Assert.AreEqual("a_string", field.Name);
            Assert.AreEqual(6, field.FieldNumber);

            field = dic.Files[0].Messages[0].Fields[6];

            Assert.AreEqual(1, field.Summarys.Count);
            Assert.AreEqual("a_bytes summary", field.Summarys[0]);
            Assert.AreEqual(RequiredType.Required, field.RequiredType);
            Assert.AreEqual(DataType.Bytes, field.DataType);
            Assert.AreEqual("byte[]", field.DataName);
            Assert.AreEqual("a_bytes", field.Name);
            Assert.AreEqual(7, field.FieldNumber);
        }