Exemple #1
0
        //BlockFilePointersDBのテスト
        public static void Test8()
        {
            string basepath = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            BlockFilePointersDB bfpdb = new BlockFilePointersDB(basepath);
            string path = bfpdb.GetPath();

            if (File.Exists(path))
                File.Delete(path);

            for (int i = 0; i < 10; i++)
            {
                long position = bfpdb.GetBlockFilePointerData(256.RandomNum());

                if (position != -1)
                    throw new Exception("test8_1");
            }

            long[] bindexes = 256.RandomNums().Take(10).Select((elem) => (long)elem).ToArray();

            for (int i = 0; i < bindexes.Length; i++)
                bfpdb.UpdateBlockFilePointerData(bindexes[i], bindexes[i]);

            long[] bindexesSorted = bindexes.ToList().Pipe((list) => list.Sort()).ToArray();

            int pointer = 0;
            for (int i = 0; i < 256; i++)
            {
                long position = bfpdb.GetBlockFilePointerData(i);

                if (pointer < bindexesSorted.Length && i == bindexesSorted[pointer])
                {
                    if (position != bindexesSorted[pointer])
                        throw new Exception("test8_2");

                    pointer++;
                }
                else
                {
                    if (position != -1)
                        throw new Exception("test8_3");
                }
            }

            for (int i = 0; i < 10; i++)
            {
                int[] random = 256.RandomNums();

                long[] bindexes2 = random.Take(10).Select((elem) => (long)elem).ToArray();
                long[] positions2 = random.Skip(10).Take(10).Select((elem) => (long)elem).ToArray();

                for (int j = 0; j < bindexes2.Length; j++)
                    bfpdb.UpdateBlockFilePointerData(bindexes2[j], positions2[j]);

                for (int j = 0; j < bindexes2.Length; j++)
                {
                    long positionOut = bfpdb.GetBlockFilePointerData(bindexes2[j]);

                    if (positionOut != positions2[j])
                        throw new Exception("test8_4");
                }
            }

            Console.WriteLine("test8_succeeded");
        }