Skip to content

Commit 23be84e

Browse files
committed
Fixing tests and associated code
1 parent 1cf1329 commit 23be84e

File tree

3 files changed

+35
-22
lines changed

3 files changed

+35
-22
lines changed

Extensions/Csv/Cosmos.DataTransfer.CsvExtension.UnitTests/CsvWriterSettingsTests.cs

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public class CsvWriterSettingsTests
1717
public void TestDefault() {
1818
var settings = new CsvWriterSettings() { };
1919

20-
Assert.AreEqual(settings.GetCultureInfo(), CultureInfo.InvariantCulture);
21-
Assert.AreEqual(settings.Validate(new ValidationContext(this)).Count(), 0);
20+
Assert.AreEqual(CultureInfo.InvariantCulture, settings.GetCultureInfo());
21+
Assert.AreEqual(0, settings.Validate(new ValidationContext(this)).Count());
2222
}
2323

2424
[TestMethod]
@@ -30,8 +30,8 @@ public void TestInvariantCulture(string culture) {
3030
var settings = new CsvWriterSettings() {
3131
Culture = culture
3232
};
33-
Assert.AreEqual(settings.GetCultureInfo(), CultureInfo.InvariantCulture);
34-
Assert.AreEqual(settings.Validate(new ValidationContext(this)).Count(), 0);
33+
Assert.AreEqual(CultureInfo.InvariantCulture, settings.GetCultureInfo());
34+
Assert.AreEqual(0, settings.Validate(new ValidationContext(this)).Count());
3535
}
3636

3737
[TestMethod]
@@ -43,39 +43,49 @@ public void TestCurrentCulture(string culture) {
4343
var settings = new CsvWriterSettings() {
4444
Culture = culture
4545
};
46-
Assert.AreEqual(settings.GetCultureInfo(), CultureInfo.CurrentCulture);
47-
Assert.AreEqual(settings.Validate(new ValidationContext(this)).Count(), 0);
46+
Assert.AreEqual(CultureInfo.CurrentCulture, settings.GetCultureInfo());
47+
Assert.AreEqual(0, settings.Validate(new ValidationContext(this)).Count());
4848
}
4949

5050
[TestMethod]
5151
public void TestCurrentCultureByName() {
5252
var settings = new CsvWriterSettings() {
5353
Culture = CultureInfo.CurrentCulture.Name
5454
};
55-
Assert.AreEqual(settings.GetCultureInfo(), CultureInfo.CurrentCulture);
56-
Assert.AreEqual(settings.Validate(new ValidationContext(this)).Count(), 0);
55+
Assert.AreEqual(CultureInfo.CurrentCulture, settings.GetCultureInfo());
56+
Assert.AreEqual(0, settings.Validate(new ValidationContext(this)).Count());
5757
}
5858

5959
[TestMethod]
6060
public void TestCultureFails() {
6161
var settings = new CsvWriterSettings() {
6262
Culture = "not a culture"
6363
};
64-
var results = settings.Validate(new ValidationContext(this));
65-
Assert.AreEqual(results.Count(), 1);
66-
Assert.AreEqual(results.First().ErrorMessage, "Could not find CultureInfo `not a culture` on this system.");
64+
var results = settings.Validate(new ValidationContext(this)).ToArray();
65+
Assert.AreEqual(1, results.Count());
66+
Assert.AreEqual("Could not find CultureInfo `not a culture` on this system.", results.First().ErrorMessage);
6767
}
6868

6969
[TestMethod]
70-
[DataRow(null)]
71-
[DataRow("")]
72-
public void TestCultureMissing(string culture) {
70+
public void TestCultureMissing() {
7371
var settings = new CsvWriterSettings() {
74-
Culture = culture
72+
Culture = ""
73+
};
74+
var results = settings.Validate(new ValidationContext(this)).ToArray();
75+
Assert.AreEqual(1, results.Count());
76+
Assert.AreEqual("Culture missing.", results.First().ErrorMessage);
77+
}
78+
79+
[TestMethod]
80+
public void TestCultureNull()
81+
{
82+
var settings = new CsvWriterSettings()
83+
{
84+
Culture = null
7585
};
76-
var results = settings.Validate(new ValidationContext(this));
77-
Assert.AreEqual(results.Count(), 1);
78-
Assert.AreEqual(results.First().ErrorMessage, "Culture missing.");
86+
var results = settings.Validate(new ValidationContext(this)).ToArray();
87+
Assert.AreEqual(1, results.Count());
88+
Assert.AreEqual("Culture missing.", results.First().ErrorMessage);
7989
}
8090

8191
[TestMethod]
@@ -101,6 +111,6 @@ public async Task TestDanishCulture() {
101111

102112
await sink.WriteAsync(data.ToAsyncEnumerable(), config, new JsonFileSource(), NullLogger.Instance);
103113
var result = await File.ReadAllTextAsync(outputFile);
104-
Assert.AreEqual(result, "1,2");
114+
Assert.AreEqual("1,2", result);
105115
}
106116
}

Extensions/Csv/Cosmos.DataTransfer.CsvExtension/CsvFormatWriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public async Task FormatDataAsync(IAsyncEnumerable<IDataItem> dataItems, Stream
2424
await using var textWriter = new StreamWriter(target, leaveOpen: true);
2525
await using var writer = new CsvWriter(textWriter, new CsvConfiguration(settings.GetCultureInfo())
2626
{
27-
Delimiter = settings.Delimiter,
27+
Delimiter = settings.Delimiter ?? ",",
2828
HasHeaderRecord = settings.IncludeHeader,
2929
});
3030

Extensions/Csv/Cosmos.DataTransfer.CsvExtension/Settings/CsvWriterSettings.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ namespace Cosmos.DataTransfer.CsvExtension.Settings;
77
public class CsvWriterSettings : IDataExtensionSettings, IValidatableObject
88
{
99
public bool IncludeHeader { get; set; } = true;
10-
public string Delimiter { get; set; } = ",";
11-
public string Culture { get; set; } = "InvariantCulture";
10+
public string? Delimiter { get; set; } = ",";
11+
public string? Culture { get; set; } = "InvariantCulture";
1212
public CultureInfo GetCultureInfo() {
1313
switch (this.Culture?.ToLower())
1414
{
@@ -18,6 +18,9 @@ public CultureInfo GetCultureInfo() {
1818
case "current":
1919
case "currentculture":
2020
return CultureInfo.CurrentCulture;
21+
case "":
22+
case null:
23+
throw new ArgumentNullException();
2124
default: return CultureInfo.GetCultureInfo(this.Culture!);
2225
}
2326
}

0 commit comments

Comments
 (0)