/////////////////////////////////////////////////////////////////////// // STANFORD LOGIC GROUP // // General Game Playing Project // // // // Sample Player Implementation // // // // (c) 2007. See LICENSE and CONTRIBUTORS. // /////////////////////////////////////////////////////////////////////// /** * */ package stanfordlogic.test.prover; import stanfordlogic.gdl.Parser; import stanfordlogic.prover.Fact; import stanfordlogic.prover.Substitution; import stanfordlogic.prover.Term; import stanfordlogic.prover.TermFunction; import stanfordlogic.prover.TermObject; import stanfordlogic.prover.TermVariable; import stanfordlogic.game.GameManager; import junit.framework.TestCase; /** * */ public class TestSubstitution extends TestCase { Parser parser_; @Override protected void setUp() throws Exception { parser_ = GameManager.getParser(); } public void testSubstitution() { Substitution s = new Substitution(); TermVariable v1 = TermVariable.makeTermVariable(); TermVariable v2 = TermVariable.makeTermVariable(); TermObject t = TermObject.makeTermObject(256); s.addMapping( v1, v2 ); s.addMapping( v2, t ); assertEquals(2, s.numMappings() ); assertEquals(t, s.getMapping(v1) ); assertEquals(t, s.getMapping(v2) ); } public void testFunctionVarMapping() { Fact f1 = makeFact("legal ?x"); TermFunction tf = getTermFunction("mark ?y ?z"); TermVariable varX = getVariable("?x"); TermVariable varY = getVariable("?y"); TermVariable varZ = getVariable("?z"); Substitution s = new Substitution(); s.addMapping(varX, tf); s.addMapping(varY, getTermObject("1")); s.addMapping(varZ, getTermObject("2")); Fact result = (Fact) f1.applySubstitution(s); assertEquals( makeFact("legal (mark 1 2)"), result ); } private Fact makeFact(String str) { return Fact.fromExpression( parser_.parse(str) ); } private TermFunction getTermFunction(String str) { return (TermFunction) Term.buildFromGdl(parser_.parse(str)); } private TermObject getTermObject(String str) { return TermObject.makeTermObject( parser_.getSymbolTable().get(str) ); } private TermVariable getVariable(String str) { return new TermVariable( parser_.getSymbolTable().get(str.substring(1)) ); } }