public void StreamUtils_EncodeDecodeSafeSynchInt() { Random rnd = new Random(DateTime.Now.Millisecond); int ticks = rnd.Next(0, (int)(Math.Floor(Math.Pow(2, 28) / 2) - 1)); // 4-byte synchsafe (28 bits) byte[] encoded = StreamUtils.EncodeSynchSafeInt(ticks, 4); int decoded = StreamUtils.DecodeSynchSafeInt(encoded); Assert.AreEqual(ticks, decoded); ticks = rnd.Next(0, (int)(Math.Floor(Math.Pow(2, 32) / 2) - 1)); // 5-byte synchsafe (32 bits) encoded = StreamUtils.EncodeSynchSafeInt(ticks, 5); decoded = StreamUtils.DecodeSynchSafeInt(encoded); Assert.AreEqual(ticks, decoded); int test = 0x0000FFFF; encoded = StreamUtils.EncodeSynchSafeInt(test, 4); Assert.AreEqual(0x7F, encoded[3]); Assert.AreEqual(0x7F, encoded[2]); Assert.AreEqual(0x03, encoded[1]); Assert.AreEqual(0x00, encoded[0]); Assert.AreEqual(test, StreamUtils.DecodeSynchSafeInt(encoded)); test = 0x04ADD3AC; encoded = StreamUtils.EncodeSynchSafeInt32(test); Assert.AreEqual(0x2C, encoded[3]); Assert.AreEqual(0x27, encoded[2]); Assert.AreEqual(0x37, encoded[1]); Assert.AreEqual(0x25, encoded[0]); Assert.AreEqual(test, StreamUtils.DecodeSynchSafeInt32(encoded)); }
public void StreamUtils_Exceptions() { Assert.IsFalse(StreamUtils.ArrEqualsArr(new byte[1], new byte[2])); Assert.IsFalse(StreamUtils.StringEqualsArr(".", new char[2])); try { StreamUtils.DecodeBEUInt16(new byte[1]); Assert.Fail(); } catch { } try { StreamUtils.DecodeUInt16(new byte[1]); Assert.Fail(); } catch { } try { StreamUtils.DecodeInt16(new byte[1]); Assert.Fail(); } catch { } try { StreamUtils.DecodeBEInt16(new byte[1]); Assert.Fail(); } catch { } try { StreamUtils.DecodeBEInt24(new byte[2]); Assert.Fail(); } catch { } try { StreamUtils.DecodeBEUInt24(new byte[2]); Assert.Fail(); } catch { } try { StreamUtils.EncodeBEUInt24(0x01FFFFFF); Assert.Fail(); } catch { } try { StreamUtils.DecodeBEUInt32(new byte[3]); Assert.Fail(); } catch { } try { StreamUtils.DecodeUInt32(new byte[3]); Assert.Fail(); } catch { } try { StreamUtils.DecodeBEInt32(new byte[3]); Assert.Fail(); } catch { } try { StreamUtils.DecodeInt32(new byte[3]); Assert.Fail(); } catch { } try { StreamUtils.DecodeUInt64(new byte[7]); Assert.Fail(); } catch { } try { StreamUtils.DecodeBEInt64(new byte[7]); Assert.Fail(); } catch { } try { StreamUtils.DecodeSynchSafeInt(new byte[6]); Assert.Fail(); } catch { } try { StreamUtils.DecodeSynchSafeInt32(new byte[6]); Assert.Fail(); } catch { } try { StreamUtils.EncodeSynchSafeInt(1, 0); Assert.Fail(); } catch { } try { StreamUtils.EncodeSynchSafeInt(1, 6); Assert.Fail(); } catch { } try { StreamUtils.ReadBits(new BinaryReader(new MemoryStream()), 0, 0); Assert.Fail(); } catch { } try { StreamUtils.ReadBits(new BinaryReader(new MemoryStream()), 0, 33); Assert.Fail(); } catch { } }