public void RegisterShouldThrowWhenPropertyIsWrong() { DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler("Misspelled Property", src => { }); }
public void DisposeTest() { string actualValue = null; TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; WeakReference wr = new WeakReference(obj); PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.RegisterHandler(o => o.SValue, (oo) => actualValue = oo.SValue); obj.SValue = "1"; Assert.AreEqual("1", actualValue); po.Dispose(); obj.SValue = "2"; Assert.AreEqual("1", actualValue); #if !DEBUG obj = null; GC.Collect(2, GCCollectionMode.Forced); Assert.IsFalse(wr.IsAlive); #endif }
public void RegisterShouldThrowWhenExpressionIsNull() { DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler((Expression <Func <DummyClass, object> >)null, src => { }); }
public EntityViewModel(IDialogService dialogService) { _dialogService = dialogService; Search = new RelayCommand(PrivateSearch); RefreshList = new RelayCommand(() => { if (SdtdConsole.Instance.IsConnected == false) { _dialogService.ShowInformation("请先连接服务器"); } else { RequestData(); } }); _currentPropertyObserver = new PropertyObserver <EntityViewModel>(this); _currentPropertyObserver.RegisterHandler(p => p.SearchText, (vm) => { vm.PrivateSearch(); }); SdtdConsole.Instance.ReceivedTempListData += OnReceivedTempListData; Task.Run(() => { Thread.Sleep(100); RequestData(); }); }
public void RegisterShouldThrowWhenPropertyIsNull() { DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler((string)null, src => { }); }
public GameNoticeViewModel(IDispatcherService dispatcherService, string functionTag) : base(dispatcherService, functionTag) { SendWelcomeNotice = new RelayCommand(() => { SdtdConsole.Instance.SendGlobalMessage(WelcomeNotice); }); SendAlternateNotice = new RelayCommand(() => { SdtdConsole.Instance.SendGlobalMessage(AlternateNotice); }); Timer = new Timer() { AutoReset = true, Interval = AlternateInterval * 1000 }; Timer.Elapsed += OnTimer_Elapsed; _currentViewModelObserver = new PropertyObserver <GameNoticeViewModel>(this); _currentViewModelObserver.RegisterHandler(currentViewModel => currentViewModel.AlternateInterval, (vm) => { if (AlternateInterval > 0) { Timer.Interval = AlternateInterval * 1000; } }); }
public void RegisterShouldThrowWhenPropertyIsEmpty() { DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler("", src => { }); }
public ItemViewModel(IDispatcherService dispatcherService, IDialogService dialogService) { _dispatcherService = dispatcherService; _dialogService = dialogService; ColoredImageDatas = new ObservableCollection <ColoredImageData>(); Search = new RelayCommand(PrivateSearch); currentPropertyObserver = new PropertyObserver <ItemViewModel>(this); currentPropertyObserver.RegisterHandler(p => p.SearchText, (vm) => { vm.PrivateSearch(); }); Task.Run(() => { try { LoadXml(ColoredImageDatas, XmlPath); } catch (Exception ex) { string title = string.Format("加载 {0} 失败", XmlPath); Log.Error(ex, title); _dispatcherService.InvokeAsync(() => { _dialogService.ShowInformation(ex.Message, title); }); } }); }
public void RegisterShouldThrowWhenExpressionWrong() { DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler(src => src, src => { }); }
public void RegisterShouldThrowWhenHandlerIsNull2() { DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler(src => src.Value, null); }
public void RegisterHandlerNullTest2() { TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); Assert.ThrowsException <ArgumentNullException>(() => po.RegisterHandler(o => o.SValue, null)); }
public PlayerControlsViewModel(TimeManager timeManager) { this.timeManager = timeManager; Observer = new PropertyObserver<TimeManager>(this.timeManager); Observer.RegisterHandler(n => n.FactorTemporal, n => base.RaisePropertyChanged("TimeLapse")) .RegisterHandler(n => n.IsPlaying, n => base.RaisePropertyChanged("IsPlaying")) .RegisterHandler(n => n.ActualTime, n => base.RaisePropertyChanged("ActualTime")); }
public AddSalaryViewModel(EditableSalaryViewModel editableSalaryViewModel) { this.editableSalaryViewModel = editableSalaryViewModel; addCommand = new RelayCommand(Add); editableSalaryViewModelObserver = new PropertyObserver <EditableSalaryViewModel>(EditableSalaryViewModel); editableSalaryViewModelObserver.RegisterHandler(x => x.HasErrors, x => RefreshCommands()); EditableSalaryViewModel.Validate(); }
public void RegisterHandlerNullTest2() { TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.RegisterHandler(o => o.SValue, null); }
public MemoryReader() { state = State.NoSC2; scoreboard = MainWindowViewModel.DisplayWindow.Scoreboard; db = new Database("players.db"); var t = new DispatcherTimer(); t.Interval = TimeSpan.FromMilliseconds(500); t.Tick += new EventHandler(Tick); t.Start(); player1Observer = new PropertyObserver<Model.Player>(scoreboard.Player1); player1Observer.RegisterHandler(n => n.Name, OnNameChanged); player1Observer.RegisterHandler(n => n.Race, OnRaceChanged); player2Observer = new PropertyObserver<Model.Player>(scoreboard.Player2); player2Observer.RegisterHandler(n => n.Name, OnNameChanged); player2Observer.RegisterHandler(n => n.Race, OnRaceChanged); }
/// <summary> /// DataContext has been set or changed on the visual. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void OnDataChanged(object sender, DependencyPropertyChangedEventArgs e) { _optionObserver = null; if (ViewModel == null) { return; } _optionObserver = new PropertyObserver <RuntimeOptionsViewModel>(ViewModel.Options); _optionObserver.RegisterHandler(fe => fe.ShowRowNumbers, od => OnShowHideRowNumbers()); }
public void RegisteredHandlersAreInvoked() { ObservableThing thing = new ObservableThing(); PropertyObserver<ObservableThing> target = new PropertyObserver<ObservableThing>(thing); bool wasInvoked = false; target.RegisterHandler(t => t.SomeProperty, t => wasInvoked = (t == thing)); thing.SomeProperty = "whatever"; Assert.IsTrue(wasInvoked); }
public MemoryReader() { state = State.NoSC2; scoreboard = MainWindowViewModel.DisplayWindow.Scoreboard; db = new Database("players.db"); var t = new DispatcherTimer(); t.Interval = TimeSpan.FromMilliseconds(500); t.Tick += new EventHandler(Tick); t.Start(); player1Observer = new PropertyObserver <Model.Player>(scoreboard.Player1); player1Observer.RegisterHandler(n => n.Name, OnNameChanged); player1Observer.RegisterHandler(n => n.Race, OnRaceChanged); player2Observer = new PropertyObserver <Model.Player>(scoreboard.Player2); player2Observer.RegisterHandler(n => n.Name, OnNameChanged); player2Observer.RegisterHandler(n => n.Race, OnRaceChanged); }
public void UnregisteredHandlersAreNotInvoked() { ObservableThing thing = new ObservableThing(); PropertyObserver <ObservableThing> target = new PropertyObserver <ObservableThing>(thing); bool wasInvoked = false; target.RegisterHandler(t => t.SomeProperty, t => wasInvoked = true); target.UnregisterHandler(t => t.SomeProperty); thing.SomeProperty = "whatever"; Assert.IsFalse(wasInvoked); }
public void HandlePropertyChangedEvents() { bool valueChanged = false; bool textChanged = false; DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler("Value", src => valueChanged = true); observer.RegisterHandler(src => src.Text, src => textChanged = true); Assert.IsFalse(valueChanged); Assert.IsFalse(textChanged); source.Value = 10; Assert.IsTrue(valueChanged); Assert.IsFalse(textChanged); valueChanged = false; source.Text = "abc"; Assert.IsFalse(valueChanged); Assert.IsTrue(textChanged); textChanged = false; source.RaisePropertyChanged(); Assert.IsTrue(valueChanged); Assert.IsTrue(textChanged); valueChanged = false; textChanged = false; observer.UnregisterHandler("Value"); source.RaisePropertyChanged(); Assert.IsFalse(valueChanged); Assert.IsTrue(textChanged); textChanged = false; observer.UnregisterHandler(src => src.Text); source.RaisePropertyChanged(); Assert.IsFalse(valueChanged); Assert.IsFalse(textChanged); }
/// <summary> /// Initializes a new instance of the <see cref="ConfigPresenter"/> class. /// </summary> /// <param name="config">The config.</param> public ConfigPresenter(ConfigProperties config, IEventAggregator eventAggregator) { _config = config; _configObserver = new PropertyObserver <ConfigProperties>(_config); _configObserver.RegisterHandler(o => o.RequiredImpactLevel, o => OnPropertyChanged("RequiredImpactLevel")); _configObserver.RegisterHandler(o => o.ContactSensorRequired, o => OnPropertyChanged("ContactSensorRequired")); RegisterChungCommand = new DelegateCommand <object>(obj => { eventAggregator.GetEvent <RemoteEvents.ButtonPressed>().Publish(RemoteEvents.Buttons.RegisterChung); }); RegisterHongCommand = new DelegateCommand <object>(obj => { eventAggregator.GetEvent <RemoteEvents.ButtonPressed>().Publish(RemoteEvents.Buttons.RegisterHong); }); RegisterTargetCommand = new DelegateCommand <object>(obj => { eventAggregator.GetEvent <RemoteEvents.ButtonPressed>().Publish(RemoteEvents.Buttons.RegisterTarget); }); }
/// <summary> /// Initializes a new instance of the <see cref="ConfigPresenter"/> class. /// </summary> /// <param name="config">The config.</param> public ConfigPresenter(ConfigProperties config, IEventAggregator eventAggregator) { _config = config; _configObserver = new PropertyObserver<ConfigProperties>(_config); _configObserver.RegisterHandler(o => o.RequiredImpactLevel, o => OnPropertyChanged("RequiredImpactLevel")); _configObserver.RegisterHandler(o => o.ContactSensorRequired, o => OnPropertyChanged("ContactSensorRequired")); RegisterChungCommand = new DelegateCommand<object>(obj => { eventAggregator.GetEvent<RemoteEvents.ButtonPressed>().Publish(RemoteEvents.Buttons.RegisterChung); }); RegisterHongCommand = new DelegateCommand<object>(obj => { eventAggregator.GetEvent<RemoteEvents.ButtonPressed>().Publish(RemoteEvents.Buttons.RegisterHong); }); RegisterTargetCommand = new DelegateCommand<object>(obj => { eventAggregator.GetEvent<RemoteEvents.ButtonPressed>().Publish(RemoteEvents.Buttons.RegisterTarget); }); }
public void HandlePropertyChangedEvents() { bool valueChanged = false; bool textChanged = false; DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler("Value", src => valueChanged = true); observer.RegisterHandler(src => src.Text, src => textChanged = true); Assert.IsFalse(valueChanged); Assert.IsFalse(textChanged); source.Value = 10; Assert.IsTrue(valueChanged); Assert.IsFalse(textChanged); valueChanged = false; source.Text = "abc"; Assert.IsFalse(valueChanged); Assert.IsTrue(textChanged); textChanged = false; source.RaisePropertyChanged(); Assert.IsTrue(valueChanged); Assert.IsTrue(textChanged); valueChanged = false; textChanged = false; observer.UnregisterHandler("Value"); source.RaisePropertyChanged(); Assert.IsFalse(valueChanged); Assert.IsTrue(textChanged); textChanged = false; observer.UnregisterHandler(src => src.Text); source.RaisePropertyChanged(); Assert.IsFalse(valueChanged); Assert.IsFalse(textChanged); }
public void RegisterAllPropsHandler() { bool calledPropChange = false; TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.RegisterHandler(o => o.SValue, (oo) => calledPropChange = true); obj.ForceAllPropertyChange(); Assert.IsTrue(calledPropChange); }
public void SourceIsWeakReference() { bool valueChanged = false; bool textChanged = false; DummyClass source = new DummyClass(); PropertyObserver <DummyClass> observer = new PropertyObserver <DummyClass>(source); observer.RegisterHandler("Value", src => valueChanged = true); observer.RegisterHandler(src => src.Text, src => textChanged = true); source.RaisePropertyChanged(); Assert.IsTrue(valueChanged); Assert.IsTrue(textChanged); Assert.IsFalse(_dummyClassFinalized); source = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Assert.IsTrue(_dummyClassFinalized); observer.UnregisterHandler("Value"); observer.UnregisterHandler(src => src.Text); }
public DirectoryViewModel() { ExecuteItemCommand = new DelegateCommand(ExecuteExecuteItem, CanExecuteExecuteItem); History = new History<IDirectoryViewItem>(); FileSystem = new WindowsFileSystem(); propObserver = new PropertyObserver<DirectoryViewModel>(this); propObserver.RegisterHandler(x => x.SearchText, ManageSearch); fileSystemWatcher = new FileSystemWatcher { IncludeSubdirectories = false, }; fileSystemWatcher.Created += fileSystemWatcher_Changed; fileSystemWatcher.Renamed += fileSystemWatcher_Changed; fileSystemWatcher.Deleted += fileSystemWatcher_Changed; }
public void RegisterHandlerTest() { int actualInt = 0; string actualValue = null; TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.RegisterHandler(o => o.SValue, (oo) => actualValue = oo.SValue); po.RegisterHandler(o => o.IValue, (oo) => actualInt = oo.IValue); obj.SValue = "1"; Assert.AreEqual("1", actualValue); obj.IValue = 5; Assert.AreEqual(5, actualInt); po.UnregisterHandler(o => o.SValue); obj.SValue = "2"; Assert.AreEqual("1", actualValue); }
/// <summary> /// Constructor /// </summary> /// <param name="parent">Alignment view parent</param> public BirdsEyeViewModel(AlignmentViewModel parent) { if (parent == null) { throw new ArgumentNullException("parent"); } Title = "Birds Eye Viewer"; ImageUrl = "/Bio.Views.Alignment;component/images/bev_icon.png"; _parent = parent; _dataChanged = new PropertyObserver <AlignmentViewModel>(_parent); _dataChanged.RegisterHandler(v => v.TotalRows, v => StartBevGeneration()); Entities = _parent.GroupedEntities; StartBevGeneration(); }
public DirectoryViewModel() { ExecuteItemCommand = new DelegateCommand(ExecuteExecuteItem, CanExecuteExecuteItem); History = new History <IDirectoryViewItem>(); FileSystem = new WindowsFileSystem(); propObserver = new PropertyObserver <DirectoryViewModel>(this); propObserver.RegisterHandler(x => x.SearchText, ManageSearch); fileSystemWatcher = new FileSystemWatcher { IncludeSubdirectories = false, }; fileSystemWatcher.Created += fileSystemWatcher_Changed; fileSystemWatcher.Renamed += fileSystemWatcher_Changed; fileSystemWatcher.Deleted += fileSystemWatcher_Changed; }
public void UnregisterHandlerTest() { string actualValue = null; TestObject obj = new TestObject { SValue = "Test String", IValue = 10 }; WeakReference wr = new WeakReference(obj); PropertyObserver <TestObject> po = new PropertyObserver <TestObject>(obj); po.RegisterHandler(o => o.SValue, (oo) => actualValue = oo.SValue); obj.SValue = "1"; Assert.AreEqual("1", actualValue); po.UnregisterHandler(o => o.SValue); obj.SValue = "2"; Assert.AreEqual("1", actualValue); }
public void TestWeakReference() { // in .NET Core, WeakReferences have to be created in a different scope than // where they're used in order for the Garbage Collector to act on them. var createWeakReferenceTester = (PropertyObserverTests owner) => { var tester = new WeakReferenceTester <WeakReferenceHelper>(() => new WeakReferenceHelper(owner)); _observer.RegisterHandler("NewProperty", tester.Target.SourcePropertyChanged); return(tester); }; var tester = createWeakReferenceTester(this); _source.NewProperty = "Hello"; Assert.That(_propertyChanged, Is.EqualTo("NewProperty")); tester.Expire(); _propertyChanged = null; _source.NewProperty = "Goodbye"; Assert.That(_propertyChanged, Is.Null); }
private void OnStartLottery(object sender, ElapsedEventArgs e) { if (_lotteryService.GetRecordCount() < 1) { return; } _isLotterying = true; base.EnableFunction(); _currentParticipant.Clear(); if (RandomCmd) { LotteryCmd = CommonHelper.GetRandomString(3, true, true); } SdtdConsole.Instance.SendGlobalMessage(FormatCmd(null, StartLotteryTips)); if (Timer2 == null) { Timer2 = new Timer() { AutoReset = false, Interval = LotteryDuration * 1000 }; Timer2.Elapsed += OnEndLottery; _currentViewModelObserver = new PropertyObserver <LotterySystemViewModel>(this); _currentViewModelObserver.RegisterHandler(currentViewModel => currentViewModel.LotteryDuration, (vm) => { if (LotteryDuration > 0) { Timer2.Interval = LotteryDuration * 1000; } }); } Timer2.Start(); }
public void RegisterShouldThrowWhenHandlerIsNull() { DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler("Value", null); }
public void Setup() { _source = new TestPropertyChangedObject(); _observer = new PropertyObserver <TestPropertyChangedObject>(_source); _observer.RegisterHandler("ClassicProperty", SourcePropertyChanged); }
public LotterySystemViewModel(IDispatcherService dispatcherService, string functionTag, IDialogService dialogService, ScoreInfoService scoreInfoService, LotteryService lotteryService) : base(dispatcherService, functionTag) { _dialogService = dialogService; _scoreInfoService = scoreInfoService; _lotteryService = lotteryService; Timer1 = new Timer() { AutoReset = true, Interval = LotteryInterval * 1000 }; Timer1.Elapsed += OnStartLottery; _currentViewModelObserver = new PropertyObserver <LotterySystemViewModel>(this); _currentViewModelObserver.RegisterHandler(currentViewModel => currentViewModel.LotteryInterval, (vm) => { if (LotteryInterval > 0) { Timer1.Interval = LotteryInterval * 1000; Timer1.Enabled = true; } }); DataGridItemChanged = new RelayCommand <DataGridItemChangedEventArgs>(OnDataGridItemChanged); RefreshList = new RelayCommand(PrivateRefreshList); RemoveItem = new RelayCommand(() => { if (_dialogService.ShowOKCancel("确定删除选中数据吗?")) { _ = _lotteryService.RemoveAsync(SelectedItem); LotteryItems.Remove(SelectedItem); } }, () => { return(SelectedItem != null); }); RemoveAll = new RelayCommand(() => { if (_dialogService.ShowOKCancel("确定删除所有数据吗?")) { _ = _lotteryService.RemoveAllAsync(); LotteryItems = null; } }, () => { return(LotteryItems != null); }); AddData = new RelayCommand(() => { var dto = new LotteryDto() { LotteryName = LotteryName, Content = Content, Amount = Amount, Quality = Quality, LotteryType = LotteryType }; _ = _lotteryService.AddAsync(dto); LotteryItems.Add(dto); }); AddAvailableVariables(); PrivateRefreshList(); }
public void RegisterShouldThrowWhenPropertyIsEmpty() { DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler("", src => { }); }
public void RegisterShouldThrowWhenPropertyIsNull() { DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler((string)null, src => { }); }
public void SourceIsWeakReference() { bool valueChanged = false; bool textChanged = false; DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler("Value", src => valueChanged = true); observer.RegisterHandler(src => src.Text, src => textChanged = true); source.RaisePropertyChanged(); Assert.IsTrue(valueChanged); Assert.IsTrue(textChanged); Assert.IsFalse(_dummyClassFinalized); source = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Assert.IsTrue(_dummyClassFinalized); observer.UnregisterHandler("Value"); observer.UnregisterHandler(src => src.Text); }
public void RegisterShouldThrowWhenPropertyIsWrong() { DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler("Misspelled Property", src => { }); }
public void RegisterShouldThrowWhenExpressionIsNull() { DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler((Expression<Func<DummyClass, object>>)null, src => { }); }
public void RegisterShouldThrowWhenExpressionWrong() { DummyClass source = new DummyClass(); PropertyObserver<DummyClass> observer = new PropertyObserver<DummyClass>(source); observer.RegisterHandler(src => src, src => { }); }