Example #1
0
        public void ConstructTestCache()
        {
            var files = new List <Tuple <CacheIndex, int> >
            {
                new Tuple <CacheIndex, int>(CacheIndex.Enums, 5),
                new Tuple <CacheIndex, int>(CacheIndex.ClientScripts, 3),
                new Tuple <CacheIndex, int>(CacheIndex.LoadingSprites, 30462),
                new Tuple <CacheIndex, int>(CacheIndex.Models, 47000),
                new Tuple <CacheIndex, int>(CacheIndex.Enums, 23),
                new Tuple <CacheIndex, int>(CacheIndex.ItemDefinitions, 155),
                new Tuple <CacheIndex, int>(CacheIndex.ItemDefinitions, 5),
                new Tuple <CacheIndex, int>(CacheIndex.AnimationFrames, 0),

                // Soundscape
                new Tuple <CacheIndex, int>(CacheIndex.Music, 38900),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73450),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73451),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73452),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73453),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73454),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73455),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73456),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73457),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73458),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73459),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73460),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73461),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73462),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73463),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73464),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73465),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73466),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73467),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73468),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73469),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73470),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73471),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73472),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73473),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73474),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73475),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73476),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73477),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73478),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73479),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73480),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73481),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73482),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73483),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73484),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73485),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73486),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73487),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73488),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73489),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73490),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73491),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73492),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73493),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73494),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73495),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73496),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73497),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73498),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73499),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73500),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 73501),

                // Black Zabeth: LIVE!
                new Tuple <CacheIndex, int>(CacheIndex.Music, 4978),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45182),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45183),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45184),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45185),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45186),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45187),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45188),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45189),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45190),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45191),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45192),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45193),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45194),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45195),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45196),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45197),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45198),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45199),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45200),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45201),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45202),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45203),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45204),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45205),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45206),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45207),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45208),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45209),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45210),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45211),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45212),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45213),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45214),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45215),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45216),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45217),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45218),
                new Tuple <CacheIndex, int>(CacheIndex.Music, 45219),
            };

            if (Directory.Exists("generated"))
            {
                Directory.Delete("generated", true);
            }

            var expectedFileSizes = new Queue <int>();

            // Download and write the files.
            using (var downloaderCache = new DownloaderCache())
                using (var flatFileCache = new FlatFileCache("generated/file"))
                    using (var javaCache = new JavaClientCache("generated/java", false))
                        using (var nxtCache = new NxtClientCache("generated/nxt", false))
                        {
                            foreach (var fileTuple in files)
                            {
                                var file = downloaderCache.GetFile(fileTuple.Item1, fileTuple.Item2);

                                flatFileCache.PutFile(fileTuple.Item1, fileTuple.Item2, file);
                                javaCache.PutFile(fileTuple.Item1, fileTuple.Item2, file);
                                nxtCache.PutFile(fileTuple.Item1, fileTuple.Item2, file);

                                expectedFileSizes.Enqueue(file.Data.Length); // Note: Encodes entries in RT5 format.
                            }
                        }

            // Verify that the files are now obtainable and unchanged.
            using (var flatFileCache = new FlatFileCache("generated/file"))
                using (var javaCache = new JavaClientCache("generated/java"))
                    using (var nxtCache = new NxtClientCache("generated/nxt"))
                    {
                        foreach (var fileTuple in files)
                        {
                            var expectedFileSize = expectedFileSizes.Dequeue();

                            var flatFile = flatFileCache.GetFile(fileTuple.Item1, fileTuple.Item2);
                            Assert.Equal(expectedFileSize, flatFile.Data.Length);

                            var javaFile = javaCache.GetFile(fileTuple.Item1, fileTuple.Item2);
                            Assert.Equal(expectedFileSize, javaFile.Data.Length);

                            var nxtFile = nxtCache.GetFile(fileTuple.Item1, fileTuple.Item2);
                            Assert.Equal(expectedFileSize, nxtFile.Data.Length);
                        }
                    }
        }
        public void ConstructTestCache()
        {
            var files = new List <Tuple <Index, int> >
            {
                new Tuple <Index, int>(Index.Enums, 5),
                new Tuple <Index, int>(Index.ClientScripts, 3),
                new Tuple <Index, int>(Index.LoadingSprites, 30556),
                new Tuple <Index, int>(Index.Models, 47000),
                new Tuple <Index, int>(Index.Enums, 23),
                new Tuple <Index, int>(Index.ItemDefinitions, 155),
                new Tuple <Index, int>(Index.ItemDefinitions, 5),
                new Tuple <Index, int>(Index.AnimationFrames, 0),

                // Soundscape
                new Tuple <Index, int>(Index.Music, 38900),
                new Tuple <Index, int>(Index.Music, 73450),
                new Tuple <Index, int>(Index.Music, 73451),
                new Tuple <Index, int>(Index.Music, 73452),
                new Tuple <Index, int>(Index.Music, 73453),
                new Tuple <Index, int>(Index.Music, 73454),
                new Tuple <Index, int>(Index.Music, 73455),
                new Tuple <Index, int>(Index.Music, 73456),
                new Tuple <Index, int>(Index.Music, 73457),
                new Tuple <Index, int>(Index.Music, 73458),
                new Tuple <Index, int>(Index.Music, 73459),
                new Tuple <Index, int>(Index.Music, 73460),
                new Tuple <Index, int>(Index.Music, 73461),
                new Tuple <Index, int>(Index.Music, 73462),
                new Tuple <Index, int>(Index.Music, 73463),
                new Tuple <Index, int>(Index.Music, 73464),
                new Tuple <Index, int>(Index.Music, 73465),
                new Tuple <Index, int>(Index.Music, 73466),
                new Tuple <Index, int>(Index.Music, 73467),
                new Tuple <Index, int>(Index.Music, 73468),
                new Tuple <Index, int>(Index.Music, 73469),
                new Tuple <Index, int>(Index.Music, 73470),
                new Tuple <Index, int>(Index.Music, 73471),
                new Tuple <Index, int>(Index.Music, 73472),
                new Tuple <Index, int>(Index.Music, 73473),
                new Tuple <Index, int>(Index.Music, 73474),
                new Tuple <Index, int>(Index.Music, 73475),
                new Tuple <Index, int>(Index.Music, 73476),
                new Tuple <Index, int>(Index.Music, 73477),
                new Tuple <Index, int>(Index.Music, 73478),
                new Tuple <Index, int>(Index.Music, 73479),
                new Tuple <Index, int>(Index.Music, 73480),
                new Tuple <Index, int>(Index.Music, 73481),
                new Tuple <Index, int>(Index.Music, 73482),
                new Tuple <Index, int>(Index.Music, 73483),
                new Tuple <Index, int>(Index.Music, 73484),
                new Tuple <Index, int>(Index.Music, 73485),
                new Tuple <Index, int>(Index.Music, 73486),
                new Tuple <Index, int>(Index.Music, 73487),
                new Tuple <Index, int>(Index.Music, 73488),
                new Tuple <Index, int>(Index.Music, 73489),
                new Tuple <Index, int>(Index.Music, 73490),
                new Tuple <Index, int>(Index.Music, 73491),
                new Tuple <Index, int>(Index.Music, 73492),
                new Tuple <Index, int>(Index.Music, 73493),
                new Tuple <Index, int>(Index.Music, 73494),
                new Tuple <Index, int>(Index.Music, 73495),
                new Tuple <Index, int>(Index.Music, 73496),
                new Tuple <Index, int>(Index.Music, 73497),
                new Tuple <Index, int>(Index.Music, 73498),
                new Tuple <Index, int>(Index.Music, 73499),
                new Tuple <Index, int>(Index.Music, 73500),
                new Tuple <Index, int>(Index.Music, 73501),

                // Black Zabeth: LIVE!
                new Tuple <Index, int>(Index.Music, 4978),
                new Tuple <Index, int>(Index.Music, 45182),
                new Tuple <Index, int>(Index.Music, 45183),
                new Tuple <Index, int>(Index.Music, 45184),
                new Tuple <Index, int>(Index.Music, 45185),
                new Tuple <Index, int>(Index.Music, 45186),
                new Tuple <Index, int>(Index.Music, 45187),
                new Tuple <Index, int>(Index.Music, 45188),
                new Tuple <Index, int>(Index.Music, 45189),
                new Tuple <Index, int>(Index.Music, 45190),
                new Tuple <Index, int>(Index.Music, 45191),
                new Tuple <Index, int>(Index.Music, 45192),
                new Tuple <Index, int>(Index.Music, 45193),
                new Tuple <Index, int>(Index.Music, 45194),
                new Tuple <Index, int>(Index.Music, 45195),
                new Tuple <Index, int>(Index.Music, 45196),
                new Tuple <Index, int>(Index.Music, 45197),
                new Tuple <Index, int>(Index.Music, 45198),
                new Tuple <Index, int>(Index.Music, 45199),
                new Tuple <Index, int>(Index.Music, 45200),
                new Tuple <Index, int>(Index.Music, 45201),
                new Tuple <Index, int>(Index.Music, 45202),
                new Tuple <Index, int>(Index.Music, 45203),
                new Tuple <Index, int>(Index.Music, 45204),
                new Tuple <Index, int>(Index.Music, 45205),
                new Tuple <Index, int>(Index.Music, 45206),
                new Tuple <Index, int>(Index.Music, 45207),
                new Tuple <Index, int>(Index.Music, 45208),
                new Tuple <Index, int>(Index.Music, 45209),
                new Tuple <Index, int>(Index.Music, 45210),
                new Tuple <Index, int>(Index.Music, 45211),
                new Tuple <Index, int>(Index.Music, 45212),
                new Tuple <Index, int>(Index.Music, 45213),
                new Tuple <Index, int>(Index.Music, 45214),
                new Tuple <Index, int>(Index.Music, 45215),
                new Tuple <Index, int>(Index.Music, 45216),
                new Tuple <Index, int>(Index.Music, 45217),
                new Tuple <Index, int>(Index.Music, 45218),
                new Tuple <Index, int>(Index.Music, 45219)
            };

            try
            {
                Directory.Delete("generated", true);
            }
            catch (DirectoryNotFoundException)
            {
            }

            // Download and write the files
            using (var downloader = new DownloaderCache())
                using (var runeTek5Cache = new RuneTek5Cache("generated/runetek5", false))
                    using (var flatFileCache = new FlatFileCache("generated/flatfile"))
                    {
                        foreach (var fileTuple in files)
                        {
                            var file = downloader.GetFile <BinaryFile>(fileTuple.Item1, fileTuple.Item2);
                            runeTek5Cache.PutFile(file);
                            flatFileCache.PutFile(file);
                        }
                    }

            // Verify that the files are now obtainable
            using (var freshRuneTek5Cache = new RuneTek5Cache("generated/runetek5", true))
                using (var freshFlatFileCache = new FlatFileCache("generated/flatfile"))
                {
                    foreach (var fileTuple in files)
                    {
                        freshRuneTek5Cache.GetFile <BinaryFile>(fileTuple.Item1, fileTuple.Item2);
                        freshFlatFileCache.GetFile <BinaryFile>(fileTuple.Item1, fileTuple.Item2);
                    }
                }
        }