Esempio n. 1
0
        public void TimetableDocumentTemplateModelClass_Constructor_SetsTrainClassesPropertyToEmptyCollection()
        {
            TimetableDocumentTemplateModel testOutput = new TimetableDocumentTemplateModel();

            Assert.IsNotNull(testOutput.TrainClasses);
            Assert.AreEqual(0, testOutput.TrainClasses.Count);
        }
Esempio n. 2
0
        /// <summary>
        /// Convert a <see cref="TimetableDocumentTemplateModel" /> instance to a <see cref="DocumentTemplate" /> instance.
        /// </summary>
        /// <param name="model">The object to be converted.</param>
        /// <returns>A <see cref="DocumentTemplate" /> instance containing the same data as the parameter.</returns>
        /// <exception cref="NullReferenceException">Thrown if the parameter is <c>null</c>.</exception>
        public static DocumentTemplate ToDocumentTemplate(this TimetableDocumentTemplateModel model)
        {
            if (model is null)
            {
                throw new NullReferenceException();
            }

            IEnumerable <Location> locationSource;

            if (model.Maps != null && model.Maps.Count > 0 && model.Maps[0] != null)
            {
                locationSource = model.Maps[0].LocationList.Select(l => l.ToLocation());
            }
            else
            {
                locationSource = Array.Empty <Location>();
            }

            DocumentTemplate template = new DocumentTemplate(
                locationSource,
                model.NoteDefinitions.Select(n => n.ToNote()),
                model.TrainClasses.Select(c => c.ToTrainClass()),
                model.Maps[0].Signalboxes.Select(s => s.ToSignalbox()))
            {
                DocumentOptions = model.DefaultOptions.ToDocumentOptions(),
                ExportOptions   = model.DefaultExportOptions.ToDocumentExportOptions(),
            };

            return(template);
        }
        public void TimetableDocumentTemplateModelExtensionsClass_ToDocumentTemplateMethod_ThrowsArgumentNullException_IfParameterIsNull()
        {
            TimetableDocumentTemplateModel testObject = null;

            _ = testObject.ToDocumentTemplate();

            Assert.Fail();
        }
        public void TimetableDocumentTemplateModelExtensionsClass_ToDocumentTemplateMethod_ThrowsArgumentNullExceptionWithCorrectParamNameProperty_IfParameterIsNull()
        {
            TimetableDocumentTemplateModel testObject = null;

            try
            {
                _ = testObject.ToDocumentTemplate();
                Assert.Fail();
            }
            catch (ArgumentNullException ex)
            {
                Assert.AreEqual("model", ex.ParamName);
            }
        }
        /// <summary>
        /// Convert a <see cref="DocumentTemplate" /> instance to a <see cref="TimetableDocumentTemplateModel" /> instance.
        /// </summary>
        /// <param name="template">The object to be converted.</param>
        /// <returns>A <see cref="TimetableDocumentTemplateModel" /> instance containing the same data as the original object in serialisable form.</returns>
        /// <exception cref="NullReferenceException">Thrown if the parameter is null.</exception>
        public static TimetableDocumentTemplateModel ToYamlTimetableDocumentTemplateModel(this DocumentTemplate template)
        {
            if (template is null)
            {
                throw new NullReferenceException();
            }

            TimetableDocumentTemplateModel tdtm = new TimetableDocumentTemplateModel
            {
                DefaultExportOptions = template.ExportOptions.ToYamlExportOptionsModel(),
                DefaultOptions       = template.DocumentOptions.ToYamlDocumentOptionsModel(),
            };
            NetworkMapModel nmm = new NetworkMapModel();

            nmm.LocationList.AddRange(template.Locations.Select(c => c.ToYamlLocationModel()));
            nmm.Signalboxes.AddRange(template.Signalboxes.Select(b => b.ToYamlSignalboxModel()));
            tdtm.Maps.Add(nmm);
            tdtm.NoteDefinitions.AddRange(template.NoteDefinitions.Select(n => n.ToYamlNoteModel()));
            tdtm.TrainClasses.AddRange(template.TrainClasses.Select(c => c.ToYamlTrainClassModel()));
            return(tdtm);
        }
        /// <summary>
        /// Convert a <see cref="DocumentTemplate"/> instance into a <see cref="TimetableDocumentTemplateModel"/> instance.
        /// </summary>
        /// <param name="template">The <see cref="DocumentTemplate"/> to be converted.</param>
        /// <returns>A <see cref="TimetableDocumentTemplateModel"/> instance representing the parameter.</returns>
        public static TimetableDocumentTemplateModel ToTimetableDocumentTemplateModel(this DocumentTemplate template)
        {
            if (template is null)
            {
                throw new ArgumentNullException(nameof(template));
            }

            TimetableDocumentTemplateModel model = new TimetableDocumentTemplateModel
            {
                DefaultExportOptions = template.ExportOptions.ToExportOptionsModel(),
                DefaultOptions       = template.DocumentOptions.ToDocumentOptionsModel(),
            };
            NetworkMapModel nmm = new NetworkMapModel();

            nmm.LocationList.AddRange(template.Locations.Select(c => c.ToLocationModel()));
            model.Maps.Add(nmm);
            model.NoteDefinitions.AddRange(template.NoteDefinitions.Select(n => n.ToNoteModel()));
            model.TrainClasses.AddRange(template.TrainClasses.Select(c => c.ToTrainClassModel()));
            model.Signalboxes.AddRange(template.Signalboxes.Select(s => s.ToSignalboxModel()));
            return(model);
        }
        internal static DocumentTemplate LoadXmlDocumentTemplate(Stream str)
        {
            try
            {
                using (XmlReader reader = XmlReader.Create(str))
                {
                    if (reader == null)
                    {
                        throw new TimetableLoaderException(Resources.Error_CouldNotCreateXmlReader);
                    }
                    reader.MoveToContent();
                    if (reader.Name != "TimetableDocumentTemplate")
                    {
                        throw new TimetableLoaderException(Resources.Error_XmlDoesNotContainTimetableDocumentTemplate);
                    }
                    if (!int.TryParse(reader.GetAttribute("version"), out int version))
                    {
                        throw new TimetableLoaderException(Resources.Error_XmlTimetableDocumentTemplateDoesNotSpecifyVersion);
                    }
                    if (version > Versions.CurrentDocumentTemplate)
                    {
                        throw new TimetableLoaderException(string.Format(CultureInfo.CurrentCulture, Resources.Error_XmlTimetableDocumentTemplateUnsupportedVersion, version));
                    }

                    // Version-detection code to go here.
                    XmlSerializer deserializer = new XmlSerializer(typeof(TimetableDocumentTemplateModel));
                    TimetableDocumentTemplateModel templateModel = (TimetableDocumentTemplateModel)deserializer.Deserialize(reader);
                    return(templateModel.ToDocumentTemplate());
                }
            }
            catch (TimetableLoaderException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new TimetableLoaderException(Resources.Error_GenericLoaderError, ex);
            }
        }
Esempio n. 8
0
        public void TimetableDocumentTemplateModelClass_Constructor_SetsVersionPropertyTo3()
        {
            TimetableDocumentTemplateModel testOutput = new TimetableDocumentTemplateModel();

            Assert.AreEqual(3, testOutput.Version.Value);
        }
Esempio n. 9
0
        public void TimetableDocumentTemplateModelClass_Constructor_CreatesObjectWithSignalboxesPropertyThatIsNotNull()
        {
            TimetableDocumentTemplateModel testOutput = new TimetableDocumentTemplateModel();

            Assert.IsNotNull(testOutput.Signalboxes);
        }
Esempio n. 10
0
        public void TimetableDocumentTemplateModelClass_Constructor_CreatesObjectWithNoteDefinitionsPropertyThatIsNotNull()
        {
            TimetableDocumentTemplateModel testOutput = new TimetableDocumentTemplateModel();

            Assert.IsNotNull(testOutput.NoteDefinitions);
        }