using System;
using System.Text;
using Util.Data.Sql.Builders.Conditions;
using Util.Data.Sql.Builders.Params;
using Util.Data.Sql.Tests.Samples;
using Xunit;
namespace Util.Data.Sql.Tests.Builders.Conditions;
///
/// Sql小于查询条件测试
///
public class LessConditionTest {
///
/// 参数管理器
///
private readonly IParameterManager _parameterManager;
///
/// 测试初始化
///
public LessConditionTest() {
_parameterManager = new ParameterManager( TestDialect.Instance );
}
///
/// 获取结果
///
private string GetResult( ISqlCondition condition ) {
var result = new StringBuilder();
condition.AppendTo( result );
return result.ToString();
}
///
/// 测试创建条件 - 验证列名为空
///
[Fact]
public void TestCreate_Validate() {
Assert.Throws( () => {
var condition = new LessCondition( _parameterManager, "", 1, true );
} );
}
///
/// 测试获取条件 - 参数化
///
[Fact]
public void TestGetCondition_1() {
var condition = new LessCondition( _parameterManager, "a", 1, true );
Assert.Equal( "a<@_p_0", GetResult( condition ) );
Assert.Equal( 1, _parameterManager.GetValue( "@_p_0" ) );
}
///
/// 测试获取条件 - 非参数化
///
[Fact]
public void TestGetCondition_2() {
var condition = new LessCondition( _parameterManager, "a", "b", false );
Assert.Equal( "a
/// 测试获取条件 - 值为ISqlBuilder
///
[Fact]
public void TestGetCondition_3() {
var result = new StringBuilder();
result.Append( "a<" );
result.AppendLine( "(Select [a] " );
result.Append( "From [b])" );
var builder = new TestSqlBuilder().Select( "a" ).From( "b" );
var condition = new LessCondition( _parameterManager, "a", builder, true );
Assert.Equal( result.ToString(), GetResult( condition ) );
}
}