public void Position_EqualsTheStreamPosition(byte[] data, long expectedResult) { using var stream = new MemoryStream(); using var writer = new TiffStreamWriter(stream); writer.Write(data); Assert.Equal(writer.Position, expectedResult); }
public void WriteMarker_WritesToPlacedPosition() { using var stream = new MemoryStream(); using (var writer = new TiffStreamWriter(stream)) { writer.Write(0x11111111); long marker = writer.PlaceMarker(); writer.Write(0x33333333); writer.WriteMarker(marker, 0x12345678); writer.Write(0x44444444); } Assert.Equal( new byte[] { 0x11, 0x11, 0x11, 0x11, 0x78, 0x56, 0x34, 0x12, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44 }, stream.ToArray()); }
public void CanFinalizeShortTag() { var artist = "Bob"; var tag = new Tag <char> { DataType = TagDataType.ASCII, ID = (ushort)BaselineTags.Artist, Length = (uint)artist.Length + 1, Values = artist.ToASCIIArray() }; using (var stream = new TiffStreamWriter()) { stream.WriteDWord(1); stream.WriteTagPlaceholder(tag); stream.FinalizeTag(tag); var data = stream.ToArray(); Assert.Equal(4u, tag.Offset); Assert.Equal(4u, tag.Length); Assert.Equal(16, data.Length); Assert.Equal(artist, Encoding.ASCII.GetString(tag.RawValue).Trim('\0')); } }
public void CanWriteTagPlaceholder() { var tag = new Tag { DataType = TagDataType.Short, ID = (ushort)BaselineTags.BitsPerSample, Length = 1 }; using (var stream = new TiffStreamWriter()) { stream.WriteTagPlaceholder(tag); var data = stream.ToArray(); Assert.True(data.SequenceEqual(new byte[] { 0x02, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })); } using (var stream = new TiffStreamWriter(forceBigEndian: true)) { stream.WriteTagPlaceholder(tag); var data = stream.ToArray(); Assert.True(data.SequenceEqual(new byte[] { 0x01, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 })); } }
public void CanFinalizeLongTag() { var artist = "Ansel Adams"; var tag = new Tag <char> { DataType = TagDataType.ASCII, ID = (ushort)BaselineTags.Artist, Length = (uint)artist.Length + 1, Values = artist.ToASCIIArray() }; using (var stream = new TiffStreamWriter()) { stream.WriteDWord(1); stream.WriteTagPlaceholder(tag); stream.FinalizeTag(tag); var data = stream.ToArray(); Assert.Equal(4u, tag.Offset); Assert.Equal(12u, tag.Length); Assert.Equal(28, data.Length); Assert.True(tag.RawValue.SequenceEqual(BitConverter.GetBytes(16u))); } }
public void WritePadded_WritesByteArray(byte[] bytes, byte[] expectedResult) { using var stream = new MemoryStream(); using var writer = new TiffStreamWriter(stream); writer.WritePadded(bytes); Assert.Equal(expectedResult, stream.ToArray()); }
public void Write_WritesUInt32() { using var stream = new MemoryStream(); using var writer = new TiffStreamWriter(stream); writer.Write(12345678U); Assert.Equal(new byte[] { 0x4E, 0x61, 0xBC, 0x00 }, stream.ToArray()); }
public void Write_WritesUInt16() { using var stream = new MemoryStream(); using var writer = new TiffStreamWriter(stream); writer.Write(1234); Assert.Equal(new byte[] { 0xD2, 0x04 }, stream.ToArray()); }
public void Write_WritesByteArray() { using var stream = new MemoryStream(); using var writer = new TiffStreamWriter(stream); writer.Write(new byte[] { 2, 4, 6, 8 }); Assert.Equal(new byte[] { 2, 4, 6, 8 }, stream.ToArray()); }
public void WriteHeader_ReturnsFirstIfdMarker() { using var stream = new MemoryStream(); var encoder = new TiffEncoderCore(Options, MemoryAllocator); using (var writer = new TiffStreamWriter(stream)) { long firstIfdMarker = encoder.WriteHeader(writer); Assert.Equal(4, firstIfdMarker); } }
public void WriteHeader_WritesValidHeader() { using var stream = new MemoryStream(); var encoder = new TiffEncoderCore(Options, MemoryAllocator); using (var writer = new TiffStreamWriter(stream)) { long firstIfdMarker = encoder.WriteHeader(writer); } Assert.Equal(new byte[] { 0x49, 0x49, 42, 0, 0x00, 0x00, 0x00, 0x00 }, stream.ToArray()); }
public void WriteTagPlaceholderUpdatesOffset() { var tag = new Tag { DataType = TagDataType.ASCII, ID = (ushort)BaselineTags.Artist, Length = 1 }; using (var stream = new TiffStreamWriter()) { stream.WriteTagPlaceholder(tag); stream.WriteTagPlaceholder(tag); Assert.Equal(24, stream.Length); Assert.Equal(12u, tag.Offset); } }
public void CanWriteHeader() { using (var stream = new TiffStreamWriter()) { stream.WriteHeader(); var header = stream.ToArray(); Assert.True(header.SequenceEqual(new byte[] { 0x49, 0x49, 0x2a, 0x00 })); } using (var stream = new TiffStreamWriter(forceBigEndian: true)) { stream.WriteHeader(); var header = stream.ToArray(); Assert.True(header.SequenceEqual(new byte[] { 0x4d, 0x4d, 0x00, 0x2a })); } }
public void CanWriteDWord() { using (var stream = new TiffStreamWriter()) { stream.WriteDWord(42); var data = stream.ToArray(); Assert.True(data.SequenceEqual(new byte[] { 0x2a, 0x00, 0x00, 0x00 })); } using (var stream = new TiffStreamWriter(forceBigEndian: true)) { stream.WriteDWord(42); var data = stream.ToArray(); Assert.True(data.SequenceEqual(new byte[] { 0x00, 0x00, 0x00, 0x2a })); } }
public void IsLittleEndian_IsTrueOnWindows() { using var stream = new MemoryStream(); using var writer = new TiffStreamWriter(stream); Assert.True(writer.IsLittleEndian); }