public void TestRandomFixedFloatRoundTripSerialization() { var r = new Random(); for (int n = 0; n < 1000; ++n) { var f = (float)((r.NextDouble() * 2) - 1); for (var i = 0; i < 2; ++i) { var bw = new BitWriter(32); bw.WriteFixedCompressedFloat(f, 1, 16); var br = new BitReader(bw.GetBits(0, bw.Length).ToArray()); var f2 = br.ReadFixedCompressedFloat(1, 16); if (i == 0) { // We're generating floats that are probably going to lose precision when serialized. // So the first time around just check to see if we're close. Assert.IsTrue(Math.Abs(f - f2) < 0.0001); } else { Assert.AreEqual(f, f2); } Assert.AreEqual(bw.Length, br.Position); f = f2; } } }
public void TestVectorRoundTripSerializationFromBinary(string binary) { var br = new BitReader(binary); var v = Vector3D.Deserialize(br); var bw = new BitWriter(32); v.Serialize(bw); var writtenBits = bw.GetBits(0, bw.Length).ToBinaryString(); Assert.AreEqual(binary, writtenBits); }
public void TestUIntMaxRoundTripSerialization(UInt32 value, UInt32 max) { for (var i = 0; i < 2; ++i) { var bw = new BitWriter(32); bw.Write(value, max); var br = new BitReader(bw.GetBits(0, bw.Length).ToArray()); var val2 = br.ReadUInt32Max((int)max); Assert.AreEqual(value, val2); Assert.AreEqual(bw.Length, br.Position); value = val2; } }
public void TestVectorRoundTripSerialization(float x, float y, float z) { var v = new Vector3D(x, y, z); for (var i = 0; i < 2; ++i) { var bw = new BitWriter(32); v.Serialize(bw); var br = new BitReader(bw.GetBits(0, bw.Length).ToArray()); var v2 = Vector3D.Deserialize(br); if (i == 0) { // We're generating floats even though these are serialized as ints // So the first time around just check to see if we're at the nearest int Assert.IsTrue(Math.Abs(v.X - v2.X) <= 0.5); Assert.IsTrue(Math.Abs(v.Y - v2.Y) <= 0.5); Assert.IsTrue(Math.Abs(v.Z - v2.Z) <= 0.5); } else { Assert.AreEqual(v.X, v2.X); Assert.AreEqual(v.Y, v2.Y); Assert.AreEqual(v.Z, v2.Z); } Assert.AreEqual(bw.Length, br.Position); v = v2; } }
public void TestUIntFixedRoundTripSerialization(UInt32 value, int numBits) { for (var i = 0; i < 2; ++i) { var bw = new BitWriter(32); bw.WriteFixedBitCount(value, numBits); var br = new BitReader(bw.GetBits(0, bw.Length).ToArray()); var val2 = br.ReadUInt32FromBits(numBits); Assert.AreEqual(value, val2); Assert.AreEqual(bw.Length, br.Position); value = val2; } }