Ejemplo n.º 1
0
        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));
                    }
                }
            }
        }
Ejemplo n.º 2
0
 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);
             }
         }
     }
 }