SmallestCSVParserTests/UnitTest1.cs
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Text;
using System.Text.Json;
using SmallestCSV;
[TestClass]
public class SmallestCSVParserTest
{
[TestMethod]
public void Test1() {
using var sr = new StreamReader("test1.csv");
var parser = new SmallestCSVParser(sr);
string[][] expected = [
[ "a", "b", " c ", " 1 2 \"3\" ", "\"4\"" ],
[ "d", "e", "f" ],
[ "", "", "" ],
[ "" ],
[ "single_field" ],
[ "a", "b", " c ",
" some \r\n emoji \uD83D\uDE0A and \r\nembedded , commas, and \r\n\"new\"\r\nlines ",
" 3"],
];
var rows = readAllRows(() => parser.ReadNextRow()).ToList();
compareRows(expected: expected, actual: rows);
}
[TestMethod]
public void Test1Raw() {
using var sr = new StreamReader("test1.csv");
var parser = new SmallestCSVParser(sr);
string[][] expected = [
[ "a", "b", " c ", "\" 1 2 \"3\" \"", "\"\"4\"\"" ],
[ "d", "e", "f" ],
[ "", "\"\"", "" ],
[ "" ],
[ "single_field" ],
[ "a", "b", " c ",
"\" some \r\n emoji \uD83D\uDE0A and \r\nembedded , commas, and \r\n\"new\"\r\nlines \"",
" 3"],
];
var rows = readAllRows(() => parser.ReadNextRow(removeEnclosingQuotes:false)).ToList();
compareRows(expected: expected, actual: rows);
}
[TestMethod]
public void TestErrorQuoteEOF() {
string data = "\"this_field_is_not_terminated_by_quote";
using var sr = streamReaderFromString(data);
var parser = new SmallestCSVParser(sr);
var e = Assert.ThrowsException<SmallestCSVParser.Error>(() => parser.ReadNextRow());
Assert.AreEqual("EOF reached inside quoted column", e.Message);
}
[TestMethod]
public void TestErrorUnknownChar() {
string data = "\"this_field_has_garbage_after\" ";
using var sr = streamReaderFromString(data);
后面还有 96 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。