예제 #1
0
        public void EnumeratesTheConnectionCorrectly()
        {
            var enumConnections = new Mock <IRasEnumConnections>();

            enumConnections.Setup(o => o.EnumerateConnections()).Returns(new RasConnection[0]);

            container.Setup(o => o.GetService(typeof(IRasEnumConnections))).Returns(enumConnections.Object);
            var result = RasConnection.EnumerateConnections();

            Assert.IsNotNull(result);
            container.Verify(o => o.GetService(typeof(IRasEnumConnections)), Times.Once);
            enumConnections.Verify(o => o.EnumerateConnections(), Times.Once);
        }
예제 #2
0
        private void UpdateTrayIcon()
        {
            var connections = RasConnection.EnumerateConnections().ToList();

            if (connections.Count != 0)
            {
                _trayIcon.Text = $"Connected to: {string.Join(", ", connections.Select(x => x.EntryName))}";
                _trayIcon.Icon = _onIcon;
            }
            else
            {
                _trayIcon.Text = "Not connected";
                _trayIcon.Icon = _offIcon;
            }

            var strip = _trayIcon.ContextMenuStrip;

            strip.Items.Clear();

            foreach (var profile in GetProfiles())
            {
                var connection = connections.FirstOrDefault(x => x.EntryName.Equals(profile));

                strip.Items.Add(
                    profile,
                    connection != null ? _checkIcon : null,
                    (s, e) =>
                {
                    if (connection != null)
                    {
                        connection.Disconnect(new CancellationToken());
                    }
                    else
                    {
                        var dialer = new RasDialer {
                            EntryName = profile
                        };

                        dialer.Connect();
                    }
                });
            }

            strip.Items.Add(new ToolStripSeparator());

            strip.Items.Add("Exit", null, OnExit);
        }
예제 #3
0
파일: Program.cs 프로젝트: winnster/DotRas
        private async Task ConnectAsync(CancellationToken cancellationToken)
        {
            if (IsConnected)
            {
                return;
            }

            connection = RasConnection.EnumerateConnections().SingleOrDefault(o => o.EntryName == dialer.EntryName);
            if (connection != null)
            {
                Console.WriteLine($"Already connected: {dialer.EntryName}");
                SetConnected();
            }
            else
            {
                Console.WriteLine("Starting connection...");
                connection = await dialer.ConnectAsync(cancellationToken);
            }
        }
예제 #4
0
        public void WillReturnTheCorrectConnectionWhenUsingLinq()
        {
            var connection1 = new Mock <RasConnection>();

            connection1.Setup(o => o.EntryName).Returns("Test1");

            var connection2 = new Mock <RasConnection>();

            connection2.Setup(o => o.EntryName).Returns("Test2");

            var enumConnections = new Mock <IRasEnumConnections>();

            enumConnections.Setup(o => o.EnumerateConnections()).Returns(new[] { connection1.Object, connection2.Object });

            container.Setup(o => o.GetService(typeof(IRasEnumConnections))).Returns(enumConnections.Object);

            var result = RasConnection.EnumerateConnections().SingleOrDefault(o => o.EntryName == "Test2");

            Assert.IsNotNull(result);
            Assert.AreSame(connection2.Object, result);
        }