Beispiel #1
0
        //BlockManagerのテスト1
        public static void Test9()
        {
            string basepath = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

            BlockManagerDB bmdb = new BlockManagerDB(basepath);
            string bmdbPath = bmdb.GetPath();

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

            BlockDB bdb = new BlockDB(basepath);
            string bdbPath = bdb.GetPath(0);

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

            BlockFilePointersDB bfpdb = new BlockFilePointersDB(basepath);
            string bfpPath = bfpdb.GetPath();

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

            BlockManager blkmanager = new BlockManager(bmdb, bdb, bfpdb, 10, 10, 3);

            if (blkmanager.headBlockIndex != -1)
                throw new InvalidOperationException("test9_1");
            if (blkmanager.finalizedBlockIndex != -1)
                throw new InvalidOperationException("test9_2");
            if (blkmanager.mainBlocksCurrent.value != 0)
                throw new InvalidOperationException("test9_16");
            if (blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] != null)
                throw new InvalidOperationException("test9_3");

            bool flag = false;
            try
            {
                blkmanager.GetMainBlock(-1);
            }
            catch (InvalidOperationException)
            {
                flag = true;
            }
            if (!flag)
                throw new Exception("test9_5");

            bool flag2 = false;
            try
            {
                blkmanager.GetMainBlock(1);
            }
            catch (InvalidOperationException)
            {
                flag2 = true;
            }
            if (!flag2)
                throw new Exception("test9_6");

            bool flag9 = false;
            try
            {
                blkmanager.GetMainBlock(0);
            }
            catch (InvalidOperationException)
            {
                flag9 = true;
            }
            if (!flag9)
                throw new Exception("test9_28");

            blkmanager.AddMainBlock(new GenesisBlock());

            if (blkmanager.headBlockIndex != 0)
                throw new InvalidOperationException("test9_29");
            if (blkmanager.finalizedBlockIndex != 0)
                throw new InvalidOperationException("test9_30");
            if (blkmanager.mainBlocksCurrent.value != 1)
                throw new InvalidOperationException("test9_31");
            if (blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] == null)
                throw new InvalidOperationException("test9_32");
            if (!(blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] is GenesisBlock))
                throw new InvalidOperationException("test9_33");

            Block block1 = blkmanager.GetMainBlock(0);
            Block block2 = blkmanager.GetHeadBlock();

            if (!(block1 is GenesisBlock))
                throw new Exception("test9_10");
            if (!(block2 is GenesisBlock))
                throw new Exception("test9_11");

            bool flag3 = false;
            try
            {
                blkmanager.DeleteMainBlock(-1);
            }
            catch (InvalidOperationException)
            {
                flag3 = true;
            }
            if (!flag3)
                throw new Exception("test9_7");

            bool flag4 = false;
            try
            {
                blkmanager.DeleteMainBlock(1);
            }
            catch (InvalidOperationException)
            {
                flag4 = true;
            }
            if (!flag4)
                throw new Exception("test9_8");

            bool flag5 = false;
            try
            {
                blkmanager.DeleteMainBlock(0);
            }
            catch (InvalidOperationException)
            {
                flag5 = true;
            }
            if (!flag5)
                throw new Exception("test9_9");

            TestBlock testblk1 = new TestBlock(1);

            blkmanager.AddMainBlock(testblk1);

            if (blkmanager.headBlockIndex != 1)
                throw new InvalidOperationException("test9_12");
            if (blkmanager.finalizedBlockIndex != 0)
                throw new InvalidOperationException("test9_13");
            if (blkmanager.mainBlocksCurrent.value != 2)
                throw new InvalidOperationException("test9_17");
            if (blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] == null)
                throw new InvalidOperationException("test9_14");
            if (!(blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] is TestBlock))
                throw new InvalidOperationException("test9_15");

            blkmanager.DeleteMainBlock(1);

            if (blkmanager.headBlockIndex != 0)
                throw new InvalidOperationException("test9_18");
            if (blkmanager.finalizedBlockIndex != 0)
                throw new InvalidOperationException("test9_19");
            if (blkmanager.mainBlocksCurrent.value != 1)
                throw new InvalidOperationException("test9_20");
            if (blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] == null)
                throw new InvalidOperationException("test9_21");
            if (!(blkmanager.mainBlocks[blkmanager.mainBlocksCurrent.value] is GenesisBlock))
                throw new InvalidOperationException("test9_22");

            TestBlock testblk2 = new TestBlock(2);

            bool flag6 = false;
            try
            {
                blkmanager.AddMainBlock(testblk2);
            }
            catch (InvalidOperationException)
            {
                flag6 = true;
            }
            if (!flag6)
                throw new Exception("test9_23");

            for (int i = 1; i < 18; i++)
            {
                TestBlock testblk = new TestBlock(i);

                blkmanager.AddMainBlock(testblk);
            }

            for (int i = 17; i > 0; i--)
            {
                if (i == 14)
                {
                    bool flag7 = false;
                    try
                    {
                        blkmanager.DeleteMainBlock(i);
                    }
                    catch (InvalidOperationException)
                    {
                        flag7 = true;
                    }
                    if (!flag7)
                        throw new Exception("test9_24");

                    break;
                }

                blkmanager.DeleteMainBlock(i);
            }

            Block block3 = blkmanager.GetHeadBlock();

            if (block3.Index != 14)
                throw new Exception("test9_25");

            for (int i = 17; i > 0; i--)
            {
                if (i > 14)
                {
                    bool flag8 = false;
                    try
                    {
                        blkmanager.GetMainBlock(i);
                    }
                    catch (InvalidOperationException)
                    {
                        flag8 = true;
                    }
                    if (!flag8)
                        throw new Exception("test9_26");

                    continue;
                }

                Block block4 = blkmanager.GetMainBlock(i);

                if (block4.Index != i)
                    throw new Exception("test9_27");
            }

            Console.WriteLine("test9_succeeded");
        }