WriterTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. using ExcelORM;
  2. namespace ExcelORMTests;
  3. public class WriterTests
  4. {
  5. private readonly Test[] arrayOfThree =
  6. {
  7. new() { Name = "Bilbo", Surname = "Baggins", Job = "Eater"},
  8. new() { Name = "John", Job = "Policeman"},
  9. new() { Name = "Bruce", Surname = "Lee", Job = "Fighter"}
  10. };
  11. private readonly List<Test> listOfTwo = new()
  12. {
  13. new Test { Name = "Elon", Surname = "Musk", Job = "Comedian"},
  14. new Test { Name = "Donald", Surname = "Trump", Job = "Bankrupt"},
  15. };
  16. private readonly TestSkip[] arrayWithSkip =
  17. {
  18. new() {Text = "Lorem", Date = DateTime.Now.AddHours(1), Int = 1},
  19. new() {Text = "Ipsum", Date = null, Int = 2},
  20. };
  21. [Fact]
  22. public void WriteWithAppend()
  23. {
  24. var testFile = Path.GetRandomFileName();
  25. testFile = Path.ChangeExtension(testFile, "xlsx");
  26. const string worksheetName = "Test";
  27. var writer = new ExcelWriter(testFile);
  28. writer.Write(arrayOfThree, worksheetName);
  29. writer.SaveAs(testFile);
  30. var reader = new ExcelReader(testFile);
  31. var readArray = reader.Read<Test>(worksheetName).ToArray();
  32. Assert.Equal(3, readArray.Length);
  33. for (int i = 0; i < readArray.Length; i++)
  34. Assert.Equal(arrayOfThree[i], readArray[i]);
  35. writer.Write(listOfTwo, worksheetName, true);
  36. writer.SaveAs(testFile);
  37. reader = new ExcelReader(testFile);
  38. Assert.Equal(5, reader.Read<Test>(worksheetName).Count());
  39. File.Delete(testFile);
  40. }
  41. [Fact]
  42. public void WriteWithAppendWithoutName()
  43. {
  44. var testFile = Path.GetRandomFileName();
  45. testFile = Path.ChangeExtension(testFile, "xlsx");
  46. var writer = new ExcelWriter(testFile);
  47. writer.Write(arrayOfThree);
  48. writer.SaveAs(testFile);
  49. var reader = new ExcelReader(testFile);
  50. Assert.Equal(arrayOfThree.Length, reader.Read<Test>().Count());
  51. writer.Write(listOfTwo, append: true);
  52. writer.SaveAs(testFile);
  53. reader = new ExcelReader(testFile);
  54. Assert.Equal(5, reader.Read<Test>().Count());
  55. File.Delete(testFile);
  56. }
  57. [Fact]
  58. public void WriteDifferentTypes()
  59. {
  60. var testFile = Path.GetRandomFileName();
  61. testFile = Path.ChangeExtension(testFile, "xlsx");
  62. var expected = new TestTypes
  63. {
  64. Date = DateTime.Now,
  65. TimeSpan = TimeSpan.MaxValue,
  66. Double = 2.33,
  67. Int = 1024,
  68. Text = "Test"
  69. };
  70. var list = new List<TestTypes>{ expected };
  71. var writer = new ExcelWriter(testFile);
  72. writer.Write(list);
  73. writer.SaveAs(testFile);
  74. var reader = new ExcelReader(testFile);
  75. var result = reader.Read<TestTypes>().ToList();
  76. Assert.Single(result);
  77. var first = result.First();
  78. Assert.Equal(expected.Date.ToString(), first.Date.ToString());
  79. Assert.Equal(expected.TimeSpan, first.TimeSpan);
  80. Assert.Equal(expected.Double, first.Double);
  81. Assert.Equal(expected.Int, first.Int);
  82. Assert.Equal(expected.Text, first.Text);
  83. File.Delete(testFile);
  84. }
  85. [Fact]
  86. public void WriteWithSkip()
  87. {
  88. var testFile = Path.GetRandomFileName();
  89. testFile = Path.ChangeExtension(testFile, "xlsx");
  90. const string worksheetName = "Test";
  91. var writer = new ExcelWriter(testFile);
  92. writer.Write(arrayWithSkip, worksheetName);
  93. writer.SaveAs(testFile);
  94. var reader = new ExcelReader(testFile);
  95. var readArray = reader.Read<TestSkip>(worksheetName).ToArray();
  96. Assert.Equal(arrayWithSkip.Length, readArray.Length);
  97. for (int i = 0; i < readArray.Length; i++)
  98. {
  99. Assert.Equal(arrayWithSkip[i].Date.ToString(), readArray[i].Date.ToString());
  100. Assert.Equal(arrayWithSkip[i].Int, readArray[i].Int);
  101. }
  102. File.Delete(testFile);
  103. }
  104. }