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
|
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>();
|
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 columnTypes = new List<Type>();
|
||||||
var columnNames = new List<string>();
|
var columnNames = new List<string>();
|
||||||
var columnPropertyInfos = new List<PropertyInfo>();
|
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");
|
Console.WriteLine("Done with tests");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user