public void Test_Convert() { GameDefinition gd = XmlSerializerExt.Deserialize <GameDefinition>( Props.Global.Expand("${bds.DataDir}ai.pkr.metastrategy/kuhn.gamedef.xml")); StrategyTree st = TreeHelper.CreateStrategyTree(gd, 0); st.Nodes[4].Probab = 0.4; st.Nodes[9].Probab = 0.6; st.Nodes[7].Probab = 0.3; st.Nodes[8].Probab = 0.7; st.Nodes[13].Probab = 0.5; st.Nodes[18].Probab = 0.5; st.Nodes[16].Probab = 0.1; st.Nodes[17].Probab = 0.9; st.Nodes[22].Probab = 0.2; st.Nodes[27].Probab = 0.8; st.Nodes[25].Probab = 0.5; st.Nodes[26].Probab = 0.5; string error; Assert.IsTrue(VerifyCondStrategy.Verify(st, 0, out error), error); ConvertCondToAbs.Convert(st, 0); Assert.IsTrue(VerifyAbsStrategy.Verify(st, 0, 1e-7, out error), error); Assert.AreEqual(0.4, st.Nodes[4].Probab, 1e-7); Assert.AreEqual(0.6, st.Nodes[9].Probab, 1e-7); Assert.AreEqual(0.12, st.Nodes[7].Probab, 1e-7); Assert.AreEqual(0.28, st.Nodes[8].Probab, 1e-7); Assert.AreEqual(0.5, st.Nodes[13].Probab, 1e-7); Assert.AreEqual(0.5, st.Nodes[18].Probab, 1e-7); Assert.AreEqual(0.05, st.Nodes[16].Probab, 1e-7); Assert.AreEqual(0.45, st.Nodes[17].Probab, 1e-7); Assert.AreEqual(0.2, st.Nodes[22].Probab, 1e-7); Assert.AreEqual(0.8, st.Nodes[27].Probab, 1e-7); Assert.AreEqual(0.1, st.Nodes[25].Probab, 1e-7); Assert.AreEqual(0.1, st.Nodes[26].Probab, 1e-7); }
public void Test_Leduc() { GameDefinition gd = XmlSerializerExt.Deserialize <GameDefinition>( Props.Global.Expand("${bds.DataDir}ai.pkr.metastrategy/leduc-he.gamedef.xml")); for (_heroPos = 0; _heroPos < gd.MinPlayers; ++_heroPos) { StrategyTree st = CreateValidStrategy(gd); string fileName = Path.Combine(_outDir, string.Format("{0}-{1}.gv", gd.Name, _heroPos)); VisStrategyTree.Show(st, fileName); string errorText; Assert.IsTrue(VerifyCondStrategy.Verify(st, _heroPos, out errorText)); // Now make some errors. if (_heroPos == 0) { st.Nodes[339].Probab += 0.1; Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText)); string expTextBegin = string.Format("Node {0}:", 291); Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length)); st.Nodes[339].Probab -= 0.1; st.Nodes[348].Probab += 0.1; Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText)); expTextBegin = string.Format("Node {0}:", 345); Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length)); } else { st.Nodes[435].Probab += 0.1; Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText)); string expTextBegin = string.Format("Node {0}:", 387); Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length)); st.Nodes[435].Probab -= 0.1; st.Nodes[432].Probab += 0.1; Assert.IsFalse(VerifyCondStrategy.Verify(st, _heroPos, out errorText)); expTextBegin = string.Format("Node {0}:", 429); Assert.AreEqual(expTextBegin, errorText.Substring(0, expTextBegin.Length)); } } }
static int Main(string[] args) { if (!Parser.ParseArgumentsWithUsage(args, _cmdLine)) { return(1); } if (_cmdLine.DebuggerLaunch) { Debugger.Launch(); } StrategyTree st = StrategyTree.Read <StrategyTree>(_cmdLine.StrategyTree); if (_cmdLine.Verify) { string error = ""; bool isOk = true; if (_cmdLine.IsAbsolute) { Console.Write("Verifying absolute strategy ..."); isOk = VerifyAbsStrategy.Verify(st, _cmdLine.HeroPosition, 1e-7, out error); } else { Console.Write("Verifying conditional strategy ..."); isOk = VerifyCondStrategy.Verify(st, _cmdLine.HeroPosition, 1e-7, out error); } if (isOk) { Console.WriteLine(" OK"); } else { Console.WriteLine(" Verification failed: {0}", error); return(1); } } AnalyzeStrategyTree.AnalyzeS(st, _cmdLine.IsAbsolute, _cmdLine.HeroPosition); return(0); }