private IDisposable ShouldUpdateContentWhenContentChangedReceived() { return(_bus .GetEvent <Event.ContentChanged>() .Where(@event => @event.Row == Row && @event.Column == Column) .Select(@event => @event.Content) .ObserveOn(_scheduler) .Subscribe(_content)); }
private IDisposable ShouldRecalculateDependentCellsWhenTextChanges() { return(_bus .GetEvent <Event.TextChanged>() .Select(@event => new { Event = @event, Dependencies = CollateDependencies(@event) }) .SelectMany(tuple => tuple.Dependencies .Select(RecalculateCell) .Select(cell => new Event.ContentChanged(Guid.NewGuid(), tuple.Event.Id, tuple.Event.Id) { Row = cell.Index.Row, Column = cell.Index.Column, Content = cell.Content })) .Subscribe(_bus.Publish)); }