示例#1
0
 public override void SetUp()
 {
     CacheProvider = new DictionaryCacheProvider();
 }
 public override void SetUp()
 {
     CacheProvider = new DictionaryCacheProvider();
 }
示例#3
0
        public void CachePublishedSnapshotTest(PropertyCacheLevel referenceCacheLevel, PropertyCacheLevel converterCacheLevel, int interConverts,
                                               int elementsCount1, int snapshotCount1, int elementsCount2, int snapshotCount2)
        {
            var converter = new CacheConverter1(converterCacheLevel);

            var converters = new PropertyValueConverterCollection(new IPropertyValueConverter[]
            {
                converter,
            });

            var dataTypeService = new TestObjects.TestDataTypeService(
                new DataType(new VoidEditor(Mock.Of <ILogger>()))
            {
                Id = 1
            });

            var publishedContentTypeFactory = new PublishedContentTypeFactory(Mock.Of <IPublishedModelFactory>(), converters, dataTypeService);
            var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", new[]
            {
                publishedContentTypeFactory.CreatePropertyType("prop1", 1),
            });

            var elementsCache = new DictionaryCacheProvider();
            var snapshotCache = new DictionaryCacheProvider();

            var publishedSnapshot = new Mock <IPublishedSnapshot>();

            publishedSnapshot.Setup(x => x.SnapshotCache).Returns(snapshotCache);
            publishedSnapshot.Setup(x => x.ElementsCache).Returns(elementsCache);

            var publishedSnapshotAccessor = new Mock <IPublishedSnapshotAccessor>();

            publishedSnapshotAccessor.Setup(x => x.PublishedSnapshot).Returns(publishedSnapshot.Object);

            // pretend we're creating this set as a value for a property
            // referenceCacheLevel is the cache level for this fictious property
            // converterCacheLevel is the cache level specified by the converter

            var set1 = new PublishedElement(setType1, Guid.NewGuid(), new Dictionary <string, object> {
                { "prop1", "1234" }
            }, false, referenceCacheLevel, publishedSnapshotAccessor.Object);

            Assert.AreEqual(1234, set1.Value("prop1"));
            Assert.AreEqual(1, converter.SourceConverts);
            Assert.AreEqual(1, converter.InterConverts);

            Assert.AreEqual(elementsCount1, elementsCache.Items.Count);
            Assert.AreEqual(snapshotCount1, snapshotCache.Items.Count);

            Assert.AreEqual(1234, set1.Value("prop1"));
            Assert.AreEqual(1, converter.SourceConverts);
            Assert.AreEqual(interConverts, converter.InterConverts);

            Assert.AreEqual(elementsCount2, elementsCache.Items.Count);
            Assert.AreEqual(snapshotCount2, snapshotCache.Items.Count);

            var oldSnapshotCache = snapshotCache;

            snapshotCache.Items.Clear();

            Assert.AreEqual(1234, set1.Value("prop1"));
            Assert.AreEqual(1, converter.SourceConverts);

            Assert.AreEqual(elementsCount2, elementsCache.Items.Count);
            Assert.AreEqual(snapshotCount2, snapshotCache.Items.Count);
            Assert.AreEqual(snapshotCount2, oldSnapshotCache.Items.Count);

            Assert.AreEqual((interConverts == 1 ? 1 : 3) + snapshotCache.Items.Count, converter.InterConverts);

            var oldElementsCache = elementsCache;

            elementsCache.Items.Clear();

            Assert.AreEqual(1234, set1.Value("prop1"));
            Assert.AreEqual(1, converter.SourceConverts);

            Assert.AreEqual(elementsCount2, elementsCache.Items.Count);
            Assert.AreEqual(elementsCount2, oldElementsCache.Items.Count);
            Assert.AreEqual(snapshotCount2, snapshotCache.Items.Count);

            Assert.AreEqual((interConverts == 1 ? 1 : 4) + snapshotCache.Items.Count + elementsCache.Items.Count, converter.InterConverts);
        }