//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"); }