public SettingsModalViewModel(
            IAppSettings appSettings,
            IVpnManager vpnManager,
            IUserStorage userStorage,
            IDialogs dialogs,
            IActiveUrls urls,
            ILanguageProvider languageProvider,
            IVpnConfig vpnConfig,
            ReconnectState reconnectState,
            ProfileViewModelFactory profileViewModelFactory,
            SplitTunnelingViewModel splitTunnelingViewModel,
            CustomDnsListViewModel customDnsListViewModel)
        {
            _dialogs                 = dialogs;
            _appSettings             = appSettings;
            _vpnManager              = vpnManager;
            _profileViewModelFactory = profileViewModelFactory;
            _userStorage             = userStorage;
            _urls             = urls;
            _languageProvider = languageProvider;
            _vpnConfig        = vpnConfig;
            _reconnectState   = reconnectState;

            SplitTunnelingViewModel = splitTunnelingViewModel;
            Ips = customDnsListViewModel;

            ReconnectCommand = new RelayCommand(ReconnectAction);
            UpgradeCommand   = new RelayCommand(UpgradeAction);
        }
        public async Task ReconnectShouldBeRequiredOnlyIfChangesPending()
        {
            // Arrange
            _appSettings.KillSwitch.Returns(false);
            var sut = new ReconnectState(_settingsBuilder);
            await sut.OnVpnStateChanged(GetVpnStateEventArgs(VpnStatus.Connected));

            _appSettings.KillSwitch.Returns(true);

            // Assert
            sut.Required(nameof(IAppSettings.KillSwitch)).Should().BeTrue();
        }
        public async Task ReconnectShouldBeRequiredOnlyIfChangesPending()
        {
            // Arrange
            _appSettings.OvpnProtocol.Returns("tcp");
            var sut = new ReconnectState(_settingsBuilder);
            await sut.OnVpnStateChanged(GetVpnStateEventArgs(VpnStatus.Connected));

            _appSettings.OvpnProtocol.Returns("udp");

            // Assert
            sut.Required(nameof(IAppSettings.OvpnProtocol)).Should().BeTrue();
        }
    void initState()
    {
        netStateMachine = new GameStateMachine();
        GameState state = new PreConnectState();

        netStateMachine.addState(state);
        state = new ConnectState();
        netStateMachine.addState(state);
        state = new ReconnectState();
        netStateMachine.addState(state);
        state = new ReloginState();
        netStateMachine.addState(state);
        state = new RunState();
        netStateMachine.addState(state);
        state = new QuitState();
        netStateMachine.addState(state);
    }