public void CommentTest2() { var text = SampleKif.CommentKif; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(text); Assert.NotNull(kifu); Assert.Null(kifu.Error); // 手数の確認 var count = 134; Assert.AreEqual(count, kifu.MoveList.Count()); // コメントの確認 var commentList = SampleKif.GetCommentList(SampleKif.CommentKif); for (var node = kifu.RootNode; node != null; node = node.NextNode) { Assert.AreEqual(commentList[node.MoveCount], node.Comment); } // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, count); }
/// <summary> /// 棋譜の読み込みテストを行います。 /// </summary> private static void TestKif(string path) { var text = string.Empty; using (var reader = new StreamReader(path, KifuObject.DefaultEncoding)) { text = reader.ReadToEnd(); } // 棋譜の読み込み var kifu = KifuReader.LoadFrom(text); Assert.NotNull(kifu); // 手数を取得 var countObj = GetMoveCount(text); Assert.NotNull(countObj); var count = countObj.Value + (kifu.Error != null ? -2 : -1); Assert.LessOrEqual(count, kifu.MoveList.Count()); // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, count); }
public void NormalTest() { var content = "V2.2\n" + "N+大橋宗桂\n" + "N-本因坊算砂\n" + "PI\n+\n" + "+7776FU\n-3334FU\n+6766FU\n-7162GI\n+7978GI\n\n" + "-5354FU\n+5756FU\n-3142GI\n+7867GI\n-6253GI\n\n" + "+3948GI\n-4344FU\n+4746FU\n-4243GI\n+4857GI\n\n" + "-3435FU\n+2726FU\n-4334GI\n+2625FU\n-2233KA\n\n" + "+4938KI\n-8222HI\n+3847KI\n-5162OU\n+5968OU\n\n" + "-6272OU\n+6878OU\n-4152KI\n+6968KI\n-3351KA\n\n" + "+6665FU\n-2324FU\n+2524FU\n-5124KA\n+3736FU\n\n" + "-0025FU\n+3635FU\n-2435KA\n+4736KI\n-3526KA\n\n" + "+0027FU\n-2659UM\n+4645FU\n-2133KE\n+4544FU\n\n" + "-0035FU\n+3646KI\n-2526FU\n+2726FU\n-5926UM\n\n" + "+0036FU\n-2627UM\n+2848HI\n-3536FU\n+0035FU\n\n" + "-3425GI\n+0023FU\n-2223HI\n+4443TO\n-5243KI\n\n" + "+4636KI\n-0044FU\n+3637KI\n-2745UM\n+4828HI\n\n" + "-0026FU\n+5746GI\n-4342KI\n+4645GI\n-3345KE\n\n" + "+3746KI\n-2627TO\n+2827HI\n-2526GI\n+2747HI\n\n" + "-0038GI\n+4748HI\n-4537NK\n+2937KE\n-2637GI\n\n" + "%TORYO\n"; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); // 書き込みテスト var kif = KifuWriter.WriteTo(kifu, KifuFormat.Csa); CompareCsaKif(content, kif, true); }
public void CommentTest2() { var sample = SampleKif.Get("Kif_Comment.kif"); // 棋譜の読み込み var kifu = KifuReader.LoadFrom(sample); Assert.NotNull(kifu); Assert.Null(kifu.Error); // 手数の確認 var count = 134; Assert.AreEqual(count, kifu.MoveList.Count()); // コメントの確認 var commentList = SampleKif.GetCommentList(sample); for (var node = kifu.RootNode; node != null; node = node.NextNode) { if (commentList[node.MoveCount] == null) { Assert.False(node.CommentList.Any()); } else { Assert.AreEqual(commentList[node.MoveCount], node.CommentList); } } // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, count); }
public void FlipPiecesTest() { var bod1 = "後手の持駒:飛 桂 香 歩三 \n" + " 9 8 7 6 5 4 3 2 1\n" + "+---------------------------+\n" + "|v香 ・ 龍 ・ ・ ・ ・ ・ ・|一\n" + "| ・ ・ ・ ・v玉 ・ ・ ・ ・|二\n" + "| ・ 香v歩 ・v金 ・v桂 ・ ・|三\n" + "| ・ 歩v銀v銀v金 ・ ・ 銀 ・|四\n" + "| 歩 ・ ・ ・ ・ 歩 歩 ・ ・|五\n" + "| 香 ・ 歩 ・ 馬 ・ ・ ・v歩|六\n" + "|v歩 ・ 桂 金 ・ ・ ・ ・ ・|七\n" + "| ・ 玉 銀 金 ・ ・ 馬 ・ ・|八\n" + "| ・ ・ ・ ・ ・ ・ ・ ・ ・|九\n" + "+---------------------------+\n" + "先手の持駒:桂 歩七 "; var bod2 = "後手の持駒:桂 歩七 \n" + " 9 8 7 6 5 4 3 2 1\n" + "+---------------------------+\n" + "| ・ ・ ・ ・ ・ ・ ・ ・ ・|一\n" + "| ・ ・v馬 ・ ・v金v銀v玉 ・|二\n" + "| ・ ・ ・ ・ ・v金v桂 ・ 歩|三\n" + "| 歩 ・ ・ ・v馬 ・v歩 ・v香|四\n" + "| ・ ・v歩v歩 ・ ・ ・ ・v歩|五\n" + "| ・v銀 ・ ・ 金 銀 銀v歩 ・|六\n" + "| ・ ・ 桂 ・ 金 ・ 歩v香 ・|七\n" + "| ・ ・ ・ ・ 玉 ・ ・ ・ ・|八\n" + "| ・ ・ ・ ・ ・ ・v龍 ・ 香|九\n" + "+---------------------------+\n" + "先手の持駒:飛 桂 香 歩三 "; var kifu1 = KifuReader.LoadFrom(bod1); Assert.NotNull(kifu1); var board1 = kifu1.CreateBoard(); Assert.NotNull(board1); Assert.True(board1.Validate()); var kifu2 = KifuReader.LoadFrom(bod2); Assert.NotNull(kifu2); var board2 = kifu2.CreateBoard(); Assert.NotNull(board2); Assert.True(board2.Validate()); board1.FlipPieces(); Assert.True(board1.BoardEquals(board2)); }
public void DurationTest() { var content = "# ---- 棋譜ファイル ----\n" + "先手:人間\n" + "後手:test\n" + "手合割:平手\n" + "手数----指手---------消費時間--\n" + " 1 7六歩(77) (01:38 / 00:01:38)\n" + " 2 3四歩(33) (00:01 / 00:00:01)\n" + " 3 2六歩(27) (02:17 / 00:03:55)\n" + " 4 3三角(22) (00:01 / 00:00:02)\n" + " 5 同 角成(88) (01:38 / 00:05:33)\n" + " 6 同 桂(21) (00:01 / 00:00:03)\n" + " 7 6八玉(59) (02:19 / 00:07:52)\n" + " 8 4二飛(82) (00:01 / 00:00:04)\n" + " 9 7八玉(68) (01:26 / 00:09:18)\n" + " 10 6二玉(51) (00:01 / 00:00:05)\n" + " 11 8八玉(78) (01:10 / 00:10:28)\n" + " 12 7二玉(62) (01:01 / 00:01:06)\n" + " 13 4八銀(39) (01:40 / 00:12:08)\n"; var durations = new string[] { "00:01:38", "00:00:01", "00:02:17", "00:00:01", "00:01:38", "00:00:01", "00:02:19", "00:00:01", "00:01:26", "00:00:01", "00:01:10", "00:01:01", "00:01:40", }; var totalDurations = new string[] { "00:01:38", "00:00:01", "00:03:55", "00:00:02", "00:05:33", "00:00:03", "00:07:52", "00:00:04", "00:09:18", "00:00:05", "00:10:28", "00:01:06", "00:12:08", }; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); var node = kifu.RootNode; for (var i = 0; i < durations.Count(); ++i) { node = node.NextNode; Assert.AreEqual(TimeSpan.Parse(durations[i]), node.Duration); Assert.AreEqual(TimeSpan.Parse(totalDurations[i]), node.TotalDuration); } // 書き込みテスト var kif = KifuWriter.WriteTo(kifu, KifuFormat.Kif); CompareWithoutSpace(content, kif); }
public void NoNewlineTest() { var text = "先手:谷川浩司\n" + "後手:田中寅彦\n" + "▲7六歩"; var kifu = KifuReader.LoadFrom(text); Assert.NotNull(kifu); Assert.AreEqual(1, kifu.MoveList.Count()); }
public void ErrorTest() { var sample = SampleKif.Get("Ki2_Error.ki2"); // 棋譜の読み込み var kifu = KifuReader.LoadFrom(sample); Assert.NotNull(kifu); Assert.NotNull(kifu.Error); Assert.AreEqual(65, kifu.MoveList.Count()); Assert.IsInstanceOf( typeof(File.FileFormatException), kifu.Error); }
public void NormalTest2() { var content = "V2.2\n" + "PI\n-\n"; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); // 書き込みテスト var kif = KifuWriter.WriteTo(kifu, KifuFormat.Csa); CompareCsaKif(content, kif, true); }
public void VariationTest() { var text = SampleKif.VariationKif; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(text); Assert.NotNull(kifu); Assert.Null(kifu.Error); // 手数を確認 var count = 133; Assert.AreEqual(count, kifu.MoveList.Count()); // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, count); }
public void ErrorTest() { var text = "開始日時:2004/06/22\n" + "棋戦:達人戦\n" + "戦型:先手三間飛車\n" + "先手戦術:早石田\n" + "後手戦術:角交換型\n" + "手順:▲7六歩△3四歩▲7五歩△4二玉▲7八飛△8八角成▲同銀△4五角\n" + "備考:▲升田式石田流\n" + "先手:谷川浩司\n" + "後手:田中寅彦\n" + "\n" + "場所:大阪「関西将棋会館」\n" + "持ち時間:3時間\n" + "*放映日:2004/07/09-16\n" + "*棋戦詳細:第12回富士通杯達人戦2回戦第3局\n" + "*「谷川浩司王位」vs「田中寅彦九段」\n" + "▲7六歩 △3四歩 ▲7五歩 △4二玉 ▲7八飛 △8八角成\n" + "▲同 銀 △4五角 ▲5八玉 △2七角成 ▲7四歩 △同 歩\n" + "▲5五角 △3三桂 ▲7四飛 △9二飛 ▲3四飛 △2二銀\n" + "▲3六歩 △5四歩 ▲7七角 △6二銀 ▲3八金 △2六馬\n" + "▲3五歩 △7二飛 ▲2八銀 △3六馬 ▲3七桂 △7七飛成\n" + "▲同 銀 △7六歩 ▲6六銀 △8八角 ▲2七銀 △同 馬\n" + "▲同 金 △9九角成 ▲5四飛 △5二香 ▲7四飛 △5五銀\n" + "▲同 銀 △同 馬 ▲6六銀 △7三銀 ▲3四飛 △4四馬\n" + "▲7四歩 △6四銀 ▲4四飛 △同 歩 ▲3四歩 △2九飛\n" + "▲1六角 △2五桂 ▲同 桂 △5七香成 ▲同 銀 △5六歩\n" + "▲3三歩成 △5一玉 ▲5四桂 △5七歩成 ▲同 玉 △5三銀上\n" + "▲4二角 △同 銀 ▲同 と △同 金 ▲同桂成 △6二玉\n" + "▲5二飛\n" + "まで73手で先手の勝ち"; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(text); Assert.NotNull(kifu); Assert.NotNull(kifu.Error); Assert.AreEqual(65, kifu.MoveList.Count()); Assert.IsInstanceOf( typeof(Ragnarok.Shogi.File.FileFormatException), kifu.Error); }
/// <summary> /// 棋譜の読み込み&書き込みテストを行います。 /// </summary> private static void TestKif(string text) { // 棋譜の読み込み var kifu = KifuReader.LoadFrom(text); Assert.NotNull(kifu); // 手数を取得 var countObj = GetMoveCount(text); //Assert.NotNull(countObj); var count = (countObj.HasValue ? countObj.Value : kifu.MoveList.Count()) + (kifu.Error != null ? -1 : 0); Assert.LessOrEqual(count, kifu.MoveList.Count()); // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Ki2, count); }
public void Duration81DojoTest() { var content = "#KIF version=2.0 encoding=UTF-8\n" + "開始日時:2014/01/01\n" + "場所:81Dojo (ver.2014/1/1)\n" + "持ち時間:5分+30秒\n" + "手合割:平手\n" + "先手:test-san1\n" + "後手:test-san2\n" + "手数----指手---------消費時間--\n" + " 1 7六歩(77) ( 0:5/)\n" + " 2 3四歩(33) ( 0:1/)\n" + " 3 2六歩(27) ( 0:3/)\n" + " 4 5四歩(53) ( 0:1/)\n" + " 5 4八銀(39) ( 0:3/)\n" + " 6 8四歩(83) ( 0:4/)\n"; var durations = new int[] { 5, 1, 3, 1, 3, 4 }; var totalDurations = new int[] { 5, 1, 8, 2, 11, 6 }; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); Assert.AreEqual(6, kifu.MoveList.Count()); var node = kifu.RootNode; for (var i = 0; i < durations.Count(); ++i) { node = node.NextNode; Assert.AreEqual(TimeSpan.FromSeconds(durations[i]), node.Duration); Assert.AreEqual(TimeSpan.FromSeconds(totalDurations[i]), node.TotalDuration); } }
public void TimeTest() { var timeSeconds = new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 1, 19, 21, 27, 15, 13, 6, 14, 15, 13, 6, 11, 7, 19, 5, 17, 18, 1, 17, 1, 16, 22, 16, 21, 16, 1, 16, 1, 16, 13, 6, 8, 12, 13, 7, 7, 13, 15, 16, 12, 9, 2, 17, 9, 17, 12, 9, 41, 25, 2, 17, 42, 1, 30, 1, 44, 1, 10, 19, 1, 18, 1, 19, 40, 1, 15, 31, 1, 18, 17, 1, 44, 19, 1, 18, 12, 22, 16, 19, 1, 19, 1, 18, 9, 19, 27, 18, 1, 18, 25, 19, 1, 18, 17, 22, 12, 8, 1, 17, 30, 1, 16, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 投了分 }; var sample = Get("SampleCsa.csa"); // 棋譜の読み込み var kifu = KifuReader.LoadFrom(sample); Assert.NotNull(kifu); Assert.AreEqual(timeSeconds.Count(), kifu.MoveList.Count()); // 消費時間の比較 var node = kifu.RootNode; for (var i = 0; i < timeSeconds.Count(); ++i) { node = node.NextNode; Assert.AreEqual(timeSeconds[i], node.DurationSeconds); } // 書き込みテスト var kif = KifuWriter.WriteTo(kifu, KifuFormat.Csa); CompareCsaKif(sample, kif, false); }
/// <summary> /// 棋譜ファイルの読み込みを行います。 /// </summary> public static void LoadKif(ShogiUIElement3D control, TextReader reader) { try { if (reader == null) { return; } // ファイルを読み込み局面を作成します。 var file = KifuReader.Load(reader); var board = file.CreateBoard(); control.Board = board; } catch (Exception ex) { DialogUtil.ShowError(ex, "棋譜ファイルの読み込みに失敗しました( ̄ω ̄;)"); } }
public void VariationMissTest() { var sample = SampleKif.Get("Kif_VariationMiss.kif"); // 棋譜の読み込み var kifu = KifuReader.LoadFrom(sample); Assert.NotNull(kifu); Assert.Null(kifu.Error); // 手数を確認 var count = 143; Assert.AreEqual(count, kifu.MoveList.Count()); // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, count); // 書き込みテスト //var kif = KifuWriter.WriteTo(kifu, KifuFormat.Kif); //CompareWithoutSpace(sample, kif); }
public void PVComment2Test() { var sample = SampleKif.Get("Kif_PV2.kif"); // 棋譜の読み込み var kifu = KifuReader.LoadFrom(sample); Assert.NotNull(kifu); Assert.Null(kifu.Error); // 手数の確認 var count = 30; Assert.AreEqual(count, kifu.MoveList.Count()); // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, count); // 書き込みテスト var kif = KifuWriter.WriteTo(kifu, KifuFormat.Kif); CompareWithoutSpace(sample, kif); }
/// <summary> /// 棋譜の出力+入力を行い、ファイルが正しく扱えているか調べます。 /// </summary> public static void ReadWriteTest(KifuObject kifu0, KifuFormat format, int moveCount) { // 棋譜の書き出し var wrote = KifuWriter.WriteTo(kifu0, format); Assert.IsNotNullOrEmpty(wrote); // 棋譜の読み込み パート2 var kifu1 = KifuReader.LoadFrom(wrote); Assert.NotNull(kifu1); // 読み込んだ棋譜の確認 Assert.LessOrEqual(moveCount, kifu1.MoveList.Count()); // 局面の比較を行います。 var board0 = kifu0.StartBoard.Clone(); kifu0.MoveList.ForEach(_ => board0.DoMove(_)); var board1 = kifu1.StartBoard.Clone(); kifu1.MoveList.ForEach(_ => board1.DoMove(_)); Assert.True(Board.BoardEquals(kifu0.StartBoard, kifu1.StartBoard)); Assert.True(kifu0.RootNode.NodeEquals(kifu1.RootNode, true)); Assert.True(Board.BoardEquals(board0, board1)); // ヘッダ要素を比較します。 Assert.AreEqual(kifu0.Header.Count(), kifu1.Header.Count()); foreach (var item0 in kifu0.Header) { Assert.True(kifu1.Header.Contains(item0.Key)); Assert.AreEqual(item0.Value, kifu1.Header[item0.Key]); } }
public void DurationUsapyonTest() { var content = "先手:あなた\n" + "後手:うさぴょんLv2\n" + "手合い割り:平手\n" + " 1: ▲7六歩 6s\n" + " 2: △8四歩 1s\n" + " 3: ▲5八金右 3s\n" + " 4: △3四歩 1s\n" + " 5: ▲6八金寄 3s\n" + " 6: △5二王 10s\n"; var durations = new int[] { 6, 1, 3, 1, 3, 10 }; var totalDurations = new int[] { 6, 1, 9, 2, 12, 12 }; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); Assert.AreEqual(6, kifu.MoveList.Count()); var node = kifu.RootNode; for (var i = 0; i < durations.Count(); ++i) { node = node.NextNode; Assert.AreEqual(TimeSpan.FromSeconds(durations[i]), node.Duration); Assert.AreEqual(TimeSpan.FromSeconds(totalDurations[i]), node.TotalDuration); } }
public void NormalizeTest2() { var boardStr = "# ---- 棋譜ファイル ----\n" + "先手:先手\n" + "後手:後手\n" + "後手の持駒:歩 \n" + " 9 8 7 6 5 4 3 2 1\n" + "+---------------------------+\n" + "| ・ ・ ・ ・v玉 ・ ・ ・ ・|一\n" + "| 角 ・ ・ ・v歩 ・ ・ ・ ・|二\n" + "| ・ ・ ・ ・ ・ 金v銀 ・ ・|三\n" + "| 角 ・ ・ ・ ・ 金 金 金 ・|四\n" + "| ・ 桂 ・ 桂 ・ ・ ・ ・ ・|五\n" + "| ・ ・ ・ ・ ・ ・ ・ ・ ・|六\n" + "| ・ ・ ・ ・ ・ ・ ・ ・ ・|七\n" + "| ・ ・ ・ ・ 飛 ・ 飛 ・ ・|八\n" + "| ・ ・ ・ ・ ・ ・ ・ ・ 香|九\n" + "+---------------------------+\n" + "先手の持駒:桂 \n" + "手数=0\n" + "後手番\n" + "手数----指手---------消費時間--\n" + " 1 △1五歩打 (00:00/00:00:00)"; var kifu = KifuReader.LoadFrom(boardStr); Assert.NotNull(kifu); var board = kifu.CreateBoard(); Assert.NotNull(board); Assert.True(board.Validate()); Assert.AreEqual(BWType.Black, board.Turn); // 桂 TestMove(board, "73桂左"); TestMove(board, "73桂右"); TestMove(board, "73桂右成る"); TestMove(board, "73桂左不成り"); TestMove(board, "73桂打"); TestInvalidMove(board, "73桂"); TestInvalidMove(board, "73桂成らず"); TestInvalidMove(board, "73桂直"); TestInvalidMove(board, "73桂寄"); Assert.AreEqual(M("▲23桂"), board.NormalizeMove(M("23桂打"))); // 金 TestMove(board, "33金寄"); TestMove(board, "33金直"); TestMove(board, "33金左上"); TestMove(board, "33金右"); TestMove(board, "33金右上"); TestInvalidMove(board, "33金"); TestInvalidMove(board, "33金打"); TestInvalidMove(board, "33金左"); // 飛車 TestMove(board, "48飛車右"); TestMove(board, "48飛車左"); TestMove(board, "48飛車左成らず"); TestInvalidMove(board, "48飛車"); TestInvalidMove(board, "48飛車成る"); TestInvalidMove(board, "48飛車左成る"); TestInvalidMove(board, "48飛車直"); TestInvalidMove(board, "48飛車寄"); TestInvalidMove(board, "48飛車引"); // 角 TestMove(board, "83角行"); TestMove(board, "83角上"); TestMove(board, "83角引"); TestMove(board, "83角行成る"); TestInvalidMove(board, "83角成らず"); TestInvalidMove(board, "83角右"); TestInvalidMove(board, "83角左"); TestInvalidMove(board, "83角直"); TestInvalidMove(board, "83角左成"); TestInvalidMove(board, "83角打"); // 香車 TestMove(board, "15香"); TestMove(board, "同香"); TestMove(board, "同香成らず"); TestMove(board, "同香直"); TestInvalidMove(board, "同香左"); TestInvalidMove(board, "同香打"); TestInvalidMove(board, "同香成"); TestInvalidMove(board, "同香寄"); TestInvalidMove(board, "同香引"); Assert.AreEqual(M("▲同香"), board.NormalizeMove(M("同香直"))); }
public void CommentTest() { var content = "# ---- サンプル棋譜ファイル ----\n" + "手合割:平手\n" + "手数----指手---------消費時間--\n" + "*今王将戦は因縁の師弟対決となりました。\n" + "*受けの気風の師匠に対して、弟子の平方は完全な攻め将棋。\n" + " 1 7六歩(77) (00:00:01 / 00:00:01)\n" + "*最初はオーソドックスに\n" + " 2 3四歩(33) (00:00:01 / 00:00:01)\n" + " 3 2六歩(27) (00:00:02 / 00:00:01)\n" + " 4 8四歩(83) (00:00:03 / 00:00:01)\n" + "*よくある進行になりました。\n" + " 5 2五歩(26) (00:00:03 / 00:00:01)\n" + " 6 8五歩(84) (00:00:04 / 00:00:01)\n" + " 7 2四歩(25) (00:00:04 / 00:00:01)\n" + " 8 同 歩(23) (00:00:05 / 00:00:01)\n" + " 9 同 飛(28) (00:00:05 / 00:00:01)\n" + " 10 8六歩(85) (00:00:05 / 00:00:01)\n" + " 11 同 歩(87) (00:00:05 / 00:00:01)\n" + " 12 同 飛(82) (00:00:06 / 00:00:01)\n" + "*お互い金を上がらずにここまで来ました。しかもノータイム。\n" + "*これは先手側不利と言われている展開ですが、果たしてどうなるでしょうか。\n" + " 13 3四飛(24) (00:00:01 / 00:00:01)\n" + "*先手は横歩を取りましたね。\n" + " 14 7六飛(86) (00:00:01 / 00:00:01)\n" + "*後手も横歩を取りましたが、これは大丈夫なのでしょうか?\n" + "*嫌な変化が見ているような気もしますが。\n"; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); Assert.AreEqual(14, kifu.MoveList.Count()); // コメント一覧 var comments = new string[15]; comments[0] = "今王将戦は因縁の師弟対決となりました。\n" + "受けの気風の師匠に対して、弟子の平方は完全な攻め将棋。"; comments[1] = "最初はオーソドックスに"; comments[4] = "よくある進行になりました。"; comments[12] = "お互い金を上がらずにここまで来ました。しかもノータイム。\n" + "これは先手側不利と言われている展開ですが、果たしてどうなるでしょうか。"; comments[13] = "先手は横歩を取りましたね。"; comments[14] = "後手も横歩を取りましたが、これは大丈夫なのでしょうか?\n" + "嫌な変化が見ているような気もしますが。"; for (var node = kifu.RootNode; node != null; node = node.NextNode) { Assert.AreEqual(comments[node.MoveCount], node.Comment); } // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, 14); }
public void CommentTest() { var content = "# ---- 棋譜ファイル ----\n" + "手合割:平手\n" + "手数----指手---------消費時間--\n" + "*今王将戦は因縁の師弟対決となりました。\n" + "*受けの気風の師匠に対して、弟子の平方は完全な攻め将棋。\n" + " 1 7六歩(77) (00:01 / 00:00:01)\n" + "*最初はオーソドックスに\n" + " 2 3四歩(33) (00:01 / 00:00:01)\n" + " 3 2六歩(27) (00:02 / 00:00:03)\n" + " 4 8四歩(83) (00:03 / 00:00:04)\n" + "*よくある進行になりました。\n" + " 5 2五歩(26) (00:03 / 00:00:06)\n" + " 6 8五歩(84) (00:04 / 00:00:08)\n" + " 7 2四歩(25) (00:04 / 00:00:10)\n" + " 8 同 歩(23) (00:05 / 00:00:13)\n" + " 9 同 飛(28) (00:05 / 00:00:15)\n" + " 10 8六歩(85) (00:05 / 00:00:18)\n" + " 11 同 歩(87) (00:05 / 00:00:20)\n" + " 12 同 飛(82) (00:06 / 00:00:24)\n" + "*お互い金を上がらずにここまで来ました。しかもノータイム。\n" + "*これは先手側不利と言われている展開ですが、果たしてどうなるでしょうか。\n" + " 13 3四飛(24) (00:01 / 00:00:21)\n" + "*先手は横歩を取りましたね。\n" + " 14 7六飛(86) (00:01 / 00:00:25)\n" + "*後手も横歩を取りましたが、これは大丈夫なのでしょうか?\n" + "*嫌な変化が見ているような気もしますが。\n"; // 棋譜の読み込み var kifu = KifuReader.LoadFrom(content); Assert.NotNull(kifu); Assert.AreEqual(14, kifu.MoveList.Count()); // コメント一覧 var comments = new List <string> [15]; comments[0] = new List <string> { "今王将戦は因縁の師弟対決となりました。", "受けの気風の師匠に対して、弟子の平方は完全な攻め将棋。", }; comments[1] = new List <string> { "最初はオーソドックスに" }; comments[4] = new List <string> { "よくある進行になりました。" }; comments[12] = new List <string> { "お互い金を上がらずにここまで来ました。しかもノータイム。", "これは先手側不利と言われている展開ですが、果たしてどうなるでしょうか。", }; comments[13] = new List <string> { "先手は横歩を取りましたね。" }; comments[14] = new List <string> { "後手も横歩を取りましたが、これは大丈夫なのでしょうか?", "嫌な変化が見ているような気もしますが。", }; for (var node = kifu.RootNode; node != null; node = node.NextNode) { if (comments[node.MoveCount] == null) { Assert.False(node.CommentList.Any()); } else { Assert.AreEqual(comments[node.MoveCount], node.CommentList); } } // 入出力テストを行います。 TestUtil.ReadWriteTest(kifu, KifuFormat.Kif, 14); // 書き込みテスト var kif = KifuWriter.WriteTo(kifu, KifuFormat.Kif); CompareWithoutSpace(content, kif); }