# -*- coding: utf-8 -*- from .expr import * from .brain import * # this should maybe not be exported, but it's currently # useful for development try: from flint import * from .algebraic import alg except ImportError: pass def test_fungrim_entry(id, num=100): from .formulas import entries_dict entry = entries_dict[id] formula = entry.get_arg_with_head(Formula) if formula is None: print("no Formula() in entry") return formula = formula.args()[0] print("Formula: ", formula) variables = entry.get_arg_with_head(Variables) if variables is None: variables = [] else: variables = variables.args() assumptions = entry.get_arg_with_head(Assumptions) if assumptions is None: assumptions = True_ else: # todo: multiple args to Assumptions() assumptions = assumptions.args()[0] print("Variables: ", variables) print("Assumptions: ", assumptions) return formula.test(variables, assumptions, num=num) def test_fungrim(nstart=0, nend=10**9, num=100, filter=None): from .formulas import entries_dict effective = 0 ineffective = 0 truly_effective = 0 for n, eid in enumerate(sorted(entries_dict)): if n >= nstart and n <= nend: entry = entries_dict[eid] if filter is not None: if set(entry.symbols()).isdisjoint(set(filter)): continue print("-------------------------------------------------------------------") print(eid, n, len(entries_dict)) info = test_fungrim_entry(eid, num) if info is not None: if info["Total"] > 0: effective += 1 else: ineffective += 1 if info["True"] > 0: truly_effective += 1 print("Tested", effective, "formulas and", truly_effective, "truly effective; unable to satisfy assumptions for", ineffective, "formulas") def test(): import doctest print("----------------------------------------------------------") print("expr") print("----------------------------------------------------------") doctest.testmod(expr, verbose=True, raise_on_error=False, optionflags=doctest.ELLIPSIS) expr.TestExpr().run() print("----------------------------------------------------------") print("algebraic") print("----------------------------------------------------------") doctest.testmod(algebraic, verbose=True, raise_on_error=True, optionflags=doctest.ELLIPSIS) algebraic.TestAlgebraic().run() print("----------------------------------------------------------") print("brain") print("----------------------------------------------------------") doctest.testmod(brain, verbose=True, raise_on_error=True, optionflags=doctest.ELLIPSIS) TestBrain().run()