aboutsummaryrefslogtreecommitdiffhomepage
path: root/csharp/src/ProtocolBuffers.Test/TestCornerCases.cs
blob: 0be4e1d4e356a63fdf0261580dc3f6fa52558508 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using UnitTest.Issues.TestProtos;

namespace Google.ProtocolBuffers
{
    [TestClass]
    public class TestCornerCases
    {
        [TestMethod]
        public void TestRoundTripNegativeEnums()
        {
            NegativeEnumMessage msg = NegativeEnumMessage.CreateBuilder()
                .SetValue(NegativeEnum.MinusOne) //11
                .AddValues(NegativeEnum.Zero) //2
                .AddValues(NegativeEnum.MinusOne) //11
                .AddValues(NegativeEnum.FiveBelow) //11
                //2
                .AddPackedValues(NegativeEnum.Zero) //1
                .AddPackedValues(NegativeEnum.MinusOne) //10
                .AddPackedValues(NegativeEnum.FiveBelow) //10
                .Build();

            Assert.AreEqual(58, msg.SerializedSize);

            byte[] bytes = new byte[58];
            CodedOutputStream output = CodedOutputStream.CreateInstance(bytes);

            msg.WriteTo(output);
            Assert.AreEqual(0, output.SpaceLeft);

            NegativeEnumMessage copy = NegativeEnumMessage.ParseFrom(bytes);
            Assert.AreEqual(msg, copy);
        }
    }
}