150 lines
5.0 KiB
C#
150 lines
5.0 KiB
C#
using NUnit.Framework;
|
||
using PMSWPF.Helper;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.IO;
|
||
using PMSWPF.Enums;
|
||
using PMSWPF.Models;
|
||
|
||
namespace PMSWPF.Tests
|
||
{
|
||
[TestFixture]
|
||
public class ExcelHelperTests
|
||
{
|
||
private string _testFilePath;
|
||
|
||
[SetUp]
|
||
public void Setup()
|
||
{
|
||
// Create a temporary file for testing
|
||
// _testFilePath = Path.Combine(Path.GetTempPath(), "test.xlsx");
|
||
_testFilePath = "e:/test.xlsx";
|
||
}
|
||
|
||
[TearDown]
|
||
public void TearDown()
|
||
{
|
||
// Clean up the temporary file
|
||
if (File.Exists(_testFilePath))
|
||
{
|
||
File.Delete(_testFilePath);
|
||
}
|
||
}
|
||
|
||
[Test]
|
||
public void ExportToExcel_WithListOfObjects_CreatesFile()
|
||
{
|
||
// Arrange
|
||
var data = new List<TestData>
|
||
{
|
||
new TestData { Id = 1, Name = "Test1" },
|
||
new TestData { Id = 2, Name = "Test2" }
|
||
};
|
||
|
||
// Act
|
||
ExcelHelper.ExportToExcel(data, _testFilePath);
|
||
|
||
// Assert
|
||
Assert.IsTrue(File.Exists(_testFilePath));
|
||
}
|
||
|
||
[Test]
|
||
public void ExportToExcel_WithDataTable_CreatesFile()
|
||
{
|
||
// Arrange
|
||
var dataTable = new DataTable();
|
||
dataTable.Columns.Add("Id", typeof(int));
|
||
dataTable.Columns.Add("Name", typeof(string));
|
||
dataTable.Rows.Add(1, "Test1");
|
||
dataTable.Rows.Add(2, "Test2");
|
||
|
||
// Act
|
||
ExcelHelper.ExportToExcel(dataTable, _testFilePath);
|
||
|
||
// Assert
|
||
Assert.IsTrue(File.Exists(_testFilePath));
|
||
}
|
||
|
||
[Test]
|
||
public void ImportFromExcel_ToDataTable_ReturnsCorrectData()
|
||
{
|
||
// Arrange
|
||
var dataTable = new DataTable();
|
||
dataTable.Columns.Add("Id", typeof(int));
|
||
dataTable.Columns.Add("Name", typeof(string));
|
||
dataTable.Rows.Add(1, "Test1");
|
||
dataTable.Rows.Add(2, "Test2");
|
||
ExcelHelper.ExportToExcel(dataTable, _testFilePath);
|
||
|
||
// Act
|
||
var result = ExcelHelper.ImportFromExcel(_testFilePath);
|
||
|
||
// Assert
|
||
Assert.AreEqual(2, result.Rows.Count);
|
||
Assert.AreEqual("1", result.Rows[0]["Id"]);
|
||
Assert.AreEqual("Test1", result.Rows[0]["Name"]);
|
||
}
|
||
|
||
[Test]
|
||
public void ImportVarDataFormExcel()
|
||
{
|
||
// Act
|
||
_testFilePath = "C:\\Users\\Administrator\\Desktop\\浓度变量.xlsx";
|
||
var dataTable = ExcelHelper.ImportFromExcel(_testFilePath);
|
||
// 判断表头的名字
|
||
if (dataTable.Columns[0].ColumnName != "Name" || dataTable.Columns[2].ColumnName != "Data Type" &&
|
||
dataTable.Columns[3].ColumnName != "Logical Address")
|
||
throw new AggregateException(
|
||
"Excel表格式不正确:第一列的名字是:Name,第三列的名字是:Data Type,Data Type,第四列的名字是:Logical Address,请检查");
|
||
|
||
|
||
List<VariableData> variableDatas = new List<VariableData>();
|
||
foreach (DataRow dataRow in dataTable.Rows)
|
||
{
|
||
VariableData variableData = new VariableData();
|
||
variableData.Name=dataRow["Name"].ToString();
|
||
variableData.DataType=SiemensHelper.S7ToCSharpTypeString(dataRow["Data Type"].ToString()) ;
|
||
var exS7Addr=dataRow["Logical Address"].ToString();
|
||
if (exS7Addr.StartsWith("%"))
|
||
{
|
||
variableData.S7Address = exS7Addr.Substring(1);
|
||
}
|
||
|
||
variableData.ProtocolType = ProtocolType.S7;
|
||
variableData.SignalType = SignalType.OtherASignal;
|
||
variableDatas.Add(variableData);
|
||
}
|
||
Assert.Greater(variableDatas.Count, 0);
|
||
// Assert
|
||
// Assert.AreEqual(2, result.Rows.Count);FDFD
|
||
// Assert.AreEqual("1", result.Rows[0]["Id"]);
|
||
// Assert.AreEqual("Test1", result.Rows[0]["Name"]);
|
||
}
|
||
|
||
[Test]
|
||
public void ImportFromExcel_ToListOfObjects_ReturnsCorrectData()
|
||
{
|
||
// Arrange
|
||
var data = new List<TestData>
|
||
{
|
||
new TestData { Id = 1, Name = "Test1" },
|
||
new TestData { Id = 2, Name = "Test2" }
|
||
};
|
||
ExcelHelper.ExportToExcel(data, _testFilePath);
|
||
|
||
// Act
|
||
var result = ExcelHelper.ImportFromExcel<TestData>(_testFilePath);
|
||
|
||
// Assert
|
||
Assert.AreEqual(2, result.Count);
|
||
Assert.AreEqual(1, result[0].Id);
|
||
Assert.AreEqual("Test1", result[0].Name);
|
||
}
|
||
|
||
private class TestData
|
||
{
|
||
public int Id { get; set; }
|
||
public string Name { get; set; }
|
||
}
|
||
}
|
||
} |