ReaderTests.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. using ExcelORM;
  2. namespace ExcelORMTests;
  3. public class ReaderTests
  4. {
  5. private const string RegularFile = "testFiles/first.xlsx";
  6. private const string HiddenFile = "testFiles/hidden.xlsx";
  7. private const string FilteredFile = "testFiles/filtered.xlsx";
  8. private const string DifficultFile = "testFiles/columnsOnTheLeftHeaderNotFirstRow.xlsx";
  9. private const string MultipleSheetsFile = "testFiles/multipleSheets.xlsx";
  10. private const string DifferentTypesFile = "testFiles/differentTypes.xlsx";
  11. private const string WithFormulaFile = "testFiles/withFormula.xlsx";
  12. private const string AdditionalTypes = "testFiles/additionalTypes.xlsx";
  13. [Fact]
  14. public void Read()
  15. {
  16. using var reader = new ExcelReader(RegularFile);
  17. var results = reader.Read<Test>().ToArray();
  18. Assert.NotEmpty(results);
  19. }
  20. [Fact]
  21. public void ReadHidden()
  22. {
  23. using var reader = new ExcelReader(HiddenFile);
  24. var results = reader.Read<Test>().ToArray();
  25. Assert.NotEmpty(results);
  26. using var readerHidden = new ExcelReader(HiddenFile) { SkipHidden = true };
  27. var resultsHidden = readerHidden.Read<Test>().ToArray();
  28. Assert.NotEmpty(resultsHidden);
  29. Assert.NotEqual(results.Length, resultsHidden.Length);
  30. }
  31. [Fact]
  32. public void ReadFiltered()
  33. {
  34. using var reader = new ExcelReader(FilteredFile);
  35. var results = reader.Read<Test>().ToArray();
  36. Assert.NotEmpty(results);
  37. using var readerFiltered = new ExcelReader(FilteredFile) { ObeyFilter = true };
  38. var resultsFiltered = readerFiltered.Read<Test>().ToArray();
  39. Assert.NotEmpty(resultsFiltered);
  40. Assert.NotEqual(results.Length, resultsFiltered.Length);
  41. }
  42. [Fact]
  43. public void ReadDifficult()
  44. {
  45. using var reader = new ExcelReader(DifficultFile);
  46. var results = reader.Read<Test>("Tab").ToArray();
  47. Assert.NotEmpty(results);
  48. var resultsWithTitle = reader.Read<Test>("WithTitle", startFrom: 2).ToArray();
  49. Assert.Equal(results.Length, resultsWithTitle.Length);
  50. var resultsBadHeader = reader.Read<Test>("BadHeader").ToArray();
  51. Assert.NotEmpty(resultsBadHeader);
  52. Assert.All(resultsBadHeader, x => Assert.Null(x.Name));
  53. Assert.All(resultsBadHeader, x => Assert.Null(x.Surname));
  54. Assert.All(resultsBadHeader, x => Assert.NotNull(x.Job));
  55. }
  56. [Fact]
  57. public void ReadMultipleSheets()
  58. {
  59. using var reader = new ExcelReader(MultipleSheetsFile);
  60. var results = reader.ReadAll<Test>().ToArray();
  61. Assert.NotEmpty(results);
  62. Assert.Equal(6, results.Length);
  63. }
  64. [Fact]
  65. public void ReadDifferentTypes()
  66. {
  67. using var reader = new ExcelReader(DifferentTypesFile);
  68. var results = reader.Read<TestTypes>().ToArray();
  69. Assert.NotEmpty(results);
  70. }
  71. [Fact]
  72. public void ReadDifferentTypesWithSkip()
  73. {
  74. using var reader = new ExcelReader(DifferentTypesFile);
  75. var results = reader.Read<TestSkip>().ToArray();
  76. Assert.NotEmpty(results);
  77. Assert.All(results, x => Assert.Null(x.Text));
  78. Assert.NotNull(results.FirstOrDefault(x => x.Date != null));
  79. Assert.NotNull(results.FirstOrDefault(x => x.Int != null));
  80. }
  81. [Fact]
  82. public void ReadDifferentTypesWithSkipMiddle()
  83. {
  84. using var reader = new ExcelReader(DifferentTypesFile);
  85. var results = reader.Read<TestSkipMiddle>().ToArray();
  86. Assert.NotEmpty(results);
  87. Assert.NotNull(results.FirstOrDefault(x => x.Text != null));
  88. Assert.All(results, x => Assert.Null(x.Date));
  89. Assert.NotNull(results.FirstOrDefault(x => x.Int != null));
  90. }
  91. [Fact]
  92. public void ReadWithFormula()
  93. {
  94. using var reader = new ExcelReader(WithFormulaFile);
  95. var results = reader.Read<TestWithFormula>().ToArray();
  96. Assert.NotEmpty(results);
  97. }
  98. [Fact]
  99. public void ReadAdditionalTypes()
  100. {
  101. using var reader = new ExcelReader(AdditionalTypes);
  102. var results = reader.Read<TestAdditionalTypes>().ToArray();
  103. Assert.NotEmpty(results);
  104. }
  105. [Fact]
  106. public void ReadAdditionalTypesNullable()
  107. {
  108. using var reader = new ExcelReader(AdditionalTypes);
  109. var results = reader.Read<TestAdditionalTypesNullable>().ToArray();
  110. Assert.NotEmpty(results);
  111. }
  112. private const string EmptyFileForAppend = "testFiles/emptyForAppend.xlsx";
  113. [Fact]
  114. public void ReadEmptyFile()
  115. {
  116. using var reader = new ExcelReader(EmptyFileForAppend);
  117. var results = reader.Read<Test>().ToArray();
  118. Assert.Empty(results);
  119. }
  120. [Fact]
  121. public void ReadData()
  122. {
  123. var results = ExcelReader.ReadData<Test>(RegularFile).ToArray();
  124. Assert.NotEmpty(results);
  125. using var workbook = new XLWorkbook(RegularFile);
  126. var resultsWorkbook = ExcelReader.ReadData<Test>(workbook).ToArray();
  127. Assert.NotEmpty(resultsWorkbook);
  128. Assert.Equal(results, resultsWorkbook);
  129. }
  130. }