public void PersistMopsiList() { var mopsi = (IManyOnePathSortItem)m_list[m_list.Count - 1]; using (var stream = new MemoryStream()) { var objRepo = Cache.ServiceLocator.ObjectRepository; var originalPersistData = mopsi.PersistData(objRepo); using (var writer = new StreamWriter(stream)) { ManyOnePathSortItem.WriteItems(m_list, writer, objRepo, null); stream.Seek(0, SeekOrigin.Begin); using (var reader = new StreamReader(stream)) { string versionStamp; var items = ManyOnePathSortItem.ReadItems(reader, objRepo, out versionStamp); Assert.That(items.Count, Is.EqualTo(m_list.Count)); Assert.That(versionStamp, Is.Null); mopsi = (IManyOnePathSortItem)items[0]; Assert.That(mopsi.KeyObject, Is.EqualTo(Cache.LangProject.Hvo)); Assert.That(mopsi.PathLength, Is.EqualTo(0)); // Root object is key object, if no path. Assert.That(mopsi.RootObjectHvo, Is.EqualTo(Cache.LangProject.Hvo)); Assert.That(mopsi.RootObjectUsing(Cache), Is.EqualTo(Cache.LangProject)); // PathObject(0) is also the key, if no path. Assert.That(mopsi.PathObject(0), Is.EqualTo(Cache.LangProject.Hvo)); mopsi = (IManyOnePathSortItem)items[1]; Assert.That(mopsi.KeyObject, Is.EqualTo(Cache.LangProject.LexDbOA.Hvo)); Assert.That(mopsi.PathLength, Is.EqualTo(2)); Assert.That(mopsi.PathFlid(0), Is.EqualTo(2)); Assert.That(mopsi.PathFlid(1), Is.EqualTo(3)); Assert.That(mopsi.PathObject(0), Is.EqualTo(m_le1.Hvo)); Assert.That(mopsi.PathObject(1), Is.EqualTo(m_le2.Hvo)); Assert.That(mopsi.PathObject(2), Is.EqualTo(Cache.LangProject.LexDbOA.Hvo), "Index one too large yields key object."); Assert.That(mopsi.RootObjectHvo, Is.EqualTo(m_le1.Hvo)); Assert.That(mopsi.RootObjectUsing(Cache), Is.EqualTo(m_le1)); Assert.That(mopsi.KeyObjectUsing(Cache), Is.EqualTo(Cache.LangProject.LexDbOA)); Assert.That(mopsi.PersistData(objRepo), Is.EqualTo(originalPersistData)); } } } }
public void PersistMopsiList_BadGUID() { // Now make one containing a bad GUID. using (var stream = new MemoryStream()) { var objRepo = Cache.ServiceLocator.ObjectRepository; using (var writer = new StreamWriter(stream)) { ManyOnePathSortItem.WriteItems(m_list, writer, objRepo); writer.WriteLine(Convert.ToBase64String(Guid.NewGuid().ToByteArray())); // fake item, bad guid writer.Flush(); stream.Seek(0, SeekOrigin.Begin); using (var reader = new StreamReader(stream)) { var items = ManyOnePathSortItem.ReadItems(reader, objRepo); Assert.That(items, Is.Null); } } } }