Skip to content

Commit 9d619db

Browse files
committed
Added more tests
1 parent db94bd8 commit 9d619db

File tree

1 file changed

+129
-1
lines changed

1 file changed

+129
-1
lines changed

UnitTests/UnitTests.cs

Lines changed: 129 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,15 @@ public void TestGeneric()
8282
Assert.IsTrue(csv.Trim() == "sep=,\r\nId,Name\r\n123,Ffff\r\n321,ddd", csv);
8383
}
8484

85+
[TestMethod]
86+
public void TestEmpty()
87+
{
88+
var myExport = new CsvExport();
89+
string csv = myExport.Export();
90+
91+
Assert.IsTrue(csv.Trim() == "sep=,", csv);
92+
}
93+
8594
[TestMethod]
8695
public void WriteToFile()
8796
{
@@ -104,11 +113,130 @@ public void WriteToFile()
104113

105114
File.Delete(filePath);
106115
}
116+
117+
[TestMethod]
118+
public void TestConstructorParameters()
119+
{
120+
// Test custom separator
121+
var export1 = new CsvExport(";");
122+
export1.AddRow();
123+
export1["Name"] = "John";
124+
export1["Value"] = "Test;Data";
125+
string result1 = export1.Export();
126+
Assert.IsTrue(result1.Contains("sep=;"));
127+
Assert.IsTrue(result1.Contains("Name;Value"));
128+
Assert.IsTrue(result1.Contains("\"Test;Data\""));
129+
130+
// Test no preamble
131+
var export2 = new CsvExport(",", false);
132+
export2.AddRow();
133+
export2["Name"] = "John";
134+
string result2 = export2.Export();
135+
Assert.IsFalse(result2.Contains("sep="));
136+
Assert.IsTrue(result2.StartsWith("Name\r\n"));
137+
138+
// Test no header
139+
var export3 = new CsvExport(",", true, false);
140+
export3.AddRow();
141+
export3["Name"] = "John";
142+
string result3 = export3.Export();
143+
Assert.IsTrue(result3.Contains("sep="));
144+
Assert.IsFalse(result3.Contains("Name\r\n"));
145+
Assert.IsTrue(result3.Contains("John"));
146+
}
147+
148+
[TestMethod]
149+
public void TestNullValues()
150+
{
151+
var myExport = new CsvExport();
152+
myExport.AddRow();
153+
myExport["Name"] = "John";
154+
myExport["Value"] = null;
155+
myExport["Number"] = 123;
156+
157+
string csv = myExport.Export();
158+
Assert.IsTrue(csv.Contains("John,,123"));
159+
}
160+
161+
[TestMethod]
162+
public void TestSpecialCharacters()
163+
{
164+
var myExport = new CsvExport();
165+
myExport.AddRow();
166+
myExport["Newline"] = "Line1\nLine2";
167+
myExport["CarriageReturn"] = "Text1\rText2";
168+
myExport["Both"] = "Start\r\nEnd";
169+
170+
string csv = myExport.Export();
171+
Assert.IsTrue(csv.Contains("\"Line1\nLine2\""));
172+
Assert.IsTrue(csv.Contains("\"Text1\rText2\""));
173+
Assert.IsTrue(csv.Contains("\"Start\r\nEnd\""));
174+
}
175+
176+
[TestMethod]
177+
public void TestLargeDataTruncation()
178+
{
179+
var myExport = new CsvExport();
180+
myExport.AddRow();
181+
// Create a string longer than 30000 characters
182+
string largeText = new string('A', 35000);
183+
myExport["LargeText"] = largeText;
184+
185+
string csv = myExport.Export();
186+
// Should be truncated to 30000 characters
187+
Assert.IsTrue(csv.Contains(new string('A', 30000)));
188+
Assert.IsFalse(csv.Contains(new string('A', 30001)));
189+
}
190+
191+
[TestMethod]
192+
public void TestSetValueWithoutAddRow()
193+
{
194+
var myExport = new CsvExport();
195+
// Setting value without calling AddRow first should be ignored
196+
myExport["Name"] = "Should be ignored";
197+
198+
myExport.AddRow();
199+
myExport["Name"] = "John";
200+
201+
string csv = myExport.Export();
202+
Assert.IsFalse(csv.Contains("Should be ignored"));
203+
Assert.IsTrue(csv.Contains("John"));
204+
}
205+
206+
[TestMethod]
207+
public void TestDifferentDataTypes()
208+
{
209+
var myExport = new CsvExport();
210+
myExport.AddRow();
211+
myExport["Bool"] = true;
212+
myExport["Decimal"] = 123.45m;
213+
myExport["Double"] = 67.89;
214+
myExport["Float"] = 12.34f;
215+
myExport["Long"] = 9876543210L;
216+
217+
string csv = myExport.Export();
218+
Assert.IsTrue(csv.Contains("True"));
219+
Assert.IsTrue(csv.Contains("123.45"));
220+
Assert.IsTrue(csv.Contains("67.89"));
221+
Assert.IsTrue(csv.Contains("12.34"));
222+
Assert.IsTrue(csv.Contains("9876543210"));
223+
}
224+
225+
[TestMethod]
226+
public void TestEmptyGenericCollection()
227+
{
228+
List<MyClass> emptyList = new();
229+
var myExport = new CsvExport();
230+
myExport.AddRows(emptyList);
231+
232+
string csv = myExport.Export();
233+
Assert.AreEqual("sep=,", csv.Trim());
234+
}
107235
}
108236

109237
public class MyClass
110238
{
111239
public int Id { get; set; }
112-
public string Name { get; set; }
240+
public string Name { get; set; } = string.Empty;
113241
}
114242
}

0 commit comments

Comments
 (0)