using System;
using Xunit;
using CncModels.Dto;
using CncModels.Dto.Login;
using CncModels.Dto.Machine;
namespace CncModels.Tests
{
///
/// PagedQuery 单元测试:覆盖默认值、偏移计算与自动修正逻辑
///
public class PagedQueryTests
{
[Fact]
///
/// 默认值正确:page=1, pageSize=20, offset=0
///
public void Page_Defaults_Are_Correct()
{
// Arrange/Act
var q = new PagedQuery();
// Assert
Assert.Equal(1, q.Page);
Assert.Equal(20, q.PageSize);
Assert.Equal(0, q.Offset);
}
[Fact]
///
/// 标准赋值:Page=3, PageSize=10 -> Offset=20
///
public void Page_And_PageSize_Normal_Assignments()
{
// Arrange
var q = new PagedQuery
{
Page = 3,
PageSize = 10
};
// Assert
Assert.Equal(3, q.Page);
Assert.Equal(10, q.PageSize);
Assert.Equal(20, q.Offset);
}
[Fact]
///
/// 边界:Page=100, PageSize=20
///
public void Page_Boundary_Normal()
{
var q = new PagedQuery { Page = 100, PageSize = 20 };
Assert.Equal(100, q.Page);
Assert.Equal(20, q.PageSize);
Assert.Equal(1980, q.Offset);
}
[Fact]
///
/// 自动修正:Page=0 -> 1
///
public void Page_AutoFix_When_Zero()
{
var q = new PagedQuery { Page = 0 };
Assert.Equal(1, q.Page);
}
[Fact]
///
/// 自动修正:Page=-5 -> 1
///
public void Page_AutoFix_When_Negative()
{
var q = new PagedQuery { Page = -5 };
Assert.Equal(1, q.Page);
}
[Fact]
///
/// 自动修正:PageSize=0 -> 20
///
public void PageSize_AutoFix_When_Zero()
{
var q = new PagedQuery { PageSize = 0 };
Assert.Equal(20, q.PageSize);
}
[Fact]
///
/// 自动修正:PageSize=101 -> 100
///
public void PageSize_AutoFix_When_Over_Max()
{
var q1 = new PagedQuery { PageSize = 101 };
Assert.Equal(100, q1.PageSize);
var q2 = new PagedQuery { PageSize = 999 };
Assert.Equal(100, q2.PageSize);
}
}
}