v9.10.2019.0101  全面巩固批量Insert/Update/Upsert,支持数据备份、恢复和同步,支持实体列表保存到文件以及加载
大石头 authored at 2019-01-01 13:38:33
3.70 KiB
X
using NewLife;
using Xunit;

namespace XUnitTest.Event;

public class EventArgsTests
{
    #region 单参数
    [Fact(DisplayName = "单参数EventArgs构造和获取")]
    public void EventArgs_OneArg()
    {
        var e = new EventArgs<String>("Hello");

        Assert.Equal("Hello", e.Arg);
    }

    [Fact(DisplayName = "单参数EventArgs设置属性")]
    public void EventArgs_OneArg_SetArg()
    {
        var e = new EventArgs<Int32>(10);
        e.Arg = 20;

        Assert.Equal(20, e.Arg);
    }

    [Fact(DisplayName = "单参数EventArgs弹出")]
    public void EventArgs_OneArg_Pop()
    {
        var e = new EventArgs<String>("Value1");
        var result = "";
        e.Pop(ref result);

        Assert.Equal("Value1", result);
    }

    [Fact(DisplayName = "单参数EventArgs继承自EventArgs")]
    public void EventArgs_OneArg_InheritsEventArgs()
    {
        var e = new EventArgs<Int32>(42);
        Assert.IsAssignableFrom<EventArgs>(e);
    }
    #endregion

    #region 双参数
    [Fact(DisplayName = "双参数EventArgs构造")]
    public void EventArgs_TwoArgs()
    {
        var e = new EventArgs<String, Int32>("Name", 100);

        Assert.Equal("Name", e.Arg1);
        Assert.Equal(100, e.Arg2);
    }

    [Fact(DisplayName = "双参数EventArgs设置属性")]
    public void EventArgs_TwoArgs_SetArgs()
    {
        var e = new EventArgs<String, Boolean>("test", false);
        e.Arg1 = "updated";
        e.Arg2 = true;

        Assert.Equal("updated", e.Arg1);
        Assert.True(e.Arg2);
    }

    [Fact(DisplayName = "双参数EventArgs弹出")]
    public void EventArgs_TwoArgs_Pop()
    {
        var e = new EventArgs<Int32, String>(42, "Hello");

        var arg1 = 0;
        var arg2 = "";
        e.Pop(ref arg1, ref arg2);

        Assert.Equal(42, arg1);
        Assert.Equal("Hello", arg2);
    }
    #endregion

    #region 三参数
    [Fact(DisplayName = "三参数EventArgs构造")]
    public void EventArgs_ThreeArgs()
    {
        var e = new EventArgs<String, Int32, Boolean>("Name", 100, true);

        Assert.Equal("Name", e.Arg1);
        Assert.Equal(100, e.Arg2);
        Assert.True(e.Arg3);
    }

    [Fact(DisplayName = "三参数EventArgs弹出")]
    public void EventArgs_ThreeArgs_Pop()
    {
        var e = new EventArgs<Int32, String, Double>(1, "two", 3.14);

        var a1 = 0;
        var a2 = "";
        var a3 = 0.0;
        e.Pop(ref a1, ref a2, ref a3);

        Assert.Equal(1, a1);
        Assert.Equal("two", a2);
        Assert.Equal(3.14, a3);
    }
    #endregion

    #region 四参数
    [Fact(DisplayName = "四参数EventArgs构造")]
    public void EventArgs_FourArgs()
    {
        var e = new EventArgs<String, Int32, Boolean, Double>("a", 1, true, 2.5);

        Assert.Equal("a", e.Arg1);
        Assert.Equal(1, e.Arg2);
        Assert.True(e.Arg3);
        Assert.Equal(2.5, e.Arg4);
    }

    [Fact(DisplayName = "四参数EventArgs弹出")]
    public void EventArgs_FourArgs_Pop()
    {
        var e = new EventArgs<Int32, Int32, Int32, Int32>(10, 20, 30, 40);

        var a1 = 0;
        var a2 = 0;
        var a3 = 0;
        var a4 = 0;
        e.Pop(ref a1, ref a2, ref a3, ref a4);

        Assert.Equal(10, a1);
        Assert.Equal(20, a2);
        Assert.Equal(30, a3);
        Assert.Equal(40, a4);
    }

    [Fact(DisplayName = "四参数EventArgs设置属性")]
    public void EventArgs_FourArgs_SetArgs()
    {
        var e = new EventArgs<String, String, String, String>("", "", "", "");
        e.Arg1 = "A";
        e.Arg2 = "B";
        e.Arg3 = "C";
        e.Arg4 = "D";

        Assert.Equal("A", e.Arg1);
        Assert.Equal("B", e.Arg2);
        Assert.Equal("C", e.Arg3);
        Assert.Equal("D", e.Arg4);
    }
    #endregion
}