public void Write_operations_on_ObservableStringWriter_are_observable_and_produce_one_event_per_top_level_write_invocation( Action <TextWriter> write, string expectedValue) { var writer = new ObservableStringWriter(); using var events = writer.ToSubscribedList(); write(writer); events.Should() .ContainSingle() .Which .Should() .Be(expectedValue); }
public FirmwareVM() { //set fields Log = new ObservableStringWriter(); _uploader = new Uploader(); _uploader.Out = Log; _uploader.Status += Uploader_Status; var connection = App.Instance.Connection; FlashCommand = new RelayCommandAsync(Flash); SelectFileImageCommand = new RelayCommandAsync(SelectFileImage); Ports = connection.Ports; var storage = App.Instance.Storage; FirmwareModels = (from f in storage.Firmware group f by f.Model into g orderby g.Key descending select new FirmwareModelVM() { Model = g.Key, Images = g.Select(i => new FirmwareImageVM(i) { Description = $"{i.Model} v{i.Version} released {i.ReleaseDate.ToShortDateString()}" }).OrderByDescending(i => i.Firmware.Version).ToArray() } ).ToArray(); //select the most recent SelectedFirmwareModel = FirmwareModels.First(); SelectedFirmwareImage = SelectedFirmwareModel.Images.First(); //connect to events _connectionEvents = new PropertyObserver <ConnectionVM>(connection) .RegisterHandler(i => i.CurrentArm, CurrentRobotChanged) .RegisterHandler(i => i.Ports, CurrentRobotChanged); CurrentRobotChanged(connection); }