public void RoundTripZigZag32() { // Some easier-to-verify round-trip tests. The inputs (other than 0, 1, -1) // were chosen semi-randomly via keyboard bashing. Assert.AreEqual(0, ParsingPrimitives.DecodeZigZag32(WritingPrimitives.EncodeZigZag32(0))); Assert.AreEqual(1, ParsingPrimitives.DecodeZigZag32(WritingPrimitives.EncodeZigZag32(1))); Assert.AreEqual(-1, ParsingPrimitives.DecodeZigZag32(WritingPrimitives.EncodeZigZag32(-1))); Assert.AreEqual(14927, ParsingPrimitives.DecodeZigZag32(WritingPrimitives.EncodeZigZag32(14927))); Assert.AreEqual(-3612, ParsingPrimitives.DecodeZigZag32(WritingPrimitives.EncodeZigZag32(-3612))); }
public void EncodeZigZag32() { Assert.AreEqual(0u, WritingPrimitives.EncodeZigZag32(0)); Assert.AreEqual(1u, WritingPrimitives.EncodeZigZag32(-1)); Assert.AreEqual(2u, WritingPrimitives.EncodeZigZag32(1)); Assert.AreEqual(3u, WritingPrimitives.EncodeZigZag32(-2)); Assert.AreEqual(0x7FFFFFFEu, WritingPrimitives.EncodeZigZag32(0x3FFFFFFF)); Assert.AreEqual(0x7FFFFFFFu, WritingPrimitives.EncodeZigZag32(unchecked ((int)0xC0000000))); Assert.AreEqual(0xFFFFFFFEu, WritingPrimitives.EncodeZigZag32(0x7FFFFFFF)); Assert.AreEqual(0xFFFFFFFFu, WritingPrimitives.EncodeZigZag32(unchecked ((int)0x80000000))); }
/// <summary> /// Computes the number of bytes that would be needed to encode an /// sint32 field, including the tag. /// </summary> public static int ComputeSInt32Size(int value) { return(ComputeRawVarint32Size(WritingPrimitives.EncodeZigZag32(value))); }