﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ICaiBan.BLL.Common;
using ICaiBan.ModelAPI;
using ICaiBan.BLL.Components;
using ICaiBan.IBLL;
using ICaiBan.ModelAPI.Merchant;
using ICaiBan.ModelBL.Common;
using System.Threading;

namespace UnitTest
{
    /// <summary>
    /// SMSTest 的摘要说明
    /// </summary>
    [TestClass]
    public class SMSTest
    {
        public SMSTest()
        {
            //
            //
            //
        }

        TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，该上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get { return testContextInstance; }
            set { testContextInstance=value; }
        }

        #region 附加测试特性

        //
        // 编写测试时，可以使用以下附加特性:
        //
        // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // 在运行每个测试之前，使用 TestInitialize 来运行代码
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // 在每个测试运行完之后，使用 TestCleanup 来运行代码
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //

        #endregion

        [TestMethod]
        public void TestMethod1()
        {
            //
            // 
            //
        }


        /// <summary>
        /// 电子会员卡
        /// </summary>
        [TestMethod]
        public void TestSMS()
        {
            SmsBLL bll=new SmsBLL();
            int validTime=0;
            ReturnStatus status=bll.SendSms(ICaiBan.ModelBL.Enums.SmmsBusinessType.ActivateCard, 0, ICaiBan.ModelBL.Enums.SystemRole.Admin, "13538040546", "xw");
            Assert.AreEqual(ReturnState.M00, status.State);
        }

        [TestMethod]
        public void SendSMSTest()
        {
            string smsLogId=string.Empty;
            //发送短信
            SmsBLL sms=new SmsBLL();
            sms.SendSms(ICaiBan.ModelBL.Enums.SmmsBusinessType.OtherType, 0, ICaiBan.ModelBL.Enums.SystemRole.Admin, "13538040546", "测试lonlie");
        }

        [TestMethod]
        public void SendSMSTest1()
        {
            SendSMSParam a=new SendSMSParam() {context="这是一个测试短信.", phone="13480955037", UserSession=new Session() {UserId=100000}};
            ParamContext<SendSMSParam> p=new ParamContext<SendSMSParam>(a);
            var res=new Merchant().SendSMS(p);
        }

        [TestMethod]
        public void SendSMSTest2()
        {
            string[] str=new string[]
            {
                "15914004528",
                "18575560217",
                "18682249538",
                "13480955037",
                "13480955036",
                "13480955032",
                "13480955031",
                "13480955028"
            };
            for (int i=0; i < str.Length; i++)
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(Send), str[i]); //调用线程处理长时间的等待
            }
        }

        public void Send(object param)
        {
            string s=param.ToString();
            SendSMSParam a=new SendSMSParam() {context="这是一个测试短信.", phone=s, UserSession=new Session() {UserId=100024}};
            ParamContext<SendSMSParam> p=new ParamContext<SendSMSParam>(a);
            var res=new Merchant().SendSMS(p);
        }
    }
}