From 5c9767c37ef79d6c33d11824660a773de2094538 Mon Sep 17 00:00:00 2001 From: Dustin Ellis Date: Fri, 9 Apr 2021 19:06:21 -0700 Subject: [PATCH] Fixed an issue with the DCS Deserializer --- NHTSAVehicleAPI/Schema/Model.cs | 2 +- NHTSAVehicleAPI/SerializeConfig.cs | 10 +++------- NHTSAVehicleAPITests/UnitTest1.cs | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/NHTSAVehicleAPI/Schema/Model.cs b/NHTSAVehicleAPI/Schema/Model.cs index d3a51fa..27ede7e 100644 --- a/NHTSAVehicleAPI/Schema/Model.cs +++ b/NHTSAVehicleAPI/Schema/Model.cs @@ -13,7 +13,7 @@ namespace NHTSAVehicleAPI.Schema /// Vehicle Model. /// [DataContract] - [DebuggerDisplay("{this.ModelNAme}")] + [DebuggerDisplay("{this.ModelName}")] public class Model : Make { /// diff --git a/NHTSAVehicleAPI/SerializeConfig.cs b/NHTSAVehicleAPI/SerializeConfig.cs index 3a50aae..496e36a 100644 --- a/NHTSAVehicleAPI/SerializeConfig.cs +++ b/NHTSAVehicleAPI/SerializeConfig.cs @@ -25,15 +25,11 @@ public static T Deserialize(string fileName) { T type; var serializer = new DataContractSerializer(typeof(T)); - using (var stream = new MemoryStream()) + using (var sr = new StreamReader(fileName)) { - using (var writer = new StreamWriter(stream)) + using (var xmlr = XmlReader.Create(sr)) { - writer.Write(fileName); - writer.Flush(); - stream.Position = 0; - - type = (T)serializer.ReadObject(stream); + type = (T)serializer.ReadObject(xmlr); } } diff --git a/NHTSAVehicleAPITests/UnitTest1.cs b/NHTSAVehicleAPITests/UnitTest1.cs index 1ac2e3c..4493b4b 100644 --- a/NHTSAVehicleAPITests/UnitTest1.cs +++ b/NHTSAVehicleAPITests/UnitTest1.cs @@ -18,6 +18,29 @@ namespace NHTSAVehicleAPITest [TestClass] public class UnitTest1 { + /// + /// Test deserializing a data file (using the XML Serializer) and then test + /// serializing/deserializing using the data contract serializer. + /// + [TestMethod] + [TestCategory(TestGroups.Validate)] + [TestCategory(TestGroups.Serialization)] + [DeploymentItem(@"Data/GetModelsForMake_Honda.xml", "Data")] + public void TestDataContractSerializerMethods() + { + const string RealDataFile = @"Data/GetModelsForMake_Honda.xml"; + + var deserializedResults = SerializeConfig.DeserializeUsingXmlSerializer(RealDataFile); + Assert.AreEqual(810, deserializedResults.ModelsForMake.Count); + + // Reserialize the data, but to a temp file + string tempFile = System.IO.Path.GetTempFileName(); + SerializeConfig.Serialize(tempFile, deserializedResults); + + var dcsResults = SerializeConfig.Deserialize(tempFile); + Assert.AreEqual(810, dcsResults.ModelsForMake.Count); + } + /// /// Test a deserialization and then serialization to be sure we create the same file that /// the NHTSA creates.