//using NUnit.Framework;
//using TestClass = NUnit.Framework.TestFixtureAttribute;
//using TestMethod = NUnit.Framework.TestAttribute;
//using TestInitialize = NUnit.Framework.SetUpAttribute;
//using TestCleanup = NUnit.Framework.TearDownAttribute;
//using TestContext = System.Object;
//using ClassCleanup = NUnit.Framework.TestFixtureTearDownAttribute;
//using ClassInitialize = NUnit.Framework.TestFixtureSetUpAttribute;

//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
//using System.Threading;
//using ZeusServerEdgeJS;
//using Moq;
//using ZeusServerNode.Node;

//namespace ZeusServerEdgeJSTest
//{



//    [TestFixture]
//    public class ZoneServiceTest
//    {
//        private ZoneService zoneService = ZoneService.instance();
//        private EdgeJS zeusEdge = new EdgeJS();
//        private int playerEnteredTime = 1;
//        private int playerSendedTime = 1;
//        private int[] playerSendedArray = { 1, 1, 2 };

//        [SetUp]
//        [Category("NA")]
//        public void BeforeTest()
//        {
//            Console.WriteLine("BeforeTest");
//        }

//        [TestFixtureSetUp]
//        [Category("NA")]
//        public async void BeforeAllTests()
//        {
//         //   zoneService.setTest(true);
//          //  await zeusEdge.start("E:/work/zeus/game-server/csharp");
//            Console.WriteLine("BeforeAllTests");
//        }

//        [TearDown]
//        [Category("NA")]
//        public void AfterTest()
//        {
//            Console.WriteLine("AfterTest");
//        }

//        [TestFixtureTearDown]
//        [Category("NA")]
//        public void AfterAllTests()
//        {
//         //   zoneService.setTest(false);
//            zoneService.stop();
//            Console.WriteLine("AfterAllTest");
//        }

//        [Test ]
//        [RequiresMTA]
//        public  async  void TestPlayerEnter()
//        {
          
     
//            int testMapId = 999999;
//            long testInstanceId = 10000;
//            var mockUtils = new Mock<Utils>();
//            mockUtils
//                .Setup(m => m.GuidToLongID())
//                .Returns(testInstanceId);
//            Utils.instance(mockUtils.Object);

//            await zeusEdge.start("E:/work/zeus/game-server/csharp");

//            //注册事件
//           // zoneService.registerEvent(EventType.playerEntered.ToString(), onPlayerEntered);
//            zoneService.registerEvent(EventType.playerSended.ToString(), onPlayerSended);

//            var instanceId = await zeusEdge.createZone(testMapId);


//            //玩家1进入副本
//            await zeusEdge.playerEnter(createPlayer(instanceId, "1"));

//           // Assert.AreEqual(testInstanceId.ToString(), instanceId1);

//            //玩家2进入副本
//            //  long instanceId2 = zoneService.playerEnter(testMapId, player2, enter);
//             await zeusEdge.playerEnter(createPlayer(instanceId, "2"));
//          //  Assert.AreEqual(instanceId1, instanceId2);

//            //玩家3进入副本    
//            //   zoneService.playerEnter(instanceId1, player3, enter);

//             await zeusEdge.playerEnter(createPlayer(instanceId, "3"));


//            //Thread.Sleep(2000);
//        }

//        private dynamic createPlayer(object mapId, string playerId)
//        {
//            return new
//             {
//                 instanceId = mapId,
//                 playerId = playerId,
//                 unitTemplateID = 900,
//                 pos = new { x = 0, y = 0 }
//             };
//        }

//        private void update()
//        {

//        }

//     //   private Task<object> playerSendedTask = new Task<Object>();
//        private  Task<object> onPlayerEntered(dynamic input)
//        {

//            var playerId = (string)input.playerId;
//            var instanceId = long.Parse(input.nodeInstanceId);
        
//            Assert.AreEqual(playerEnteredTime.ToString(), playerId);
//            Assert.AreEqual(10000, instanceId);
//            playerEnteredTime++;
//            return null;
//        }

//        private async  Task<object> onPlayerSended(dynamic input)
//        {
       

//          //  Task<object> ret = new Task<Object>();
//      //      playerSendedTask.Start();

//           //  playerSendedTask = await Task.Run(()=>
//           // {
//           //     return input;
//          //  });
        
           
//            //var PlayerId = (string)input.PlayerId;
//            //var message = (object)input.message;
//            //Assert.AreEqual(0, 1);
//            //Assert.AreEqual(playerSendedArray[playerSendedTime - 1].ToString(), PlayerId);

//            //System.Console.WriteLine("playerSendedTime = " + playerSendedTime);


//            return 0;
//        }


//        [Test]

//        public async void TestCreateAction()
//        {
//            await zeusEdge.start("E:/work/zeus/game-server/csharp");

//            object result = zeusEdge.createAction(new { type = "UnitMoveAction", x = 10, y = 10 });

//        }


//        [Test]

//        public async void TestSocket()
//        {
//            await zeusEdge.start(new { startPath = "D:/nodejs/node_global/npm/node_modules/zeus-csharp/lib/dll", assetPath = "D:/nodejs/node_global/npm/node_modules/zeus-csharp/data" });


//            await zeusEdge.connect(new { host = "192.168.4.98", port = 3014 });
//         //   object result = zeusEdge.createAction(new { unitType = "UnitMoveAction", x = 10, y = 10 });

//        }

//    }
//}