|  | #region Copyright notice and license | 
|  | // Protocol Buffers - Google's data interchange format | 
|  | // Copyright 2008 Google Inc.  All rights reserved. | 
|  | // | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file or at | 
|  | // https://developers.google.com/open-source/licenses/bsd | 
|  | #endregion | 
|  |  | 
|  | using UnitTest.Issues.TestProtos; | 
|  | using NUnit.Framework; | 
|  |  | 
|  | namespace Google.Protobuf | 
|  | { | 
|  | public class TestCornerCases | 
|  | { | 
|  | [Test] | 
|  | public void TestRoundTripNegativeEnums() | 
|  | { | 
|  | NegativeEnumMessage msg = new NegativeEnumMessage | 
|  | { | 
|  | Value = NegativeEnum.MinusOne, | 
|  | Values = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }, | 
|  | PackedValues = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow } | 
|  | }; | 
|  |  | 
|  | Assert.AreEqual(58, msg.CalculateSize()); | 
|  |  | 
|  | byte[] bytes = new byte[58]; | 
|  | CodedOutputStream output = new CodedOutputStream(bytes); | 
|  |  | 
|  | msg.WriteTo(output); | 
|  | Assert.AreEqual(0, output.SpaceLeft); | 
|  |  | 
|  | NegativeEnumMessage copy = NegativeEnumMessage.Parser.ParseFrom(bytes); | 
|  | Assert.AreEqual(msg, copy); | 
|  | } | 
|  | } | 
|  | } |