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