|
|
@@ -70,5 +70,27 @@ namespace IvfTl.ControlHost.Tests
|
|
|
Assert.Single(frames);
|
|
|
Assert.Equal(jpeg, frames[0]);
|
|
|
}
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void BadHeaderWithoutContentLength_SkippedThenRecovers()
|
|
|
+ {
|
|
|
+ var jpeg = new byte[] { 0xFF, 0xD8, 7, 0xFF, 0xD9 };
|
|
|
+ var bad = Encoding.ASCII.GetBytes("--frame\r\nContent-Type: image/jpeg\r\n\r\n"); // 无 Content-Length
|
|
|
+ var data = new List<byte>();
|
|
|
+ data.AddRange(bad);
|
|
|
+ data.AddRange(MakeFrame(jpeg));
|
|
|
+ var p = new MjpegFrameParser();
|
|
|
+ var frames = new List<byte[]>(p.Feed(data.ToArray(), data.Count));
|
|
|
+ Assert.Single(frames);
|
|
|
+ Assert.Equal(jpeg, frames[0]);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void EmptyInput_ReturnsEmpty_NoThrow()
|
|
|
+ {
|
|
|
+ var p = new MjpegFrameParser();
|
|
|
+ var frames = new List<byte[]>(p.Feed(new byte[0], 0));
|
|
|
+ Assert.Empty(frames);
|
|
|
+ }
|
|
|
}
|
|
|
}
|