void TryReloadNestedSkippedFragments( ITestObject complexObject ) { object rootObject = new object(); SimpleNamedVersionedUniqueId p1 = new SimpleNamedVersionedUniqueId( Guid.NewGuid(), new Version( 1, 0, 0 ), "plugin1" ); SimpleNamedVersionedUniqueId p2 = new SimpleNamedVersionedUniqueId( Guid.NewGuid(), new Version( 1, 0, 0 ), "plugin2" ); string path = TestBase.GetTestFilePath( "SharedDic", "NestedSkippedFragments" ); // Write ! { SharedDictionaryImpl dic = new SharedDictionaryImpl( SharedDicTestContext.ServiceProvider ); dic[rootObject, p1, "complexObject"] = complexObject; dic[complexObject, p2, "subKey"] = "subValue"; SharedDicTestContext.Write( "Test", path, dic, rootObject ); TestBase.DumpFileToConsole( path ); } // Read nothing then p1 and p2 { IList<ReadElementObjectInfo> errors = new List<ReadElementObjectInfo>(); SharedDictionaryImpl dic = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, rootObject, out errors ); dic.Ensure( p1 ); dic.Ensure( p2 ); CheckAllDataLoaded( rootObject, complexObject, p1, p2, dic ); } // Read nothing then p2 and p1 { IList<ReadElementObjectInfo> errors = new List<ReadElementObjectInfo>(); SharedDictionaryImpl dic = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, rootObject, out errors ); dic.Ensure( p2 ); dic.Ensure( p1 ); CheckAllDataLoaded( rootObject, complexObject, p1, p2, dic ); } // Ensure p1 then read p2 { IList<ReadElementObjectInfo> errors = new List<ReadElementObjectInfo>(); SharedDictionaryImpl dic = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, rootObject, d => d.Ensure( p1 ), out errors ); dic.Ensure( p2 ); CheckAllDataLoaded( rootObject, complexObject, p1, p2, dic ); } // Ensure p2 then read p1 { IList<ReadElementObjectInfo> errors = new List<ReadElementObjectInfo>(); SharedDictionaryImpl dic = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, rootObject, d => d.Ensure( p2 ), out errors ); dic.Ensure( p1 ); CheckAllDataLoaded( rootObject, complexObject, p1, p2, dic ); } // Ensure p1 and p2 then read nothing { IList<ReadElementObjectInfo> errors = new List<ReadElementObjectInfo>(); SharedDictionaryImpl dic = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, rootObject, d => { d.Ensure( p1 ); d.Ensure( p2 ); }, out errors ); CheckAllDataLoaded( rootObject, complexObject, p1, p2, dic ); } // Ensure p2 and p1 then read nothing { IList<ReadElementObjectInfo> errors = new List<ReadElementObjectInfo>(); SharedDictionaryImpl dic = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, rootObject, d => { d.Ensure( p2 ); d.Ensure( p1 ); }, out errors ); CheckAllDataLoaded( rootObject, complexObject, p1, p2, dic ); } }
public void TryImportBadSkippedFragments() { INamedVersionedUniqueId uid1 = SharedDicTestContext.Plugins[0]; INamedVersionedUniqueId uid2 = SharedDicTestContext.Plugins[1]; string path = TestBase.GetTestFilePath( "SharedDic", "TryImportBadSkippedFragments" ); #region Creates actual fragments object key = new object(); // Creates a dummy dictionnary and writes it. SharedDictionaryImpl dic = CreateDummySharedDic( key, uid1, uid2 ); SharedDicTestContext.Write( "Test", path, dic, key ); // Creates a second dictionnary to load previous data (with skippedFragments). IList<ReadElementObjectInfo> errors; SharedDictionaryImpl dicFrag = (SharedDictionaryImpl)SharedDicTestContext.Read( "Test", path, key, d => d.Ensure( uid1 ), out errors ); Assert.IsTrue( new FileInfo( path ).Length > 0, "File must exist and be not empty." ); Assert.That( errors.Count, Is.EqualTo( 0 ) ); Assert.That( dicFrag.GetSkippedFragments( key ) != null ); Assert.That( dicFrag[key, uid2, "key1"], Is.Null ); Assert.That( dicFrag[key, uid2, "key2"], Is.Null ); #endregion SharedDictionaryImpl dic2 = new SharedDictionaryImpl( SharedDicTestContext.ServiceProvider ); dic2.Ensure( uid1 ); dic2[this, uid1, "key1"] = "value1"; dic2[this, uid1, "key2"] = "value2"; Assert.That( dic2[this, uid2, "key1"], Is.Null ); Assert.That( dic2[this, uid2, "key2"], Is.Null ); dic2.ImportFragments( dicFrag.Fragments, MergeMode.None ); Assert.That( dic2.GetSkippedFragments( this ) == null ); }