static void Serialize(ISerializerFacade serializer, TestCase testCase) { var testInstance = serializer.CreateInstance(testCase.MessageType); testCase.Populate(testInstance); var testCaseFolder = GetTestCaseFolder(testCase, serializer.SerializationFormat); var fileName = GetFileName(testCaseFolder, serializer.SerializationFormat.ToString("G").ToLower()); using (var stream = new FileStream(fileName, FileMode.Create)) { serializer.Serialize(stream, testInstance); stream.Flush(true); } }
static void DeserializeAndVerify(ISerializerFacade serializer, TestCase testCase) { var expectedValues = serializer.CreateInstance(testCase.MessageType); testCase.Populate(expectedValues); var testCaseFolder = GetTestCaseFolder(testCase, serializer.SerializationFormat); var files = Directory.GetFiles(testCaseFolder); if (files.Length == 0) { throw new Exception( "No available files to deserialize. Make sure to run the serialization test case first."); } foreach (var filePath in files) { string fileName = Path.GetFileName(filePath); if (ExcludeList.Contains(testCase, fileName)) { Console.WriteLine($"\tSkipping {fileName} because it was excluded"); continue; } using (var stream = new FileStream(filePath, FileMode.Open)) { try { Console.WriteLine($"\tDeserializing {fileName}"); var deserializedType = serializer.Deserialize(stream).First(); testCase.CheckIfAreEqual(deserializedType, expectedValues); } catch (Exception e) when(e is not AssertionException) { Console.WriteLine("\tError: " + e.Message); Assert.Fail($"Failed deserializing {testCase.GetType().Name} - {fileName}: {e}"); } } } }