public void RoundTripZigZag64() { Assert.AreEqual(0, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(0))); Assert.AreEqual(1, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(1))); Assert.AreEqual(-1, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(-1))); Assert.AreEqual(14927, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(14927))); Assert.AreEqual(-3612, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(-3612))); Assert.AreEqual(856912304801416L, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(856912304801416L))); Assert.AreEqual(-75123905439571256L, ParsingPrimitives.DecodeZigZag64(WritingPrimitives.EncodeZigZag64(-75123905439571256L))); }
public void EncodeZigZag64() { Assert.AreEqual(0u, WritingPrimitives.EncodeZigZag64(0)); Assert.AreEqual(1u, WritingPrimitives.EncodeZigZag64(-1)); Assert.AreEqual(2u, WritingPrimitives.EncodeZigZag64(1)); Assert.AreEqual(3u, WritingPrimitives.EncodeZigZag64(-2)); Assert.AreEqual(0x000000007FFFFFFEuL, WritingPrimitives.EncodeZigZag64(unchecked ((long)0x000000003FFFFFFFUL))); Assert.AreEqual(0x000000007FFFFFFFuL, WritingPrimitives.EncodeZigZag64(unchecked ((long)0xFFFFFFFFC0000000UL))); Assert.AreEqual(0x00000000FFFFFFFEuL, WritingPrimitives.EncodeZigZag64(unchecked ((long)0x000000007FFFFFFFUL))); Assert.AreEqual(0x00000000FFFFFFFFuL, WritingPrimitives.EncodeZigZag64(unchecked ((long)0xFFFFFFFF80000000UL))); Assert.AreEqual(0xFFFFFFFFFFFFFFFEL, WritingPrimitives.EncodeZigZag64(unchecked ((long)0x7FFFFFFFFFFFFFFFUL))); Assert.AreEqual(0xFFFFFFFFFFFFFFFFL, WritingPrimitives.EncodeZigZag64(unchecked ((long)0x8000000000000000UL))); }
/// <summary> /// Computes the number of bytes that would be needed to encode an /// sint64 field, including the tag. /// </summary> public static int ComputeSInt64Size(long value) { return(ComputeRawVarint64Size(WritingPrimitives.EncodeZigZag64(value))); }