|
|
|
@ -17,23 +17,20 @@ namespace ImageSharp.Tests |
|
|
|
[Fact] |
|
|
|
public void Constructor() |
|
|
|
{ |
|
|
|
using (FileStream stream = File.OpenRead(TestImages.Jpeg.Calliphora)) |
|
|
|
{ |
|
|
|
Image image = new Image(stream); |
|
|
|
Image image = TestImages.Jpeg.Calliphora.CreateImage(); |
|
|
|
|
|
|
|
Assert.Null(image.ExifProfile); |
|
|
|
Assert.Null(image.ExifProfile); |
|
|
|
|
|
|
|
image.ExifProfile = new ExifProfile(); |
|
|
|
image.ExifProfile.SetValue(ExifTag.Copyright, "Dirk Lemstra"); |
|
|
|
image.ExifProfile = new ExifProfile(); |
|
|
|
image.ExifProfile.SetValue(ExifTag.Copyright, "Dirk Lemstra"); |
|
|
|
|
|
|
|
image = WriteAndRead(image); |
|
|
|
image = WriteAndRead(image); |
|
|
|
|
|
|
|
Assert.NotNull(image.ExifProfile); |
|
|
|
Assert.Equal(1, image.ExifProfile.Values.Count()); |
|
|
|
Assert.NotNull(image.ExifProfile); |
|
|
|
Assert.Equal(1, image.ExifProfile.Values.Count()); |
|
|
|
|
|
|
|
ExifValue value = image.ExifProfile.Values.FirstOrDefault(val => val.Tag == ExifTag.Copyright); |
|
|
|
TestValue(value, "Dirk Lemstra"); |
|
|
|
} |
|
|
|
ExifValue value = image.ExifProfile.Values.FirstOrDefault(val => val.Tag == ExifTag.Copyright); |
|
|
|
TestValue(value, "Dirk Lemstra"); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -107,30 +104,27 @@ namespace ImageSharp.Tests |
|
|
|
[Fact] |
|
|
|
public void ReadWriteInfinity() |
|
|
|
{ |
|
|
|
using (FileStream stream = File.OpenRead(TestImages.Jpeg.Floorplan)) |
|
|
|
{ |
|
|
|
Image image = new Image(stream); |
|
|
|
image.ExifProfile.SetValue(ExifTag.ExposureBiasValue, new SignedRational(double.PositiveInfinity)); |
|
|
|
Image image = TestImages.Jpeg.Floorplan.CreateImage(); |
|
|
|
image.ExifProfile.SetValue(ExifTag.ExposureBiasValue, new SignedRational(double.PositiveInfinity)); |
|
|
|
|
|
|
|
image = WriteAndRead(image); |
|
|
|
ExifValue value = image.ExifProfile.GetValue(ExifTag.ExposureBiasValue); |
|
|
|
Assert.NotNull(value); |
|
|
|
Assert.Equal(new SignedRational(double.PositiveInfinity), value.Value); |
|
|
|
image = WriteAndRead(image); |
|
|
|
ExifValue value = image.ExifProfile.GetValue(ExifTag.ExposureBiasValue); |
|
|
|
Assert.NotNull(value); |
|
|
|
Assert.Equal(new SignedRational(double.PositiveInfinity), value.Value); |
|
|
|
|
|
|
|
image.ExifProfile.SetValue(ExifTag.ExposureBiasValue, new SignedRational(double.NegativeInfinity)); |
|
|
|
image.ExifProfile.SetValue(ExifTag.ExposureBiasValue, new SignedRational(double.NegativeInfinity)); |
|
|
|
|
|
|
|
image = WriteAndRead(image); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ExposureBiasValue); |
|
|
|
Assert.NotNull(value); |
|
|
|
Assert.Equal(new SignedRational(double.NegativeInfinity), value.Value); |
|
|
|
image = WriteAndRead(image); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ExposureBiasValue); |
|
|
|
Assert.NotNull(value); |
|
|
|
Assert.Equal(new SignedRational(double.NegativeInfinity), value.Value); |
|
|
|
|
|
|
|
image.ExifProfile.SetValue(ExifTag.FlashEnergy, new Rational(double.NegativeInfinity)); |
|
|
|
image.ExifProfile.SetValue(ExifTag.FlashEnergy, new Rational(double.NegativeInfinity)); |
|
|
|
|
|
|
|
image = WriteAndRead(image); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.FlashEnergy); |
|
|
|
Assert.NotNull(value); |
|
|
|
Assert.Equal(new Rational(double.PositiveInfinity), value.Value); |
|
|
|
} |
|
|
|
image = WriteAndRead(image); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.FlashEnergy); |
|
|
|
Assert.NotNull(value); |
|
|
|
Assert.Equal(new Rational(double.PositiveInfinity), value.Value); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -138,75 +132,72 @@ namespace ImageSharp.Tests |
|
|
|
{ |
|
|
|
Rational[] latitude = new Rational[] { new Rational(12.3), new Rational(4.56), new Rational(789.0) }; |
|
|
|
|
|
|
|
using (FileStream stream = File.OpenRead(TestImages.Jpeg.Floorplan)) |
|
|
|
{ |
|
|
|
Image image = new Image(stream); |
|
|
|
image.ExifProfile.SetValue(ExifTag.Software, "ImageSharp"); |
|
|
|
Image image = TestImages.Jpeg.Floorplan.CreateImage(); |
|
|
|
image.ExifProfile.SetValue(ExifTag.Software, "ImageSharp"); |
|
|
|
|
|
|
|
ExifValue value = image.ExifProfile.GetValue(ExifTag.Software); |
|
|
|
TestValue(value, "ImageSharp"); |
|
|
|
ExifValue value = image.ExifProfile.GetValue(ExifTag.Software); |
|
|
|
TestValue(value, "ImageSharp"); |
|
|
|
|
|
|
|
Assert.Throws<ArgumentException>(() => { value.Value = 15; }); |
|
|
|
Assert.Throws<ArgumentException>(() => { value.Value = 15; }); |
|
|
|
|
|
|
|
image.ExifProfile.SetValue(ExifTag.ShutterSpeedValue, new SignedRational(75.55)); |
|
|
|
image.ExifProfile.SetValue(ExifTag.ShutterSpeedValue, new SignedRational(75.55)); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ShutterSpeedValue); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ShutterSpeedValue); |
|
|
|
|
|
|
|
TestValue(value, new SignedRational(7555, 100)); |
|
|
|
TestValue(value, new SignedRational(7555, 100)); |
|
|
|
|
|
|
|
Assert.Throws<ArgumentException>(() => { value.Value = 75; }); |
|
|
|
Assert.Throws<ArgumentException>(() => { value.Value = 75; }); |
|
|
|
|
|
|
|
image.ExifProfile.SetValue(ExifTag.XResolution, new Rational(150.0)); |
|
|
|
image.ExifProfile.SetValue(ExifTag.XResolution, new Rational(150.0)); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.XResolution); |
|
|
|
TestValue(value, new Rational(150, 1)); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.XResolution); |
|
|
|
TestValue(value, new Rational(150, 1)); |
|
|
|
|
|
|
|
Assert.Throws<ArgumentException>(() => { value.Value = "ImageSharp"; }); |
|
|
|
Assert.Throws<ArgumentException>(() => { value.Value = "ImageSharp"; }); |
|
|
|
|
|
|
|
image.ExifProfile.SetValue(ExifTag.ReferenceBlackWhite, null); |
|
|
|
image.ExifProfile.SetValue(ExifTag.ReferenceBlackWhite, null); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ReferenceBlackWhite); |
|
|
|
TestValue(value, (string)null); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ReferenceBlackWhite); |
|
|
|
TestValue(value, (string)null); |
|
|
|
|
|
|
|
image.ExifProfile.SetValue(ExifTag.GPSLatitude, latitude); |
|
|
|
image.ExifProfile.SetValue(ExifTag.GPSLatitude, latitude); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.GPSLatitude); |
|
|
|
TestValue(value, latitude); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.GPSLatitude); |
|
|
|
TestValue(value, latitude); |
|
|
|
|
|
|
|
image = WriteAndRead(image); |
|
|
|
image = WriteAndRead(image); |
|
|
|
|
|
|
|
Assert.NotNull(image.ExifProfile); |
|
|
|
Assert.Equal(17, image.ExifProfile.Values.Count()); |
|
|
|
Assert.NotNull(image.ExifProfile); |
|
|
|
Assert.Equal(17, image.ExifProfile.Values.Count()); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.Software); |
|
|
|
TestValue(value, "ImageSharp"); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.Software); |
|
|
|
TestValue(value, "ImageSharp"); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ShutterSpeedValue); |
|
|
|
TestValue(value, new SignedRational(75.55)); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ShutterSpeedValue); |
|
|
|
TestValue(value, new SignedRational(75.55)); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.XResolution); |
|
|
|
TestValue(value, new Rational(150.0)); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.XResolution); |
|
|
|
TestValue(value, new Rational(150.0)); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ReferenceBlackWhite); |
|
|
|
Assert.Null(value); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.ReferenceBlackWhite); |
|
|
|
Assert.Null(value); |
|
|
|
|
|
|
|
value = image.ExifProfile.GetValue(ExifTag.GPSLatitude); |
|
|
|
TestValue(value, latitude); |
|
|
|
value = image.ExifProfile.GetValue(ExifTag.GPSLatitude); |
|
|
|
TestValue(value, latitude); |
|
|
|
|
|
|
|
image.ExifProfile.Parts = ExifParts.ExifTags; |
|
|
|
image.ExifProfile.Parts = ExifParts.ExifTags; |
|
|
|
|
|
|
|
image = WriteAndRead(image); |
|
|
|
image = WriteAndRead(image); |
|
|
|
|
|
|
|
Assert.NotNull(image.ExifProfile); |
|
|
|
Assert.Equal(8, image.ExifProfile.Values.Count()); |
|
|
|
Assert.NotNull(image.ExifProfile); |
|
|
|
Assert.Equal(8, image.ExifProfile.Values.Count()); |
|
|
|
|
|
|
|
Assert.NotNull(image.ExifProfile.GetValue(ExifTag.ColorSpace)); |
|
|
|
Assert.True(image.ExifProfile.RemoveValue(ExifTag.ColorSpace)); |
|
|
|
Assert.False(image.ExifProfile.RemoveValue(ExifTag.ColorSpace)); |
|
|
|
Assert.Null(image.ExifProfile.GetValue(ExifTag.ColorSpace)); |
|
|
|
Assert.NotNull(image.ExifProfile.GetValue(ExifTag.ColorSpace)); |
|
|
|
Assert.True(image.ExifProfile.RemoveValue(ExifTag.ColorSpace)); |
|
|
|
Assert.False(image.ExifProfile.RemoveValue(ExifTag.ColorSpace)); |
|
|
|
Assert.Null(image.ExifProfile.GetValue(ExifTag.ColorSpace)); |
|
|
|
|
|
|
|
Assert.Equal(7, image.ExifProfile.Values.Count()); |
|
|
|
} |
|
|
|
Assert.Equal(7, image.ExifProfile.Values.Count()); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -241,15 +232,12 @@ namespace ImageSharp.Tests |
|
|
|
|
|
|
|
private static ExifProfile GetExifProfile() |
|
|
|
{ |
|
|
|
using (FileStream stream = File.OpenRead(TestImages.Jpeg.Floorplan)) |
|
|
|
{ |
|
|
|
Image image = new Image(stream); |
|
|
|
Image image = TestImages.Jpeg.Floorplan.CreateImage(); |
|
|
|
|
|
|
|
ExifProfile profile = image.ExifProfile; |
|
|
|
Assert.NotNull(profile); |
|
|
|
ExifProfile profile = image.ExifProfile; |
|
|
|
Assert.NotNull(profile); |
|
|
|
|
|
|
|
return profile; |
|
|
|
} |
|
|
|
return profile; |
|
|
|
} |
|
|
|
|
|
|
|
private static Image WriteAndRead(Image image) |
|
|
|
|