Example #1
0
        public void Will_keep_new_values_and_discard_old_when_limiting()
        {
            GlobalOptions.Instance.CompilerCacheFile             = null;
            GlobalOptions.Instance.CompilerCacheFileMaxSizeBytes = 100;
            var cache = new Testable <CompilerCache>();

            var ms = new ExplicitDisposableMemoryStream(GlobalOptions.Instance.CompilerCacheFileMaxSizeBytes * 2);

            cache.Mock <IFileSystemWrapper>()
            .Setup(x => x.GetTemporaryFolder(Constants.ChutzpahCompilerCacheFolder))
            .Returns("tmp");
            var cacheFile = Path.Combine("tmp", Constants.ChutzpahCompilerCacheFileName);

            cache.Mock <IFileSystemWrapper>().Setup(x => x.FileExists(cacheFile)).Returns(false);

            cache.ClassUnderTest.Set("ShouldBeRemoved", "SomeCode");
            Thread.Sleep(5);
            // Fill cache with more than the max-size
            cache.ClassUnderTest.Set("buffer", new string('x', 100));
            Thread.Sleep(5);
            cache.ClassUnderTest.Set("ShouldStillBeHere", "SomeOtherCode");
            cache.ClassUnderTest.Save();

            var savedValue   = cache.ClassUnderTest.Get("ShouldStillBeHere");
            var removedValue = cache.ClassUnderTest.Get("ShouldBeRemoved");

            Assert.True(string.IsNullOrEmpty(removedValue));
            Assert.Equal("SomeOtherCode", savedValue);

            ms.ExplicitDispose();
        }
Example #2
0
        public void Will_limit_the_size_of_the_cache_file()
        {
            GlobalOptions.Instance.CompilerCacheFile             = null;
            GlobalOptions.Instance.CompilerCacheFileMaxSizeBytes = 100;
            var cache = new Testable <CompilerCache>();

            var ms = new ExplicitDisposableMemoryStream(GlobalOptions.Instance.CompilerCacheFileMaxSizeBytes * 2);

            cache.Mock <IFileSystemWrapper>()
            .Setup(x => x.GetTemporaryFolder(Constants.ChutzpahCompilerCacheFolder))
            .Returns("tmp");
            var cacheFile = Path.Combine("tmp", Constants.ChutzpahCompilerCacheFileName);

            cache.Mock <IFileSystemWrapper>().Setup(x => x.FileExists(cacheFile)).Returns(false);
            cache.Mock <IFileSystemWrapper>().Setup(x => x.Open(cacheFile, FileMode.Create, FileAccess.Write))
            .Returns(ms);


            cache.ClassUnderTest.Set("buffer", new string('x', 100));
            cache.ClassUnderTest.Save();
            cache.Mock <IFileSystemWrapper>().Verify(x => x.FileExists(cacheFile), Times.Once());
            cache.Mock <IFileSystemWrapper>()
            .Verify(x => x.Open(cacheFile, FileMode.Create, FileAccess.Write), Times.Once());
            Assert.True(ms.Position < GlobalOptions.Instance.CompilerCacheFileMaxSizeBytes);
            ms.ExplicitDispose();
        }