public void Disconnect()
        {
            Program.ConnectionClient client = this.getConnectionClient("Connected");

            this.startCmd("-ac-disconnect");

            this.tick(1);

            Assert.AreEqual(0, client.Progress);
            Assert.AreEqual(Program.ConnectionState.WaitingDisc, client.State);
            Assert.AreEqual("server channel", this.igc.LastMessage.Item1);
            Assert.AreEqual("-ac-disc", this.igc.LastMessage.Item2);

            this.listener.QueueMessage("-ac-progress 0.25");

            this.tick();

            Assert.AreEqual(0.25f, client.Progress);
            Assert.AreEqual(Program.ConnectionState.WaitingDisc, client.State);

            this.listener.QueueMessage("-ac-done");
            this.tick();

            Assert.AreEqual(Program.ConnectionState.Ready, client.State);
            Assert.AreEqual(0, client.Progress);
        }
        public void Connection()
        {
            Program.ConnectionClient client = this.getConnectionClient(null);

            this.startCmd("-ac-connect");

            this.tick(1);

            Assert.AreEqual(0, client.Progress);
            Assert.AreEqual(Program.ConnectionState.WaitingCon, client.State);
            Assert.AreEqual("server channel", this.igc.LastMessage.Item1);
            Assert.AreEqual("-ac-con \"Small\" \"5\" \"15\" \"25\" \"0\" \"0\" \"-1\"", this.igc.LastMessage.Item2);

            this.listener.QueueMessage("-ac-progress 0.25");

            this.tick();

            Assert.AreEqual(0.25f, client.Progress);
            Assert.AreEqual(Program.ConnectionState.WaitingCon, client.State);

            this.listener.QueueMessage("-ac-done");
            this.tick();

            Assert.AreEqual(Program.ConnectionState.Connected, client.State);
            Assert.AreEqual(0, client.Progress);
        }
        public void Timeout()
        {
            Program.ConnectionClient client = this.getConnectionClient(null);

            this.startCmd("-ac-connect");

            this.tick(55); // enough to timeout
            Assert.AreEqual(Program.ConnectionState.Ready, client.State);
            Assert.AreEqual(Program.FailReason.Timeout, client.FailReason);
            Assert.AreEqual(0, client.Progress);

            this.tick(500); // enough to for the fail reason to be reset
            Assert.AreEqual(Program.FailReason.None, client.FailReason);
        }
        public void LongProgress()
        {
            Program.ConnectionClient client = this.getConnectionClient(null);

            this.startCmd("-ac-connect");

            this.tick(40); // not enought to timeout

            this.listener.QueueMessage("-ac-progress 0.125");

            this.tick(40);

            Assert.AreEqual(Program.ConnectionState.WaitingCon, client.State);

            this.listener.QueueMessage("-ac-progress 0.25");

            this.tick(40);

            Assert.AreEqual(Program.ConnectionState.WaitingCon, client.State);
        }
        public void Standby()
        {
            Program.ConnectionClient client = this.getConnectionClient("Connected");

            this.listener.QueueMessage("-ac-cancel");

            this.tick(6);

            Assert.AreEqual(0, client.Progress);
            Assert.AreEqual(Program.ConnectionState.Standby, client.State);

            this.tick(200);

            Assert.AreEqual(0, client.Progress);
            Assert.AreEqual(Program.ConnectionState.Standby, client.State);

            this.listener.QueueMessage("-ac-progress 0.5");

            this.tick(6);

            Assert.AreEqual(0.5f, client.Progress);
            Assert.AreEqual(Program.ConnectionState.WaitingCon, client.State);
        }
        public void CreateNewWithState()
        {
            Program.ConnectionClient client = this.getConnectionClient("Standby");

            Assert.AreEqual(Program.ConnectionState.Standby, client.State);
        }
        public void CreateNew()
        {
            Program.ConnectionClient client = this.getConnectionClient(null);

            Assert.AreEqual(Program.ConnectionState.Ready, client.State);
        }