📷 A modern, cross-platform, 2D Graphics library for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

132 lines
3.9 KiB

// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
namespace SixLabors.ImageSharp.Tests
{
using System.IO;
using Xunit;
using ImageSharp.Formats.Tiff;
public class TiffWriterTests
{
[Fact]
public void IsLittleEndian_IsTrueOnWindows()
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
Assert.True(writer.IsLittleEndian);
}
}
[Theory]
[InlineData(new byte[] {}, 0)]
[InlineData(new byte[] { 42 }, 1)]
[InlineData(new byte[] { 1, 2, 3, 4, 5 }, 5)]
public void Position_EqualsTheStreamPosition(byte[] data, long expectedResult)
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.Write(data);
Assert.Equal(writer.Position, expectedResult);
}
}
[Fact]
public void Write_WritesByte()
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.Write((byte)42);
}
Assert.Equal(new byte[] { 42 }, stream.ToArray());
}
[Fact]
public void Write_WritesByteArray()
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.Write(new byte[] { 2, 4, 6, 8 });
}
Assert.Equal(new byte[] { 2, 4, 6, 8 }, stream.ToArray());
}
[Fact]
public void Write_WritesUInt16()
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.Write((ushort)1234);
}
Assert.Equal(new byte[] { 0xD2, 0x04 }, stream.ToArray());
}
[Fact]
public void Write_WritesUInt32()
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.Write((uint)12345678);
}
Assert.Equal(new byte[] { 0x4E, 0x61, 0xBC, 0x00 }, stream.ToArray());
}
[Theory]
[InlineData(new byte[] { }, new byte[] { 0, 0, 0, 0 })]
[InlineData(new byte[] { 2 }, new byte[] { 2, 0, 0, 0 })]
[InlineData(new byte[] { 2, 4 }, new byte[] { 2, 4, 0, 0 })]
[InlineData(new byte[] { 2, 4, 6 }, new byte[] { 2, 4, 6, 0 })]
[InlineData(new byte[] { 2, 4, 6, 8 }, new byte[] { 2, 4, 6, 8 })]
[InlineData(new byte[] { 2, 4, 6, 8, 10, 12 }, new byte[] { 2, 4, 6, 8, 10, 12 })]
public void WritePadded_WritesByteArray(byte[] bytes, byte[] expectedResult)
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.WritePadded(bytes);
}
Assert.Equal(expectedResult, stream.ToArray());
}
[Fact]
public void WriteMarker_WritesToPlacedPosition()
{
MemoryStream stream = new MemoryStream();
using (TiffWriter writer = new TiffWriter(stream))
{
writer.Write((uint)0x11111111);
long marker = writer.PlaceMarker();
writer.Write((uint)0x33333333);
writer.WriteMarker(marker, 0x12345678);
writer.Write((uint)0x44444444);
}
Assert.Equal(new byte[] { 0x11, 0x11, 0x11, 0x11,
0x78, 0x56, 0x34, 0x12,
0x33, 0x33, 0x33, 0x33,
0x44, 0x44, 0x44, 0x44 }, stream.ToArray());
}
}
}