Added some unit tests for TimeCode

This commit is contained in:
niksedk 2015-06-25 19:51:15 +02:00
parent f60f18ec19
commit c93b179030
3 changed files with 133 additions and 10 deletions

View File

@ -14,7 +14,7 @@ namespace Nikse.SubtitleEdit.Logic
{
get
{
return _totalMilliseconds == MaxTime.TotalMilliseconds;
return Math.Abs(_totalMilliseconds - MaxTime.TotalMilliseconds) < 0.01;
}
}
@ -180,8 +180,7 @@ namespace Nikse.SubtitleEdit.Logic
if (TotalMilliseconds >= 0)
return s;
else
return "-" + s.Replace("-", string.Empty);
return "-" + s.Replace("-", string.Empty);
}
public string ToShortString()
@ -197,30 +196,29 @@ namespace Nikse.SubtitleEdit.Logic
if (TotalMilliseconds >= 0)
return s;
else
return "-" + s.Replace("-", string.Empty);
return "-" + s.Replace("-", string.Empty);
}
public string ToShortStringHHMMSSFF()
{
var ts = TimeSpan;
if (ts.Minutes == 0 && ts.Hours == 0)
return string.Format("{0:00}:{1:00}", ts.Seconds, SubtitleFormats.SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
return string.Format("{0:00}:{1:00}", ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
if (ts.Hours == 0)
return string.Format("{0:00}:{1:00}:{2:00}", ts.Minutes, ts.Seconds, SubtitleFormats.SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormats.SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
return string.Format("{0:00}:{1:00}:{2:00}", ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
}
public string ToHHMMSSFF()
{
var ts = TimeSpan;
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormats.SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
return string.Format("{0:00}:{1:00}:{2:00}:{3:00}", ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
}
public string ToHHMMSSPeriodFF()
{
var ts = TimeSpan;
return string.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormats.SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
return string.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, SubtitleFormat.MillisecondsToFramesMaxFrameRate(ts.Milliseconds));
}
}

View File

@ -0,0 +1,124 @@
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Nikse.SubtitleEdit.Logic;
namespace Test.Logic
{
[TestClass]
public class TimeCodeTest
{
[TestMethod]
public void TimeCodeAddTime1()
{
var tc = new TimeCode(1000);
tc.AddTime(1000);
Assert.AreEqual(tc.TotalMilliseconds, 2000);
}
[TestMethod]
public void TimeCodeAddTime2()
{
var tc = new TimeCode(1000);
tc.AddTime(-1000);
Assert.AreEqual(tc.TotalMilliseconds, 0);
}
[TestMethod]
public void TimeCodeAddTime3()
{
var tc = new TimeCode(1000);
tc.AddTime(0, 0, 0, 1000);
Assert.AreEqual(tc.TotalMilliseconds, 2000);
}
[TestMethod]
public void TimeCodeAddTime4()
{
var tc = new TimeCode(1000);
tc.AddTime(0, 0, 1, 0);
Assert.AreEqual(tc.TotalMilliseconds, 2000);
}
[TestMethod]
public void TimeCodeAddTime5()
{
var tc = new TimeCode(1000);
tc.AddTime(0, 1, 0, 0);
Assert.AreEqual(tc.TotalMilliseconds, 60000 + 1000);
}
[TestMethod]
public void TimeCodeAddTime6()
{
var tc = new TimeCode(1000);
tc.AddTime(TimeSpan.FromMilliseconds(1000));
Assert.AreEqual(tc.TotalMilliseconds, 2000);
}
[TestMethod]
public void TimeCodeAddTime7()
{
var tc = new TimeCode(1000);
tc.AddTime(1000.0);
Assert.AreEqual(tc.TotalMilliseconds, 2000);
}
[TestMethod]
public void TimeCodeMilliseconds()
{
var tc = new TimeCode(1, 2, 3, 4) { Milliseconds = 9 };
Assert.AreEqual(tc.TotalMilliseconds, new TimeSpan(0, 1, 2, 3, 9).TotalMilliseconds);
}
[TestMethod]
public void TimeCodeSeconds1()
{
var tc = new TimeCode(1, 2, 3, 4) { Seconds = 9 };
Assert.AreEqual(tc.TotalMilliseconds, new TimeSpan(0, 1, 2, 9, 4).TotalMilliseconds);
}
[TestMethod]
public void TimeCodeMinutes1()
{
var tc = new TimeCode(1, 2, 3, 4) { Minutes = 9 };
Assert.AreEqual(tc.TotalMilliseconds, new TimeSpan(0, 1, 9, 3, 4).TotalMilliseconds);
}
[TestMethod]
public void TimeCodeHours1()
{
var tc = new TimeCode(1, 2, 3, 4) { Hours = 9 };
Assert.AreEqual(tc.TotalMilliseconds, new TimeSpan(0, 9, 2, 3, 4).TotalMilliseconds);
}
[TestMethod]
public void TimeCodeParseToMilliseconds1()
{
var ms = TimeCode.ParseToMilliseconds("01:02:03:999");
Assert.AreEqual(ms, new TimeSpan(0, 1, 2, 3, 999).TotalMilliseconds);
}
[TestMethod]
public void TimeCodeGetTotalMilliseconds()
{
var tc = new TimeCode(1, 2, 3, 4);
Assert.AreEqual(tc.TotalMilliseconds, 3723004);
Assert.IsTrue(Math.Abs(tc.TotalMilliseconds - (tc.TotalSeconds * 1000.0)) < 0.001);
}
}
}

View File

@ -55,6 +55,7 @@
<Compile Include="Logic\TransportStream\TransportStreamTest.cs" />
<Compile Include="Logic\ParagraphTest.cs" />
<Compile Include="Logic\StripableTextTest.cs" />
<Compile Include="Logic\TimeCodeTest.cs" />
<Compile Include="Logic\VideoFormats\MatroskaTest.cs" />
<Compile Include="Logic\VobSub\VobSubTest.cs" />
<Compile Include="Logic\Ocr\NOcrTest.cs" />