summaryrefslogtreecommitdiff
path: root/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/CsvWriterMappingTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/CsvWriterMappingTests.cs')
-rw-r--r--ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/CsvWriterMappingTests.cs350
1 files changed, 350 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/CsvWriterMappingTests.cs b/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/CsvWriterMappingTests.cs
new file mode 100644
index 0000000..82ddc1f
--- /dev/null
+++ b/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/CsvWriterMappingTests.cs
@@ -0,0 +1,350 @@
+// Copyright 2009-2022 Josh Close
+// This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0.
+// See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0.
+// https://github.com/JoshClose/CsvHelper
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using CsvHelper.Configuration;
+using Xunit;
+
+namespace CsvHelper.Tests
+{
+
+ public class CsvWriterMappingTests
+ {
+ [Fact]
+ public void WriteMultipleNamesTest()
+ {
+ var records = new List<MultipleNamesClass>
+ {
+ new MultipleNamesClass { IntColumn = 1, StringColumn = "one" },
+ new MultipleNamesClass { IntColumn = 2, StringColumn = "two" }
+ };
+
+ string csv;
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture))
+ {
+ csvWriter.Context.RegisterClassMap<MultipleNamesClassMap>();
+ csvWriter.WriteRecords(records);
+
+ writer.Flush();
+ stream.Position = 0;
+
+ csv = reader.ReadToEnd();
+ }
+
+ var expected = string.Empty;
+ expected += "int1,string1\r\n";
+ expected += "1,one\r\n";
+ expected += "2,two\r\n";
+
+ Assert.NotNull(csv);
+ Assert.Equal(expected, csv);
+ }
+
+ [Fact]
+ public void SameNameMultipleTimesTest()
+ {
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
+ {
+ var records = new List<SameNameMultipleTimesClass>
+ {
+ new SameNameMultipleTimesClass
+ {
+ Name1 = "1",
+ Name2 = "2",
+ Name3 = "3"
+ }
+ };
+ csv.Context.RegisterClassMap<SameNameMultipleTimesClassMap>();
+ csv.WriteRecords(records);
+ writer.Flush();
+ stream.Position = 0;
+
+ var text = reader.ReadToEnd();
+ var expected = "ColumnName,ColumnName,ColumnName\r\n1,2,3\r\n";
+ Assert.Equal(expected, text);
+ }
+ }
+
+ [Fact]
+ public void ConvertUsingTest()
+ {
+ var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+ {
+ HasHeaderRecord = false,
+ };
+ string result;
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csv = new CsvWriter(writer, config))
+ {
+ var records = new List<TestClass>
+ {
+ new TestClass { IntColumn = 1 }
+ };
+
+ csv.Context.RegisterClassMap<ConvertUsingMap>();
+ csv.WriteRecords(records);
+ writer.Flush();
+ stream.Position = 0;
+
+ result = reader.ReadToEnd();
+ }
+
+ Assert.Equal("Converted1\r\n", result);
+ }
+
+ [Fact]
+ public void ConvertUsingBlockTest()
+ {
+ var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+ {
+ HasHeaderRecord = false,
+ };
+ string result;
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csv = new CsvWriter(writer, config))
+ {
+ var records = new List<TestClass>
+ {
+ new TestClass { IntColumn = 1 }
+ };
+
+ csv.Context.RegisterClassMap<ConvertUsingBlockMap>();
+ csv.WriteRecords(records);
+ writer.Flush();
+ stream.Position = 0;
+
+ result = reader.ReadToEnd();
+ }
+
+ Assert.Equal("Converted1\r\n", result);
+ }
+
+ [Fact]
+ public void ConvertUsingConstantTest()
+ {
+ var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+ {
+ HasHeaderRecord = false,
+ };
+ string result;
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csv = new CsvWriter(writer, config))
+ {
+ var records = new List<TestClass>
+ {
+ new TestClass { IntColumn = 1 }
+ };
+
+ csv.Context.RegisterClassMap<ConvertUsingConstantMap>();
+ csv.WriteRecords(records);
+ writer.Flush();
+ stream.Position = 0;
+
+ result = reader.ReadToEnd();
+ }
+
+ Assert.Equal("Constant\r\n", result);
+ }
+
+
+ [Fact]
+ public void ConvertUsingNullTest()
+ {
+ var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+ {
+ Delimiter = ";",
+ HasHeaderRecord = false,
+ };
+ using (var writer = new StringWriter())
+ using (var csv = new CsvWriter(writer, config))
+ {
+ var records = new List<MultipleNamesClass>
+ {
+ new MultipleNamesClass { IntColumn = 1, StringColumn = "test" }
+ };
+
+ csv.Context.RegisterClassMap<ConvertUsingNullMap>();
+ csv.WriteRecords(records);
+
+ Assert.Equal(";test\r\n", writer.ToString());
+ }
+ }
+
+ [Fact]
+ public void ConvertUsingInstanceMethodTest()
+ {
+ var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+ {
+ HasHeaderRecord = false,
+ };
+ string result;
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csv = new CsvWriter(writer, config))
+ {
+ var records = new List<TestClass>
+ {
+ new TestClass { IntColumn = 1 }
+ };
+
+ csv.Context.RegisterClassMap<ConvertUsingInstanceMethodMap>();
+ csv.WriteRecords(records);
+ writer.Flush();
+ stream.Position = 0;
+
+ result = reader.ReadToEnd();
+ }
+
+ Assert.Equal("Converted1\r\n", result);
+ }
+
+ [Fact]
+ public void ConvertUsingStaticFunctionTest()
+ {
+ var config = new CsvConfiguration(CultureInfo.InvariantCulture)
+ {
+ HasHeaderRecord = false,
+ };
+ string result;
+ using (var stream = new MemoryStream())
+ using (var reader = new StreamReader(stream))
+ using (var writer = new StreamWriter(stream))
+ using (var csv = new CsvWriter(writer, config))
+ {
+ var records = new List<TestClass>
+ {
+ new TestClass { IntColumn = 1 }
+ };
+
+ csv.Context.RegisterClassMap<ConvertUsingStaticFunctionMap>();
+ csv.WriteRecords(records);
+ writer.Flush();
+ stream.Position = 0;
+
+ result = reader.ReadToEnd();
+ }
+
+ Assert.Equal("Converted1\r\n", result);
+ }
+
+ private class SameNameMultipleTimesClass
+ {
+ public string Name1 { get; set; }
+
+ public string Name2 { get; set; }
+
+ public string Name3 { get; set; }
+ }
+
+ private sealed class SameNameMultipleTimesClassMap : ClassMap<SameNameMultipleTimesClass>
+ {
+ public SameNameMultipleTimesClassMap()
+ {
+ Map(m => m.Name1).Name("ColumnName").NameIndex(1);
+ Map(m => m.Name2).Name("ColumnName").NameIndex(2);
+ Map(m => m.Name3).Name("ColumnName").NameIndex(0);
+ }
+ }
+
+ private class MultipleNamesClass
+ {
+ public int IntColumn { get; set; }
+
+ public string StringColumn { get; set; }
+ }
+
+ private sealed class MultipleNamesClassMap : ClassMap<MultipleNamesClass>
+ {
+ public MultipleNamesClassMap()
+ {
+ Map(m => m.IntColumn).Name("int1", "int2", "int3");
+ Map(m => m.StringColumn).Name("string1", "string2", "string3");
+ }
+ }
+
+ private class TestClass
+ {
+ public int IntColumn { get; set; }
+ }
+
+ private sealed class ConvertUsingMap : ClassMap<TestClass>
+ {
+ public ConvertUsingMap()
+ {
+ Map(m => m.IntColumn).Convert(args => $"Converted{args.Value.IntColumn}");
+ }
+ }
+
+ private sealed class ConvertUsingBlockMap : ClassMap<TestClass>
+ {
+ public ConvertUsingBlockMap()
+ {
+ Map(m => m.IntColumn).Convert(args =>
+ {
+ var x = "Converted";
+ x += args.Value.IntColumn;
+ return x;
+ });
+ }
+ }
+
+ private sealed class ConvertUsingConstantMap : ClassMap<TestClass>
+ {
+ public ConvertUsingConstantMap()
+ {
+ Map(m => m.IntColumn).Convert(m => "Constant");
+ }
+ }
+
+ private sealed class ConvertUsingNullMap : ClassMap<MultipleNamesClass>
+ {
+ public ConvertUsingNullMap()
+ {
+ Map(m => m.IntColumn).Convert(m => (string)null);
+ Map(m => m.StringColumn).Convert(args => args.Value.StringColumn);
+ }
+ }
+
+ private sealed class ConvertUsingInstanceMethodMap : ClassMap<TestClass>
+ {
+ public ConvertUsingInstanceMethodMap()
+ {
+ Map(m => m.IntColumn).Convert(ConvertToStringFunction);
+ }
+
+ private string ConvertToStringFunction(ConvertToStringArgs<TestClass> args)
+ {
+ return $"Converted{args.Value.IntColumn}";
+ }
+ }
+
+ private sealed class ConvertUsingStaticFunctionMap : ClassMap<TestClass>
+ {
+ public ConvertUsingStaticFunctionMap()
+ {
+ Map(m => m.IntColumn).Convert(ConvertToStringFunction);
+ }
+
+ private static string ConvertToStringFunction(ConvertToStringArgs<TestClass> args)
+ {
+ return $"Converted{args.Value.IntColumn}";
+ }
+ }
+ }
+}