You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
7.8 KiB
C#
229 lines
7.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Xunit;
|
|
using Haoliang.Models.Device;
|
|
using Haoliang.Models.Template;
|
|
using Haoliang.Models.Production;
|
|
using Haoliang.Models.User;
|
|
using Haoliang.Models.System;
|
|
|
|
namespace Haoliang.Tests
|
|
{
|
|
public class ModelTests
|
|
{
|
|
[Fact]
|
|
public void CNCDevice_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var device = new CNCDevice
|
|
{
|
|
DeviceCode = "TEST001",
|
|
DeviceName = "测试设备",
|
|
IPAddress = "192.168.1.100",
|
|
HttpUrl = "http://192.168.1.100/api/status",
|
|
CollectionInterval = 30,
|
|
TemplateId = 1,
|
|
IsAvailable = true,
|
|
IsOnline = false
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal("TEST001", device.DeviceCode);
|
|
Assert.Equal("测试设备", device.DeviceName);
|
|
Assert.Equal("192.168.1.100", device.IPAddress);
|
|
Assert.Equal("http://192.168.1.100/api/status", device.HttpUrl);
|
|
Assert.Equal(30, device.CollectionInterval);
|
|
Assert.Equal(1, device.TemplateId);
|
|
Assert.True(device.IsAvailable);
|
|
Assert.False(device.IsOnline);
|
|
}
|
|
|
|
[Fact]
|
|
public void CNCDevice_WhenCreated_HasDefaultTimestamps()
|
|
{
|
|
// Arrange & Act
|
|
var device = new CNCDevice();
|
|
var beforeCreation = DateTime.Now;
|
|
|
|
// Assert
|
|
Assert.True(device.CreatedAt >= beforeCreation || device.CreatedAt == DateTime.MinValue);
|
|
Assert.True(device.UpdatedAt >= beforeCreation || device.UpdatedAt == DateTime.MinValue);
|
|
}
|
|
|
|
[Fact]
|
|
public void TagData_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var tag = new TagData
|
|
{
|
|
Id = "_io_status",
|
|
Desc = "设备状态",
|
|
Quality = "Good",
|
|
Value = "Running",
|
|
Time = DateTime.Now
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal("_io_status", tag.Id);
|
|
Assert.Equal("设备状态", tag.Desc);
|
|
Assert.Equal("Good", tag.Quality);
|
|
Assert.Equal("Running", tag.Value);
|
|
Assert.NotNull(tag.Time);
|
|
}
|
|
|
|
[Fact]
|
|
public void CNCBrandTemplate_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var template = new CNCBrandTemplate
|
|
{
|
|
BrandName = "发那科",
|
|
Description = "发那科CNC设备模板",
|
|
IsEnabled = true,
|
|
FieldMappings = new List<TemplateFieldMapping>()
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal("发那科", template.BrandName);
|
|
Assert.Equal("发那科CNC设备模板", template.Description);
|
|
Assert.True(template.IsEnabled);
|
|
Assert.Empty(template.FieldMappings);
|
|
}
|
|
|
|
[Fact]
|
|
public void ProductionRecord_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var record = new ProductionRecord
|
|
{
|
|
DeviceId = 1,
|
|
NCProgram = "O0001",
|
|
ProductionDate = DateTime.Now,
|
|
Quantity = 100,
|
|
QualityRate = 95.5m,
|
|
OperatorId = 1
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal(1, record.DeviceId);
|
|
Assert.Equal("O0001", record.NCProgram);
|
|
Assert.Equal(DateTime.Now.Date, record.ProductionDate.Date);
|
|
Assert.Equal(100, record.Quantity);
|
|
Assert.Equal(95.5m, record.QualityRate);
|
|
Assert.Equal(1, record.OperatorId);
|
|
Assert.NotNull(record.CreatedAt);
|
|
}
|
|
|
|
[Fact]
|
|
public void ProductionRealtimeData_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var realtimeData = new ProductionRealtimeData
|
|
{
|
|
DeviceId = 1,
|
|
DeviceCode = "CNC001",
|
|
DeviceName = "车床1号",
|
|
Status = "Running",
|
|
IsRunning = true,
|
|
NCProgram = "O0001",
|
|
CurrentCount = 1500,
|
|
TodayQuantity = 50,
|
|
LastUpdateTime = DateTime.Now
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal(1, realtimeData.DeviceId);
|
|
Assert.Equal("CNC001", realtimeData.DeviceCode);
|
|
Assert.Equal("车床1号", realtimeData.DeviceName);
|
|
Assert.Equal("Running", realtimeData.Status);
|
|
Assert.True(realtimeData.IsRunning);
|
|
Assert.Equal("O0001", realtimeData.NCProgram);
|
|
Assert.Equal(1500, realtimeData.CurrentCount);
|
|
Assert.Equal(50, realtimeData.TodayQuantity);
|
|
Assert.NotNull(realtimeData.LastUpdateTime);
|
|
}
|
|
|
|
[Fact]
|
|
public void User_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var user = new User
|
|
{
|
|
Username = "admin",
|
|
PasswordHash = "hashed_password",
|
|
RealName = "管理员",
|
|
Email = "admin@example.com",
|
|
Phone = "13800138000",
|
|
RoleId = 1,
|
|
IsActive = true,
|
|
LastLoginTime = DateTime.Now
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal("admin", user.Username);
|
|
Assert.Equal("hashed_password", user.PasswordHash);
|
|
Assert.Equal("管理员", user.RealName);
|
|
Assert.Equal("admin@example.com", user.Email);
|
|
Assert.Equal("13800138000", user.Phone);
|
|
Assert.Equal(1, user.RoleId);
|
|
Assert.True(user.IsActive);
|
|
Assert.NotNull(user.LastLoginTime);
|
|
}
|
|
|
|
[Fact]
|
|
public void SystemHealth_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var health = new SystemHealth
|
|
{
|
|
CheckTime = DateTime.Now,
|
|
DatabaseConnected = true,
|
|
OnlineDeviceCount = 10,
|
|
TotalDeviceCount = 15,
|
|
ActiveAlarmCount = 2,
|
|
CollectionSuccessRate = 98.5,
|
|
AverageResponseTime = 120.5,
|
|
DatabaseSize = 1024000000,
|
|
CpuUsage = 45.2,
|
|
MemoryUsage = 78.3,
|
|
DiskUsage = 65.8
|
|
};
|
|
|
|
// Assert
|
|
Assert.True(health.DatabaseConnected);
|
|
Assert.Equal(10, health.OnlineDeviceCount);
|
|
Assert.Equal(15, health.TotalDeviceCount);
|
|
Assert.Equal(2, health.ActiveAlarmCount);
|
|
Assert.Equal(98.5, health.CollectionSuccessRate);
|
|
Assert.Equal(120.5, health.AverageResponseTime);
|
|
Assert.True(health.CpuUsage > 0);
|
|
Assert.True(health.MemoryUsage > 0);
|
|
Assert.True(health.DiskUsage > 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Alarm_CreatedWithValidData_HasCorrectProperties()
|
|
{
|
|
// Arrange & Act
|
|
var alarm = new Alarm
|
|
{
|
|
AlarmType = "设备离线",
|
|
AlarmLevel = "高",
|
|
AlarmContent = "设备连接超时",
|
|
DeviceId = 1,
|
|
DeviceName = "CNC001",
|
|
IsResolved = false,
|
|
OccurrenceTime = DateTime.Now
|
|
};
|
|
|
|
// Assert
|
|
Assert.Equal("设备离线", alarm.AlarmType);
|
|
Assert.Equal("高", alarm.AlarmLevel);
|
|
Assert.Equal("设备连接超时", alarm.AlarmContent);
|
|
Assert.Equal(1, alarm.DeviceId);
|
|
Assert.Equal("CNC001", alarm.DeviceName);
|
|
Assert.False(alarm.IsResolved);
|
|
Assert.NotNull(alarm.OccurrenceTime);
|
|
}
|
|
}
|
|
} |