public void RebuildItemDatabase_RebuildItemDatabase_Canceled()
        {
            AutoResetEvent progressEvent  = new AutoResetEvent(false);
            AutoResetEvent completedEvent = new AutoResetEvent(false);

            ItemsDatabaseBuilder dbBuilder = new ItemsDatabaseBuilder();
            var cancelToken   = new CancellationTokenSource();
            int progress      = 0;
            int totalRequests = 0;

            totalRequests = dbBuilder.RebuildItemDatabase(
                () =>
            {
                progress++;
                Console.WriteLine("Rebuild at {0} percent", ((double)progress / (double)totalRequests) * 100);
                progressEvent.Set();
            },
                () =>
            {
                Console.WriteLine("Rebuild complete");
                completedEvent.Set();
            },
                cancelToken.Token);

            for (int i = 1; i <= 3; i++)
            {
                Assert.IsTrue(progressEvent.WaitOne(5000));
                Assert.AreEqual(i, progress);
            }

            // Cancel it
            cancelToken.Cancel();
            Assert.IsTrue(progressEvent.WaitOne(5000));
            Assert.IsFalse(progressEvent.WaitOne(5000));
        }
Пример #2
0
        public void RebuildItemDatabase_LoadFromFile_Basic()
        {
            ItemsDatabaseBuilder dbBuilder = new ItemsDatabaseBuilder();

            var sw = new Stopwatch();

            sw.Start();
            var itemDb = dbBuilder.LoadFromFile(new CultureInfo("en"));

            sw.Stop();
            Console.WriteLine("{0}ms to load {1} entries", sw.ElapsedMilliseconds, itemDb.Count);

            Assert.IsNotNull(itemDb);
            Assert.IsTrue(itemDb.Count > 0);
        }
        public void RebuildItemDatabase_LoadFromFile_NoDatabaseFile()
        {
            string renamedFilename = "renamedDB.json";

            File.Move(ItemsDatabaseBuilder.NAMES_DATABASE_FILENAME, renamedFilename);

            try
            {
                ItemsDatabaseBuilder dbBuilder = new ItemsDatabaseBuilder();
                var itemDb = dbBuilder.LoadFromFile();
            }
            finally
            {
                File.Move(renamedFilename, ItemsDatabaseBuilder.NAMES_DATABASE_FILENAME);
            }
        }
Пример #4
0
        public void RebuildItemDatabase_LoadFromFile_NoDatabaseFile()
        {
            ItemsDatabaseBuilder dbBuilder = new ItemsDatabaseBuilder();

            string renamedFilename = "renamedDB.json";

            File.Move(dbBuilder.GetFilePath("en"), renamedFilename);

            try
            {
                var itemDb = dbBuilder.LoadFromFile(new CultureInfo("en"));
            }
            finally
            {
                File.Move(renamedFilename, dbBuilder.GetFilePath("en"));
            }
        }
        public void RebuildItemDatabase_LoadFromFile_InvalidDatabaseFile()
        {
            string renamedFilename = "renamedDB.json";

            File.Move(ItemsDatabaseBuilder.NAMES_DATABASE_FILENAME, renamedFilename);
            File.WriteAllText(ItemsDatabaseBuilder.NAMES_DATABASE_FILENAME, "invalid file");

            try
            {
                ItemsDatabaseBuilder dbBuilder = new ItemsDatabaseBuilder();
                var itemDb = dbBuilder.LoadFromFile();
            }
            finally
            {
                File.Delete(ItemsDatabaseBuilder.NAMES_DATABASE_FILENAME);
                File.Move(renamedFilename, ItemsDatabaseBuilder.NAMES_DATABASE_FILENAME);
            }
        }
Пример #6
0
        public void RebuildItemDatabase_RebuildItemDatabase_Success()
        {
            AutoResetEvent progressEvent  = new AutoResetEvent(false);
            AutoResetEvent completedEvent = new AutoResetEvent(false);

            ItemsDatabaseBuilder dbBuilder = new ItemsDatabaseBuilder();
            var cancelToken   = new CancellationTokenSource();
            int progress      = 0;
            int totalRequests = 0;

            var sw = new Stopwatch();

            sw.Start();
            totalRequests = dbBuilder.RebuildItemDatabase(
                CultureInfo.CurrentUICulture,
                () =>
            {
                progress++;
                Console.WriteLine("Rebuild at {0} percent", ((double)progress / (double)totalRequests) * 100);
                progressEvent.Set();
            },
                () =>
            {
                Console.WriteLine("Rebuild complete");
                completedEvent.Set();
            },
                cancelToken.Token);

            int i = 0;

            while (progress < totalRequests)
            {
                Assert.IsTrue(progressEvent.WaitOne());
                Assert.AreEqual(++i, progress);
            }

            Assert.IsTrue(completedEvent.WaitOne());
            sw.Stop();

            Console.WriteLine("It took {0} minutes to rebuild the database", sw.Elapsed.TotalMinutes);
        }