Fix file comment serialization
This commit is contained in:
parent
0fd092685d
commit
b8ae3ce65d
@ -1174,13 +1174,23 @@ public class SaneTsv
|
||||
|
||||
public static byte[] SerializeCommentedTsv<T>(IList<T> data, string fileComment) where T : CommentedTsvRecord
|
||||
{
|
||||
return SerializeTsv<T>(data, FormatType.COMMENTED_TSV);
|
||||
return SerializeTsv<T>(data, FormatType.COMMENTED_TSV, fileComment);
|
||||
}
|
||||
|
||||
protected static byte[] SerializeTsv<T>(IList<T> data, FormatType tsvFormat)
|
||||
protected static byte[] SerializeTsv<T>(IList<T> data, FormatType tsvFormat, string fileComment = null)
|
||||
{
|
||||
var bytes = new List<byte>();
|
||||
|
||||
if (fileComment != null)
|
||||
{
|
||||
if (tsvFormat != FormatType.COMMENTED_TSV)
|
||||
{
|
||||
throw new Exception($"File comments are not valid for {tsvFormat}");
|
||||
}
|
||||
|
||||
bytes.AddRange(Encoding.UTF8.GetBytes("#" + fileComment.Replace("\n", "\n#") + "\n"));
|
||||
}
|
||||
|
||||
var columnTypes = new List<Type>();
|
||||
var columnNames = new List<string>();
|
||||
var columnPropertyInfos = new List<PropertyInfo>();
|
||||
|
@ -759,6 +759,30 @@ internal class Program : SaneTsv
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
string testName = "File comment serde";
|
||||
|
||||
string testString1 = "#this is a file comment" +
|
||||
"\n# and one more line since you're such a good customer" +
|
||||
"\ncolumn1:type:boolean\tcolumn2:binary\tcolumnthree\\nyep:string" +
|
||||
"\nTRUE\tvalue\\\\t\0woo\tvaluetrhee" +
|
||||
"\nFALSE\tnother\tno\\ther";
|
||||
|
||||
|
||||
CommentedTsv<BoolTestRecord2> parsed = SaneTsv.ParseCommentedTsv<BoolTestRecord2>(Encoding.UTF8.GetBytes(testString1));
|
||||
|
||||
string reserialized = Encoding.UTF8.GetString(SaneTsv.SerializeCommentedTsv<BoolTestRecord2>(parsed.Records, parsed.FileComment));
|
||||
|
||||
if (reserialized == testString1)
|
||||
{
|
||||
Console.WriteLine($"Passed {testName}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"Failed {testName}");
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine("Done with tests");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user