Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Commit 7b9e9e3

Browse files
committed
Fixing unit tests.
1 parent 7deba8f commit 7b9e9e3

8 files changed

Lines changed: 98 additions & 78 deletions

File tree

src/MMALSharp.FFmpeg/Handlers/FFmpegCaptureHandler.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public static FFmpegCaptureHandler RawVideoToAvi(string directory, string filena
3737
{
3838
System.IO.Directory.CreateDirectory(directory);
3939

40-
return new FFmpegCaptureHandler($"-re -i - -c:v copy -an -f avi {directory.TrimEnd()}/{filename}.avi");
40+
return new FFmpegCaptureHandler($"-re -i - -c:v copy -an -f avi -y {directory.TrimEnd()}/{filename}.avi");
4141
}
4242

4343
/// <summary>
@@ -57,34 +57,34 @@ public FFmpegCaptureHandler(string argument)
5757
Arguments = argument
5858
};
5959

60-
this._process = new Process();
61-
this._process.StartInfo = processStartInfo;
60+
_process = new Process();
61+
_process.StartInfo = processStartInfo;
6262

6363
try
6464
{
6565
Console.InputEncoding = Encoding.ASCII;
6666

67-
this._process.EnableRaisingEvents = true;
68-
this._process.OutputDataReceived += (object sendingProcess, DataReceivedEventArgs e) =>
67+
_process.EnableRaisingEvents = true;
68+
_process.OutputDataReceived += (object sendingProcess, DataReceivedEventArgs e) =>
6969
{
7070
if (e.Data != null)
7171
{
7272
Console.WriteLine(e.Data);
7373
}
7474
};
7575

76-
this._process.ErrorDataReceived += (object sendingProcess, DataReceivedEventArgs e) =>
76+
_process.ErrorDataReceived += (object sendingProcess, DataReceivedEventArgs e) =>
7777
{
7878
if (e.Data != null)
7979
{
8080
Console.WriteLine(e.Data);
8181
}
8282
};
8383

84-
this._process.Start();
84+
_process.Start();
8585

86-
this._process.BeginOutputReadLine();
87-
this._process.BeginErrorReadLine();
86+
_process.BeginOutputReadLine();
87+
_process.BeginErrorReadLine();
8888
}
8989
catch (Exception e)
9090
{
@@ -118,12 +118,12 @@ public void Process(byte[] data)
118118
{
119119
try
120120
{
121-
this._process.StandardInput.BaseStream.Write(data, 0, data.Length);
122-
this._process.StandardInput.BaseStream.Flush();
121+
_process.StandardInput.BaseStream.Write(data, 0, data.Length);
122+
_process.StandardInput.BaseStream.Flush();
123123
}
124124
catch
125125
{
126-
this._process.Kill();
126+
_process.Kill();
127127
throw;
128128
}
129129
}
@@ -134,8 +134,11 @@ public void Split()
134134
}
135135

136136
public void Dispose()
137-
{
138-
this._process.Kill();
137+
{
138+
if (!_process.HasExited)
139+
{
140+
_process.Kill();
141+
}
139142
}
140143
}
141144
}

tests/MMALSharp.Tests/ConfigurationTests.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,11 @@ public void SetThenGetColourFx(bool enable, byte u, byte v)
235235
MMALCameraConfig.ColourFx = colFx;
236236
_fixture.MMALCamera.ConfigureCameraSettings();
237237

238-
var uv = MMALColor.RGBToYUV(_fixture.MMALCamera.Camera.GetColourFx().Color);
239-
238+
var uv = MMALColor.RGBToYUVBytes(_fixture.MMALCamera.Camera.GetColourFx().Color);
239+
240240
Assert.True(_fixture.MMALCamera.Camera.GetColourFx().Enable == enable &&
241-
uv.Item1 == u &&
242-
uv.Item2 == v);
241+
uv.Item2 == u &&
242+
uv.Item3 == v);
243243
}
244244

245245
[Theory]
@@ -308,6 +308,9 @@ public void SetThenGetShutterSpeed(int shutterSpeed)
308308
{
309309
TestHelper.SetConfigurationDefaults();
310310

311+
MMALCameraConfig.StillFramerate = new MMAL_RATIONAL_T(0, 0);
312+
MMALCameraConfig.SensorMode = MMALSensorMode.Mode1;
313+
MMALCameraConfig.AwbMode = MMAL_PARAM_AWBMODE_T.MMAL_PARAM_AWBMODE_OFF;
311314
MMALCameraConfig.ShutterSpeed = shutterSpeed;
312315
_fixture.MMALCamera.ConfigureCameraSettings();
313316

tests/MMALSharp.Tests/FFmpegTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ public void RawVideoConvert()
5050
// Camera warm up time
5151
await Task.Delay(2000);
5252

53-
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(3));
53+
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1));
5454

55-
// Take video for 3 minutes.
55+
// Take video for 1 minute.
5656
await _fixture.MMALCamera.ProcessAsync(_fixture.MMALCamera.Camera.VideoPort, cts.Token);
5757

5858
_fixture.CheckAndAssertFilepath("/home/pi/videos/tests/testing1234.avi");
@@ -72,7 +72,7 @@ public void ImagesToVideo()
7272
TestHelper.CleanDirectory("/home/pi/images/tests");
7373

7474
// This example will take an image every 5 seconds for 1 minute.
75-
using (var imgCaptureHandler = new ImageStreamCaptureHandler("/home/pi/images/", "jpg"))
75+
using (var imgCaptureHandler = new ImageStreamCaptureHandler("/home/pi/images/tests", "jpg"))
7676
{
7777
var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1));
7878

tests/MMALSharp.Tests/ImageEncoderTests.cs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,31 +33,36 @@ public static IEnumerable<object[]> TakePictureData
3333
{
3434
get
3535
{
36-
yield return new object[] { TestData.JpegEncoderData.Cast<object[]>() };
37-
yield return new object[] { TestData.GifEncoderData.Cast<object[]>() };
38-
yield return new object[] { TestData.PngEncoderData.Cast<object[]>() };
39-
yield return new object[] { TestData.BmpEncoderData.Cast<object[]>() };
36+
var list = new List<object[]>();
37+
38+
list.AddRange(TestData.JpegEncoderData);
39+
list.AddRange(TestData.GifEncoderData);
40+
list.AddRange(TestData.PngEncoderData);
41+
list.AddRange(TestData.BmpEncoderData);
4042

4143
// TGA/PPM support is enabled by performing a firmware update "sudo rpi-update".
4244
// See: https://github.com/techyian/MMALSharp/issues/23
43-
//yield return new object[] { TestData.TgaEncoderData.Cast<object[]>() };
44-
//yield return new object[] { TestData.PpmEncoderData.Cast<object[]>() };
45+
46+
//list.AddRange(TestData.TgaEncoderData);
47+
//list.AddRange(TestData.PpmEncoderData);
48+
49+
return list;
4550
}
4651
}
4752

4853
public static IEnumerable<object[]> TakeRawPictureData
4954
{
5055
get
5156
{
52-
yield return new object[] { TestData.Yuv420EncoderData.Cast<object[]>() };
53-
yield return new object[] { TestData.Yuv422EncoderData.Cast<object[]>() };
54-
yield return new object[] { TestData.Rgb24EncoderData.Cast<object[]>() };
55-
yield return new object[] { TestData.Rgb24EncoderData.Cast<object[]>() };
56-
yield return new object[] { TestData.RgbaEncoderData.Cast<object[]>() };
57+
yield return TestData.Yuv420EncoderData;
58+
yield return TestData.Yuv422EncoderData;
59+
yield return TestData.Rgb24EncoderData;
60+
yield return TestData.Rgb24EncoderData;
61+
yield return TestData.RgbaEncoderData;
5762
}
5863
}
5964

60-
public static IEnumerable<object[]> TakePictureDataJpeg => TestData.JpegEncoderData.Cast<object[]>().ToList();
65+
public static IEnumerable<object[]> TakePictureDataJpeg => TestData.JpegEncoderData;
6166

6267
[Theory]
6368
[MemberData(nameof(TakePictureData))]

tests/MMALSharp.Tests/MMALSharp.Tests.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,10 @@
3838
</ItemGroup>
3939
<ItemGroup>
4040
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
41+
</ItemGroup>
42+
<ItemGroup>
43+
<None Update="xunit.runner.json">
44+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
45+
</None>
4146
</ItemGroup>
4247
</Project>

tests/MMALSharp.Tests/TestData.cs

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Collections.Generic;
99
using System.IO;
1010
using System.Linq;
11+
using MMALSharp.Components;
1112

1213
namespace MMALSharp.Tests
1314
{
@@ -34,7 +35,7 @@ public static void SetConfigurationDefaults()
3435
MMALCameraConfig.Rotation = 0;
3536
MMALCameraConfig.DrcLevel = MMAL_PARAMETER_DRC_STRENGTH_T.MMAL_PARAMETER_DRC_STRENGTH_OFF;
3637
MMALCameraConfig.ShutterSpeed = 0;
37-
38+
MMALCameraConfig.SensorMode = MMALSensorMode.Mode0;
3839
}
3940

4041
public static void CleanDirectory(string directory)
@@ -64,19 +65,19 @@ public class TestData
6465

6566
public static List<MMALEncoding> PixelFormats = MMALEncodingHelpers.EncodingList.Where(c => c.EncType == MMALEncoding.EncodingType.PixelFormat).ToList();
6667

67-
private static IEnumerable<object> GetVideoEncoderData(MMALEncoding encodingType, string extension)
68+
private static IEnumerable<object[]> GetVideoEncoderData(MMALEncoding encodingType, string extension)
6869
{
6970
var supportedEncodings = Fixture.MMALCamera.Camera.VideoPort.GetSupportedEncodings();
70-
return PixelFormats.Where(c => supportedEncodings.Contains(c.EncodingVal)).Select(pixFormat => new object[] { extension, encodingType, pixFormat });
71+
return PixelFormats.Where(c => supportedEncodings.Contains(c.EncodingVal)).Select(pixFormat => new object[] { extension, encodingType, pixFormat }).ToList();
7172
}
7273

73-
private static IEnumerable<object> GetImageEncoderData(MMALEncoding encodingType, string extension)
74+
private static IEnumerable<object[]> GetImageEncoderData(MMALEncoding encodingType, string extension)
7475
{
7576
var supportedEncodings = Fixture.MMALCamera.Camera.StillPort.GetSupportedEncodings();
76-
return PixelFormats.Where(c => supportedEncodings.Contains(c.EncodingVal)).Select(pixFormat => new object[] { extension, encodingType, pixFormat });
77+
return PixelFormats.Where(c => supportedEncodings.Contains(c.EncodingVal)).Select(pixFormat => new object[] { extension, encodingType, pixFormat }).ToList();
7778
}
7879

79-
private static IEnumerable<object> GetEncoderData(MMALEncoding encodingType, MMALEncoding pixelFormat, string extension)
80+
private static object[] GetEncoderData(MMALEncoding encodingType, MMALEncoding pixelFormat, string extension)
8081
{
8182
var supportedEncodings = Fixture.MMALCamera.Camera.StillPort.GetSupportedEncodings();
8283

@@ -90,62 +91,62 @@ private static IEnumerable<object> GetEncoderData(MMALEncoding encodingType, MMA
9091

9192
#region Still image encoders
9293

93-
public static IEnumerable<object> JpegEncoderData => GetImageEncoderData(MMALEncoding.JPEG, "jpg");
94+
public static IEnumerable<object[]> JpegEncoderData => GetImageEncoderData(MMALEncoding.JPEG, "jpg");
9495

95-
public static IEnumerable<object> GifEncoderData => GetImageEncoderData(MMALEncoding.GIF, "gif");
96+
public static IEnumerable<object[]> GifEncoderData => GetImageEncoderData(MMALEncoding.GIF, "gif");
9697

97-
public static IEnumerable<object> PngEncoderData => GetImageEncoderData(MMALEncoding.PNG, "png");
98+
public static IEnumerable<object[]> PngEncoderData => GetImageEncoderData(MMALEncoding.PNG, "png");
9899

99-
public static IEnumerable<object> PpmEncoderData => GetImageEncoderData(MMALEncoding.PPM, "ppm");
100+
public static IEnumerable<object[]> PpmEncoderData => GetImageEncoderData(MMALEncoding.PPM, "ppm");
100101

101-
public static IEnumerable<object> TgaEncoderData => GetImageEncoderData(MMALEncoding.TGA, "tga");
102+
public static IEnumerable<object[]> TgaEncoderData => GetImageEncoderData(MMALEncoding.TGA, "tga");
102103

103-
public static IEnumerable<object> BmpEncoderData => GetImageEncoderData(MMALEncoding.BMP, "bmp");
104+
public static IEnumerable<object[]> BmpEncoderData => GetImageEncoderData(MMALEncoding.BMP, "bmp");
104105

105106
#endregion
106107

107108
#region Video encoders
108109

109-
public static IEnumerable<object> H264EncoderData => GetVideoEncoderData(MMALEncoding.H264, "avi");
110+
public static IEnumerable<object[]> H264EncoderData => GetVideoEncoderData(MMALEncoding.H264, "avi");
110111

111-
public static IEnumerable<object> MvcEncoderData => GetVideoEncoderData(MMALEncoding.MVC, "mvc");
112+
public static IEnumerable<object[]> MvcEncoderData => GetVideoEncoderData(MMALEncoding.MVC, "mvc");
112113

113-
public static IEnumerable<object> H263EncoderData => GetVideoEncoderData(MMALEncoding.H263, "h263");
114+
public static IEnumerable<object[]> H263EncoderData => GetVideoEncoderData(MMALEncoding.H263, "h263");
114115

115-
public static IEnumerable<object> Mp4EncoderData => GetVideoEncoderData(MMALEncoding.MP4V, "mp4");
116+
public static IEnumerable<object[]> Mp4EncoderData => GetVideoEncoderData(MMALEncoding.MP4V, "mp4");
116117

117-
public static IEnumerable<object> Mp2EncoderData => GetVideoEncoderData(MMALEncoding.MP2V, "mp2");
118+
public static IEnumerable<object[]> Mp2EncoderData => GetVideoEncoderData(MMALEncoding.MP2V, "mp2");
118119

119-
public static IEnumerable<object> Mp1EncoderData => GetVideoEncoderData(MMALEncoding.MP1V, "mp1");
120+
public static IEnumerable<object[]> Mp1EncoderData => GetVideoEncoderData(MMALEncoding.MP1V, "mp1");
120121

121-
public static IEnumerable<object> Wmv3EncoderData => GetVideoEncoderData(MMALEncoding.WMV3, "wmv");
122+
public static IEnumerable<object[]> Wmv3EncoderData => GetVideoEncoderData(MMALEncoding.WMV3, "wmv");
122123

123-
public static IEnumerable<object> Wmv2EncoderData => GetVideoEncoderData(MMALEncoding.WMV2, "wmv");
124+
public static IEnumerable<object[]> Wmv2EncoderData => GetVideoEncoderData(MMALEncoding.WMV2, "wmv");
124125

125-
public static IEnumerable<object> Wmv1EncoderData => GetVideoEncoderData(MMALEncoding.WMV1, "wmv");
126+
public static IEnumerable<object[]> Wmv1EncoderData => GetVideoEncoderData(MMALEncoding.WMV1, "wmv");
126127

127-
public static IEnumerable<object> Wvc1EncoderData => GetVideoEncoderData(MMALEncoding.WVC1, "asf");
128+
public static IEnumerable<object[]> Wvc1EncoderData => GetVideoEncoderData(MMALEncoding.WVC1, "asf");
128129

129-
public static IEnumerable<object> Vp8EncoderData => GetVideoEncoderData(MMALEncoding.VP8, "webm");
130+
public static IEnumerable<object[]> Vp8EncoderData => GetVideoEncoderData(MMALEncoding.VP8, "webm");
130131

131-
public static IEnumerable<object> Vp7EncoderData => GetVideoEncoderData(MMALEncoding.VP7, "webm");
132+
public static IEnumerable<object[]> Vp7EncoderData => GetVideoEncoderData(MMALEncoding.VP7, "webm");
132133

133-
public static IEnumerable<object> Vp6EncoderData => GetVideoEncoderData(MMALEncoding.VP6, "webm");
134+
public static IEnumerable<object[]> Vp6EncoderData => GetVideoEncoderData(MMALEncoding.VP6, "webm");
134135

135-
public static IEnumerable<object> TheoraEncoderData => GetVideoEncoderData(MMALEncoding.THEORA, "ogv");
136+
public static IEnumerable<object[]> TheoraEncoderData => GetVideoEncoderData(MMALEncoding.THEORA, "ogv");
136137

137-
public static IEnumerable<object> SparkEncoderData => GetVideoEncoderData(MMALEncoding.SPARK, "flv");
138+
public static IEnumerable<object[]> SparkEncoderData => GetVideoEncoderData(MMALEncoding.SPARK, "flv");
138139

139-
public static IEnumerable<object> MjpegEncoderData => GetVideoEncoderData(MMALEncoding.MJPEG, "mjpeg");
140+
public static IEnumerable<object[]> MjpegEncoderData => GetVideoEncoderData(MMALEncoding.MJPEG, "mjpeg");
140141

141142
#endregion
142143

143144
#region Raw image encode
144145

145-
public static IEnumerable<object> Yuv420EncoderData => GetEncoderData(MMALEncoding.I420, MMALEncoding.I420, "i420");
146-
public static IEnumerable<object> Yuv422EncoderData => GetEncoderData(MMALEncoding.I422, MMALEncoding.I422, "i422");
147-
public static IEnumerable<object> Rgb24EncoderData => GetEncoderData(MMALEncoding.RGB24, MMALEncoding.RGB24, "rgb");
148-
public static IEnumerable<object> RgbaEncoderData => GetEncoderData(MMALEncoding.RGBA, MMALEncoding.RGBA, "rgba");
146+
public static object[] Yuv420EncoderData => GetEncoderData(MMALEncoding.I420, MMALEncoding.I420, "i420");
147+
public static object[] Yuv422EncoderData => GetEncoderData(MMALEncoding.I422, MMALEncoding.I422, "i422");
148+
public static object[] Rgb24EncoderData => GetEncoderData(MMALEncoding.RGB24, MMALEncoding.RGB24, "rgb");
149+
public static object[] RgbaEncoderData => GetEncoderData(MMALEncoding.RGBA, MMALEncoding.RGBA, "rgba");
149150

150151
#endregion
151152

0 commit comments

Comments
 (0)