public void TestDeserializer() { var payload = GetSerializedMovies(); var models = GetMovies(); FixedLengthConverter.Parse(payload, psr => { if (!psr.HasData) { return; } psr.AutoTrim = true; psr.RemoveLineBreaks(); while (psr.HasData) { var movie = new Movie { Id = int.Parse(psr.Cut(10)), Title = psr.Cut(40), Director = psr.Cut(30), ReleaseYear = int.Parse(psr.Cut(4)), Budget = decimal.Parse(psr.Cut(18)) }; Assert.AreEqual(movie, models.First(a => a.Id == movie.Id)); } }); }
private string GetSerializedMovies() { var payload = FixedLengthConverter.Serialize(srlzr => { var models = GetMovies(); foreach (var model in models) { var i = models.IndexOf(model); const int expectedLengthPerLine = 102; srlzr.Concat(model.Id, 10); srlzr.Concat(model.Title, 40); srlzr.Concat(model.Director, 30); srlzr.Concat(model.ReleaseYear, 4); srlzr.Concat(model.Budget, 18); srlzr.ConcatLineBreak(); srlzr.Validate((i + 1) * expectedLengthPerLine, ignoreLineBreaks: true); } }); return(payload); }