Skip to content

Commit c54c96c

Browse files
added unit tests
1 parent 4b42a85 commit c54c96c

2 files changed

Lines changed: 118 additions & 1 deletion

File tree

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
//This file is part of AudioCuesheetEditor.
2+
3+
//AudioCuesheetEditor is free software: you can redistribute it and/or modify
4+
//it under the terms of the GNU General Public License as published by
5+
//the Free Software Foundation, either version 3 of the License, or
6+
//(at your option) any later version.
7+
8+
//AudioCuesheetEditor is distributed in the hope that it will be useful,
9+
//but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
//GNU General Public License for more details.
12+
13+
//You should have received a copy of the GNU General Public License
14+
//along with Foobar. If not, see
15+
//<http: //www.gnu.org/licenses />.
16+
using AudioCuesheetEditor.Data.Options;
17+
using AudioCuesheetEditor.Model.AudioCuesheet;
18+
using AudioCuesheetEditor.Model.Options;
19+
using AudioCuesheetEditor.Services.UI;
20+
using Microsoft.VisualStudio.TestTools.UnitTesting;
21+
using Moq;
22+
using System;
23+
using System.Linq.Expressions;
24+
using System.Threading.Tasks;
25+
26+
namespace AudioCuesheetEditor.Tests.Services.UI
27+
{
28+
[TestClass()]
29+
public class ApplicationOptionsTimeSpanParserTests
30+
{
31+
[TestMethod]
32+
public async Task TimespanTextChanged_ValidInput_SetsPropertyCorrectly()
33+
{
34+
// Arrange
35+
var options = new ApplicationOptions()
36+
{
37+
TimeSpanFormat = new()
38+
{
39+
Scheme = "Minutes:Seconds"
40+
}
41+
};
42+
var mockOptionsProvider = new Mock<ILocalStorageOptionsProvider>();
43+
mockOptionsProvider
44+
.Setup(p => p.GetOptions<ApplicationOptions>())
45+
.ReturnsAsync(options);
46+
var parser = new ApplicationOptionsTimeSpanParser(mockOptionsProvider.Object);
47+
await Task.Delay(50);
48+
var track = new Track();
49+
// Act
50+
await parser.TimespanTextChanged(track, x => x.Begin, "92:12");
51+
// Assert
52+
Assert.AreEqual(new TimeSpan(1, 32, 12), track.Begin);
53+
}
54+
55+
[TestMethod]
56+
public async Task TimespanTextChanged_InvalidInput_SetsNull()
57+
{
58+
var options = new ApplicationOptions()
59+
{
60+
TimeSpanFormat = new()
61+
{
62+
Scheme = "Minutes:Seconds"
63+
}
64+
};
65+
var mockOptionsProvider = new Mock<ILocalStorageOptionsProvider>();
66+
mockOptionsProvider
67+
.Setup(p => p.GetOptions<ApplicationOptions>())
68+
.ReturnsAsync(options);
69+
var parser = new ApplicationOptionsTimeSpanParser(mockOptionsProvider.Object);
70+
await Task.Delay(50);
71+
var track = new Track();
72+
// Act
73+
await parser.TimespanTextChanged(track, x => x.End, "not a time");
74+
// Assert
75+
Assert.IsNull(track.End);
76+
}
77+
78+
[TestMethod()]
79+
public async Task GetTimespanFormatted_ValidFormat_ReturnsCorrectString()
80+
{
81+
// Arrange
82+
var options = new ApplicationOptions()
83+
{
84+
DisplayTimeSpanFormat = @"hh\:mm\:ss"
85+
};
86+
var mockOptionsProvider = new Mock<ILocalStorageOptionsProvider>();
87+
mockOptionsProvider
88+
.Setup(p => p.GetOptions<ApplicationOptions>())
89+
.ReturnsAsync(options);
90+
var parser = new ApplicationOptionsTimeSpanParser(mockOptionsProvider.Object);
91+
await Task.Delay(50);
92+
// Act
93+
var result = parser.GetTimespanFormatted(new TimeSpan(0, 1, 30, 27, 200, 103));
94+
// Assert
95+
Assert.AreEqual("01:30:27", result);
96+
}
97+
98+
[TestMethod()]
99+
public async Task GetTimespanFormatted_InvalidFormat_FallbackToDefault()
100+
{
101+
// Arrange
102+
var options = new ApplicationOptions()
103+
{
104+
DisplayTimeSpanFormat = "INVALID_FORMAT"
105+
};
106+
var mockOptionsProvider = new Mock<ILocalStorageOptionsProvider>();
107+
mockOptionsProvider
108+
.Setup(p => p.GetOptions<ApplicationOptions>())
109+
.ReturnsAsync(options);
110+
var parser = new ApplicationOptionsTimeSpanParser(mockOptionsProvider.Object);
111+
await Task.Delay(50);
112+
// Act
113+
var result = parser.GetTimespanFormatted(new TimeSpan(0, 1, 30, 27, 200, 103));
114+
// Assert
115+
Assert.AreEqual("01:30:27.2001030", result);
116+
}
117+
}
118+
}

AudioCuesheetEditor/Services/UI/ApplicationOptionsTimeSpanParser.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ public async Task TimespanTextChanged<T, TProperty>(T entity, Expression<Func<T,
5656
}
5757
}
5858

59-
//TODO: Unit Tests
6059
public string? GetTimespanFormatted(TimeSpan? timeSpan)
6160
{
6261
string? formatted = null;

0 commit comments

Comments
 (0)