public void PageInfo_Walk(int count, int psz, bool remount, int strvar) { string makestr(int i) { return(strvar > 0 ? (new string(' ', i % strvar) + "text-string-" + i.ToString()) : ("text-string-" + i.ToString())); } var ms = new MemoryStream(); var meta = VolumeMetadataBuilder.Make("String archive", StringArchiveAppender.CONTENT_TYPE_STRING) .SetVersion(1, 0) .SetDescription("Testing string messages") .SetChannel(Atom.Encode("dvop")); var volume = new DefaultVolume(CryptoMan, meta, ms, ownsStream: false); volume.PageSizeBytes = psz; using (var appender = new StringArchiveAppender(volume, NOPApplication.Instance.TimeSource, NOPApplication.Instance.AppId, "dima@zhaba")) { for (var i = 0; i < count; i++) { appender.Append(makestr(i)); } } if (remount) { volume.Dispose(); volume = new DefaultVolume(CryptoMan, ms, ownsStream: false); } var pis = volume.ReadPageInfos(0); "Page infos: {0}".SeeArgs(pis.Count()); foreach (var pi in pis) { var one = volume.ReadPageInfo(pi.PageId); Aver.AreEqual(pi, one); } var total = 0; var reader = new StringArchiveReader(volume); foreach (var pi in pis) { var page = reader.GetOnePageAt(pi.PageId, true); foreach (var entry in page.Entries) { if (entry.State == Entry.Status.Valid) { Aver.AreEqual(makestr(total), reader.Materialize(entry)); total++; } } } Aver.AreEqual(count, total); volume.Dispose(); }