public void SignalboxClass_CopyToMethod_ThrowsArgumentNullException_IfParameterIsNull() { Signalbox testObject = SignalboxHelpers.GetSignalbox(); testObject.CopyTo(null); Assert.Fail(); }
public void SignalboxClassCopyMethodReturnsObjectWithCorrectExportDisplayNameProperty() { Signalbox sourceObject = SignalboxHelpers.GetSignalbox(); Signalbox testObject = sourceObject.Copy(); Assert.AreEqual(sourceObject.ExportDisplayName, testObject.ExportDisplayName); }
public void SignalboxExtensionsClass_ToYamlSignalboxModelMethod_ReturnsObjectWithCorrectIdProperty_IfParameterIsNotNull() { Signalbox testParam = GetTestObject(); SignalboxModel testOutput = testParam.ToYamlSignalboxModel(); Assert.AreEqual(testParam.Id, testOutput.Id); }
public void SignalboxClassCopyMethodReturnsDifferentObject() { Signalbox sourceObject = SignalboxHelpers.GetSignalbox(); Signalbox testObject = sourceObject.Copy(); Assert.AreNotSame(sourceObject, testObject); }
public void SignalboxClassCopyMethodReturnsObjectWithCorrectIdProperty() { Signalbox sourceObject = SignalboxHelpers.GetSignalbox(); Signalbox testObject = sourceObject.Copy(); Assert.AreEqual(sourceObject.Id, testObject.Id); }
public void SignalboxExtensionsClass_ToSignalboxModelMethod_ThrowsArgumentNullException_IfParameterIsNull() { Signalbox testObject = null; _ = testObject.ToSignalboxModel(); Assert.Fail(); }
public void SignalboxExtensionsClass_ToYamlSignalboxModelMethod_ReturnsObjectWithCorrectTimetableDisplayNameProperty_IfParameterIsNotNull() { Signalbox testParam = GetTestObject(); SignalboxModel testOutput = testParam.ToYamlSignalboxModel(); Assert.AreEqual(testParam.ExportDisplayName, testOutput.TimetableDisplayName); }
public void SignalboxExtensionsClass_ToYamlSignalboxModelMethod_ThrowsNullReferenceException_IfParameterIsNull() { Signalbox testParam = null; _ = testParam.ToYamlSignalboxModel(); Assert.Fail(); }
public void SignalboxModelExtensionsClass_ToSignalboxMethod_ReturnsObjectWithCorrectEditorDisplayNameProperty_IfParameterIsNotNull() { SignalboxModel testParam = GetModel(); Signalbox testOutput = testParam.ToSignalbox(); Assert.AreEqual(testParam.EditorDisplayName, testOutput.EditorDisplayName); }
public void SignalboxCollectionClassIndexerWithIntParameterReturnsCorrectObject() { List <Signalbox> testData = SignalboxHelpers.GetSignalboxList(1, 64); SignalboxCollection testCollection = new SignalboxCollection(testData); int idx = _random.Next(testData.Count); Signalbox testObject = testCollection[idx]; Assert.AreSame(testData[idx], testObject); }
public void SignalboxClassSettingCodePropertyToExistingValueDoesNotRaiseCodeChangedEvent() { string code = _random.NextString(_random.Next(1, 4)); int invocations = 0; Signalbox testObject = new Signalbox { Code = code }; testObject.CodeChanged += new SignalboxEventHandler((o, e) => { invocations++; }); testObject.Code = code; Assert.AreEqual(0, invocations); }
public void SignalboxClass_CopyToMethod_OverwritesExportDisplayNameProperty() { Signalbox sourceObject = SignalboxHelpers.GetSignalbox(); Signalbox testObject; do { testObject = SignalboxHelpers.GetSignalbox(); } while (!AreSignalboxesCompletelyDifferent(sourceObject, testObject)); sourceObject.CopyTo(testObject); Assert.AreEqual(sourceObject.ExportDisplayName, testObject.ExportDisplayName); }
private void BtnDelete_Click(object sender, EventArgs e) { if (dataGridView.SelectedCells.Count == 0) { return; } Signalbox box = Model.FirstOrDefault(b => b.Id == (dataGridView.SelectedCells[0].OwningRow.Cells[_idColIdx].Value as string)); if (box == null) { return; } Model.Remove(box); }
public void SignalboxClassSettingExportDisplayNamePropertyToExistingVaueDoesNotRaiseExportDisplayNameChangedEvent() { string name = _random.NextString(_random.Next(128)); int invocations = 0; Signalbox testObject = new Signalbox { ExportDisplayName = name }; testObject.ExportDisplayNameChanged += new SignalboxEventHandler((o, e) => { invocations++; }); testObject.ExportDisplayName = name; Assert.AreEqual(0, invocations); }
public void SignalboxCollectionClassIndexerWithIntParameterRaisesSignalboxRemoveEventWithCorrectEventArgsIfSetIsCalledWithDifferenObject() { List <Signalbox> testData = SignalboxHelpers.GetSignalboxList(1, 64); SignalboxCollection testCollection = new SignalboxCollection(testData); Signalbox testObject = SignalboxHelpers.GetSignalbox(); Signalbox capturedBox = null; testCollection.SignalboxRemove += new Events.SignalboxEventHandler((o, e) => { capturedBox = e.Signalbox; }); int idx = _random.Next(testData.Count); testCollection[idx] = testObject; Assert.AreSame(testData[idx], capturedBox); }
public void SignalboxCollectionClassIndexerWithIntParameterRaisesSignalboxRemoveEventIfSetIsCalledWithDifferentObject() { List <Signalbox> testData = SignalboxHelpers.GetSignalboxList(1, 64); SignalboxCollection testCollection = new SignalboxCollection(testData); Signalbox testObject = SignalboxHelpers.GetSignalbox(); int invocations = 0; testCollection.SignalboxRemove += new Events.SignalboxEventHandler((o, e) => { invocations++; }); int idx = _random.Next(testData.Count); testCollection[idx] = testObject; Assert.AreEqual(1, invocations); }
public void SignalboxClass_CopyToMethod_ThrowsArgumentNullExceptionWithCorrectParamNameProperty_IfParameterIsNull() { Signalbox testObject = SignalboxHelpers.GetSignalbox(); try { testObject.CopyTo(null); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.AreEqual("box", ex.ParamName); } }
public void SignalboxExtensionsClass_ToSignalboxModelMethod_ThrowsArgumentNullExceptionWithCorrectParamNameProperty_IfParameterIsNull() { Signalbox testObject = null; try { _ = testObject.ToSignalboxModel(); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.AreEqual("box", ex.ParamName); } }
/// <summary> /// Convert a <see cref="Signalbox"/> instance into a <see cref="SignalboxModel"/> instance. /// </summary> /// <param name="box">The <see cref="Signalbox"/> to be converted.</param> /// <returns>A <see cref="SignalboxModel"/> converted from the parameter.</returns> public static SignalboxModel ToSignalboxModel(this Signalbox box) { if (box is null) { throw new ArgumentNullException(nameof(box)); } return(new SignalboxModel { Id = box.Id, Code = box.Code, EditorDisplayName = box.EditorDisplayName, TimetableDisplayName = box.ExportDisplayName, }); }
/// <summary> /// Convert a <see cref="Signalbox" /> instance to a <see cref="SignalboxModel" /> instance. /// </summary> /// <param name="box">The object to be converted.</param> /// <returns>A <see cref="SignalboxModel" /> instance containing the same data as the parameter in serialisable form.</returns> /// <exception cref="NullReferenceException">Thrown if the parameter is <c>null</c>.</exception> public static SignalboxModel ToYamlSignalboxModel(this Signalbox box) { if (box is null) { throw new NullReferenceException(); } return(new SignalboxModel { Id = box.Id, Code = box.Code, EditorDisplayName = box.EditorDisplayName, TimetableDisplayName = box.ExportDisplayName, }); }
private void BtnAdd_Click(object sender, EventArgs e) { Signalbox newBox = new Signalbox { Id = GeneralHelper.GetNewId(Model) }; using (SignalboxEditForm form = new SignalboxEditForm { Model = newBox }) { if (form.ShowDialog() != DialogResult.OK) { return; } Model.Add(form.Model); } }
public void SignalboxClassSettingCodePropertyRaisesCodeChangedEvent() { string firstCode = _random.NextString(_random.Next(1, 4)); string secondCode; do { secondCode = _random.NextString(_random.Next(1, 4)); } while (firstCode == secondCode); int invocations = 0; Signalbox testObject = new Signalbox { Code = firstCode }; testObject.CodeChanged += new SignalboxEventHandler((o, e) => { invocations++; }); testObject.Code = secondCode; Assert.AreEqual(1, invocations); }
public void SignalboxClassSettingEditorDisplayNamePropertyRaisesEditorDisplayNameChangedEvent() { string firstName = _random.NextString(_random.Next(128)); string secondName; do { secondName = _random.NextString(_random.Next(128)); } while (firstName == secondName); int invocations = 0; Signalbox testObject = new Signalbox { EditorDisplayName = firstName }; testObject.EditorDisplayNameChanged += new SignalboxEventHandler((o, e) => { invocations++; }); testObject.EditorDisplayName = secondName; Assert.AreEqual(1, invocations); }
private void MoveUpDown(int step) { if (dataGridView.SelectedCells.Count == 0) { return; } Signalbox box = Model.FirstOrDefault(b => b.Id == (dataGridView.SelectedCells[0].OwningRow.Cells[_idColIdx].Value as string)); int idx = Model.IndexOf(box); if (idx < 0 || idx + step >= Model.Count) { return; } Signalbox otherBox = Model[idx + step]; // This is so that neither box ever has to be in the _rowMap at the same time. Model[idx + step] = null; Model[idx] = otherBox; Model[idx + step] = box; }
public void SignalboxClassSettingExportDisplayNamePropertyRaisesExportDisplayNameChangedEventWithCorrectSenderAndArguments() { string firstName = _random.NextString(_random.Next(128)); string secondName; do { secondName = _random.NextString(_random.Next(128)); } while (firstName == secondName); object lastSender = null; SignalboxEventArgs lastEventArgs = null; Signalbox testObject = new Signalbox { ExportDisplayName = firstName }; testObject.ExportDisplayNameChanged += new SignalboxEventHandler((o, e) => { lastSender = o; lastEventArgs = e; }); testObject.ExportDisplayName = secondName; Assert.AreSame(testObject, lastSender as Signalbox); Assert.AreSame(testObject, lastEventArgs.Signalbox); }
public void SignalboxClassSettingCodePropertyRaisesCodeChangedEventWithCorrectArguments() { string firstCode = _random.NextString(_random.Next(1, 4)); string secondCode; do { secondCode = _random.NextString(_random.Next(1, 4)); } while (firstCode == secondCode); object lastSender = null; SignalboxEventArgs lastEventArgs = null; Signalbox testObject = new Signalbox { Code = firstCode }; testObject.CodeChanged += new SignalboxEventHandler((o, e) => { lastSender = o; lastEventArgs = e; }); testObject.Code = secondCode; Assert.AreSame(testObject, lastSender as Signalbox); Assert.AreSame(testObject, lastEventArgs.Signalbox); }
private void BtnEdit_Click(object sender, EventArgs e) { if (dataGridView.SelectedCells.Count == 0) { return; } Signalbox box = Model.FirstOrDefault(b => b.Id == (dataGridView.SelectedCells[0].OwningRow.Cells[_idColIdx].Value as string)); if (box == null) { return; } using (SignalboxEditForm form = new SignalboxEditForm { Model = box.Copy() }) { if (form.ShowDialog() != DialogResult.OK) { return; } form.Model.CopyTo(box); } }
/// <summary> /// Convert a <see cref="TimetableFileModel" /> instance to a <see cref="TimetableDocument" /> instance. /// </summary> /// <param name="model">The object to convert.</param> /// <returns>A <see cref="TimetableDocument" /> instance containing the same data as the parameter.</returns> /// <exception cref="NullReferenceException">Thrown if the parameter is <c>null</c>.</exception> public static TimetableDocument ToTimetableDocument(this TimetableFileModel model) { if (model is null) { throw new NullReferenceException(); } Dictionary <string, Signalbox> signalboxes = new Dictionary <string, Signalbox>(); Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_TimetableFileModelConversionVersion, model.Version); TimetableDocument document = new TimetableDocument { Version = model.Version, Options = model.FileOptions != null?model.FileOptions.ToDocumentOptions() : new DocumentOptions(), ExportOptions = model.ExportOptions != null?model.ExportOptions.ToDocumentExportOptions() : new DocumentExportOptions(), Title = model.Title ?? string.Empty, Subtitle = model.Subtitle ?? string.Empty, DateDescription = model.DateDescription ?? string.Empty, WrittenBy = model.WrittenBy ?? string.Empty, CheckedBy = model.CheckedBy ?? string.Empty, TimetableVersion = model.TimetableVersion ?? string.Empty, PublishedDate = model.PublishedDate ?? string.Empty, }; if (model.Maps != null && model.Maps.Count > 0 && model.Maps[0] != null) { if (model.Maps[0].LocationList != null) { Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_LocationCount, model.Maps[0].LocationList.Count); foreach (LocationModel loc in model.Maps[0].LocationList) { document.LocationList.Add(loc.ToLocation()); } Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_LocationsLoaded, document.LocationList.Count); } else { Log.Trace("No locations to load."); } if (model.Maps[0].Signalboxes != null) { Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_SignalboxCount, model.Maps[0].Signalboxes.Count); foreach (SignalboxModel box in model.Maps[0].Signalboxes) { Signalbox b = box.ToSignalbox(); document.Signalboxes.Add(b); if (!signalboxes.ContainsKey(b.Id)) { signalboxes.Add(b.Id, b); } } Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_SignalboxesLoaded, document.Signalboxes.Count); } else { Log.Trace("No signalboxes to load"); } } if (model.SignalboxHoursSets != null) { Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_SignalboxHoursSetCount, model.SignalboxHoursSets.Count); foreach (SignalboxHoursSetModel set in model.SignalboxHoursSets) { document.SignalboxHoursSets.Add(set.ToSignalboxHoursSet(signalboxes, document.SignalboxHoursSets)); } Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_SignalboxHoursSetsLoaded, document.SignalboxHoursSets.Count); } else { Log.Trace("No signalbox hours sets to load."); } if (model.NoteDefinitions != null) { Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_NoteDefinitionCount, model.NoteDefinitions.Count); foreach (NoteModel note in model.NoteDefinitions) { document.NoteDefinitions.Add(note.ToNote()); } Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_NoteDefinitionsLoaded, document.NoteDefinitions.Count); } else { Log.Trace("No note definitions to load."); } if (model.TrainClassList != null) { Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_TrainClassCount, model.TrainClassList.Count); foreach (TrainClassModel tc in model.TrainClassList) { document.TrainClassList.Add(tc.ToTrainClass()); } Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_TrainClassesLoaded, document.TrainClassList.Count); } else { Log.Trace("No train classes to load."); } Dictionary <string, Location> locationMap = document.LocationList.ToDictionary(o => o.Id); Dictionary <string, TrainClass> classMap = document.TrainClassList.ToDictionary(c => c.Id); Dictionary <string, Note> noteMap = document.NoteDefinitions.ToDictionary(n => n.Id); if (model.TrainList != null) { Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_TrainCount, model.TrainList.Count); foreach (TrainModel trn in model.TrainList) { document.TrainList.Add(trn.ToTrain(locationMap, classMap, noteMap, document.Options)); } Log.Trace(CultureInfo.CurrentCulture, Resources.LogMessage_TrainsLoaded, document.TrainList.Count); } else { Log.Trace("No trains to load."); } return(document); }
private bool AreSignalboxesCompletelyDifferent(Signalbox s1, Signalbox s2) { return(s1.Id != s2.Id && s1.Code != s2.Code && s1.EditorDisplayName != s2.EditorDisplayName && s1.ExportDisplayName != s2.ExportDisplayName); }