Browse Source

Improve coverage.

pull/662/head
James Jackson-South 8 years ago
parent
commit
0f15e303cf
  1. 4
      src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFileMarker.cs
  2. 1
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs
  3. 1
      src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs
  4. 3
      src/ImageSharp/IO/DoubleBufferedStreamReader.cs
  5. 3
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DoubleBufferedStreams.cs
  6. 25
      tests/ImageSharp.Tests/Formats/Jpg/JpegFileMarkerTests.cs
  7. 25
      tests/ImageSharp.Tests/IO/DoubleBufferedStreamReaderTests.cs

4
src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFileMarker.cs

@ -16,10 +16,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
/// <param name="marker">The marker</param>
/// <param name="position">The position within the stream</param>
public JpegFileMarker(byte marker, long position)
: this(marker, position, false)
{
this.Marker = marker;
this.Position = position;
this.Invalid = false;
}
/// <summary>

1
src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0.
using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.IO;
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
{

1
src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs

@ -10,6 +10,7 @@ using System.Runtime.InteropServices;
using SixLabors.ImageSharp.Common.Helpers;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.IO;
using SixLabors.ImageSharp.MetaData;
using SixLabors.ImageSharp.MetaData.Profiles.Exif;
using SixLabors.ImageSharp.MetaData.Profiles.Icc;

3
src/ImageSharp/Formats/Jpeg/Components/Decoder/DoubleBufferedStreamReader.cs → src/ImageSharp/IO/DoubleBufferedStreamReader.cs

@ -7,8 +7,7 @@ using System.Runtime.CompilerServices;
using SixLabors.Memory;
// TODO: This could be useful elsewhere.
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
namespace SixLabors.ImageSharp.IO
{
/// <summary>
/// A stream reader that add a secondary level buffer in addition to native stream buffered reading

3
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DoubleBufferedStreams.cs

@ -4,8 +4,7 @@
using System;
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.IO;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{

25
tests/ImageSharp.Tests/Formats/Jpg/JpegFileMarkerTests.cs

@ -0,0 +1,25 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{
public class JpegFileMarkerTests
{
[Fact]
public void MarkerConstructorAssignsProperties()
{
const byte app1 = JpegConstants.Markers.APP1;
const int position = 5;
var marker = new JpegFileMarker(app1, position);
Assert.Equal(app1, marker.Marker);
Assert.Equal(position, marker.Position);
Assert.False(marker.Invalid);
Assert.Equal(app1.ToString("X"), marker.ToString());
}
}
}

25
tests/ImageSharp.Tests/Formats/Jpg/DoubleBufferedStreamReaderTests.cs → tests/ImageSharp.Tests/IO/DoubleBufferedStreamReaderTests.cs

@ -3,12 +3,11 @@
using System;
using System.IO;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.IO;
using SixLabors.Memory;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg
namespace SixLabors.ImageSharp.Tests.IO
{
public class DoubleBufferedStreamReaderTests
{
@ -30,6 +29,24 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
}
[Fact]
public void DoubleBufferedStreamReaderCanReadSingleByteFromOffset()
{
using (MemoryStream stream = this.CreateTestStream())
{
byte[] expected = stream.ToArray();
const int offset = 5;
var reader = new DoubleBufferedStreamReader(this.allocator, stream);
reader.Position = offset;
Assert.Equal(expected[offset], reader.ReadByte());
// We've read a whole chunk but increment by 1 in our reader.
Assert.Equal(stream.Position, DoubleBufferedStreamReader.ChunkLength + offset);
Assert.Equal(offset + 1, reader.Position);
}
}
[Fact]
public void DoubleBufferedStreamReaderCanReadSubsequentSingleByteCorrectly()
{
@ -139,7 +156,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
// Skip Again
reader.Skip(skip2);
// First Skap + First Read + Second Skip
// First Skip + First Read + Second Skip
int position = skip + plusOne + skip2;
Assert.Equal(position, reader.Position);
Loading…
Cancel
Save