private void VerifyProperty(String name, int size) { DocumentProperty property = new DocumentProperty(name, size); if (size >= 4096) { Assert.IsTrue(!property.ShouldUseSmallBlocks); } else { Assert.IsTrue(property.ShouldUseSmallBlocks); } byte[] Testblock = new byte[128]; int index = 0; for (; index < 0x40; index++) { Testblock[index] = (byte)0; } int limit = Math.Min(31, name.Length); Testblock[index++] = (byte)(2 * (limit + 1)); Testblock[index++] = (byte)0; Testblock[index++] = (byte)2; Testblock[index++] = (byte)1; for (; index < 0x50; index++) { Testblock[index] = (byte)0xFF; } for (; index < 0x78; index++) { Testblock[index] = (byte)0; } int sz = size; Testblock[index++] = (byte)sz; sz /= 256; Testblock[index++] = (byte)sz; sz /= 256; Testblock[index++] = (byte)sz; sz /= 256; Testblock[index++] = (byte)sz; for (; index < 0x80; index++) { Testblock[index] = (byte)0x0; } byte[] name_bytes = Encoding.UTF8.GetBytes(name); for (index = 0; index < limit; index++) { Testblock[index * 2] = name_bytes[index]; } MemoryStream stream = new MemoryStream(512); property.WriteData(stream); byte[] output = stream.ToArray(); Assert.AreEqual(Testblock.Length, output.Length); for (int j = 0; j < Testblock.Length; j++) { Assert.AreEqual(Testblock[j], output[j], "mismatch at offset " + j); } }
private void VerifyReadingProperty(int index, byte[] input, int offset, string name) { DocumentProperty property = new DocumentProperty(index, input, offset); MemoryStream stream = new MemoryStream(128); byte[] expected = new byte[128]; Array.Copy(input, offset, expected, 0, 128); property.WriteData(stream); byte[] output = stream.ToArray(); Assert.AreEqual(128, output.Length); for (int j = 0; j < 128; j++) { Assert.AreEqual(expected[j], output[j], "mismatch at offset " + j); } Assert.AreEqual(index, property.Index); Assert.AreEqual(name, property.Name); }