"""Python 3.10+; run this file to execute its round-trip tests.""" import csv import io import unittest def encode(rows): stream = io.StringIO(newline="") csv.writer(stream, lineterminator="\r\n").writerows(rows) return stream.getvalue() def decode(text): return list(csv.reader(io.StringIO(text, newline=""), strict=True)) class RoundTripTests(unittest.TestCase): def test_round_trip(self): rows = [["name", "note"], ["Ada, Jr.", 'says "hello"'], ["雪", "line one\nline two"], ["", ""]] self.assertEqual(decode(encode(rows)), rows) def test_split_is_not_a_parser(self): self.assertEqual(len('"Ada, Jr.",ok'.split(",")), 3) self.assertEqual(len(decode('"Ada, Jr.",ok')[0]), 2) def test_none_needs_an_application_policy(self): self.assertEqual(decode(encode([[None, ""]])), [["", ""]]) if __name__ == "__main__": unittest.main()