Skip to content

Commit decedfd

Browse files
authored
Add TryAdd to SepWriterHeader (#311)
1 parent 2ec79ce commit decedfd

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

src/Sep.Test/SepWriterHeaderTest.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,36 @@ public void SepWriterHeaderTest_Add_Twice_Throws()
163163
Assert.AreEqual("Column name 'A' already exists (Parameter 'colName')", e.Message);
164164
}
165165

166+
[TestMethod]
167+
public void SepWriterHeaderTest_TryAdd_Once_Is_True()
168+
{
169+
using var writer = CreateWriter();
170+
var header = writer.Header;
171+
172+
Assert.IsTrue(header.TryAdd("A"));
173+
}
174+
175+
[TestMethod]
176+
public void SepWriterHeaderTest_TryAdd_Twice_Is_False()
177+
{
178+
using var writer = CreateWriter();
179+
var header = writer.Header;
180+
header.Add("A");
181+
182+
Assert.IsFalse(header.TryAdd("A"));
183+
}
184+
185+
[TestMethod]
186+
public void SepWriterHeaderTest_TryAdd_After_Written_Is_False()
187+
{
188+
using var writer = CreateWriter();
189+
var header = writer.Header;
190+
header.Add("A");
191+
header.Write();
192+
193+
Assert.IsFalse(header.TryAdd("B"));
194+
}
195+
166196
[TestMethod]
167197
public void SepWriterHeaderTest_Add_After_Written_Throws()
168198
{

src/Sep/SepWriterHeader.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,20 @@ public void Add(string colName)
4545
_writer.AddCol(colName);
4646
}
4747

48+
public bool TryAdd(string colName)
49+
{
50+
if (_writer._headerWrittenOrSkipped)
51+
{
52+
return false;
53+
}
54+
if (_writer._colNameToCol.ContainsKey(colName))
55+
{
56+
return false;
57+
}
58+
_writer.AddCol(colName);
59+
return true;
60+
}
61+
4862
public void Write() => _writer.WriteHeader();
4963
public ValueTask WriteAsync(CancellationToken cancellationToken = default) =>
5064
_writer.WriteHeaderAsync(cancellationToken);

0 commit comments

Comments
 (0)