Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/15/11 13:34:38 (14 years ago)
Author:
mkommend
Message:

#1418: Finally added results from the grammar refactoring.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Tests/Util.cs

    r5549 r5686  
    120120      foreach (var defunTreeNode in tree.Root.SubTrees.OfType<DefunTreeNode>()) {
    121121        int arity = defunTreeNode.NumberOfArguments;
     122
     123        foreach (var argTreenode in defunTreeNode.IterateNodesPrefix().OfType<ArgumentTreeNode>()) {
     124          Assert.IsTrue(argTreenode.SubtreesCount == 0);
     125          Assert.IsTrue(((Argument)argTreenode.Symbol).ArgumentIndex < arity);
     126        }
     127
     128        foreach (var argSymbol in Enumerable.Range(0, defunTreeNode.NumberOfArguments).Select(x => new Argument(x))) {
     129          Assert.IsTrue(defunTreeNode.Grammar.ContainsSymbol(argSymbol));
     130          Assert.IsTrue(defunTreeNode.Grammar.GetMaximumSubtreeCount(argSymbol) == 0);
     131          Assert.IsTrue(defunTreeNode.Grammar.GetMinimumSubtreeCount(argSymbol) == 0);
     132        }
     133
    122134        var invoke = new InvokeFunction(defunTreeNode.FunctionName);
    123135        foreach (var otherRootNode in tree.Root.SubTrees) {
    124136          if (otherRootNode.Grammar.ContainsSymbol(invoke)) {
    125             Assert.IsTrue(otherRootNode.Grammar.GetMinSubtreeCount(invoke) == arity);
    126             Assert.IsTrue(otherRootNode.Grammar.GetMaxSubtreeCount(invoke) == arity);
     137            Assert.IsTrue(otherRootNode.Grammar.GetMinimumSubtreeCount(invoke) == arity);
     138            Assert.IsTrue(otherRootNode.Grammar.GetMaximumSubtreeCount(invoke) == arity);
    127139          }
    128140        }
     141
    129142      }
    130       //Assert.AreEqual(tree.Root.Symbol, tree.Root.Grammar.StartSymbol);
    131       foreach (var subtree in tree.Root.SubTrees)
     143      foreach (var subtree in tree.Root.SubTrees) {
    132144        Assert.AreNotSame(subtree.Grammar, tree.Root.Grammar);
     145        IsValid(subtree.Grammar);
     146      }
     147
     148      IsValid(tree.Root.Grammar);
    133149      IsValid(tree.Root);
     150    }
     151
     152    public static void IsValid(ISymbolicExpressionTreeGrammar grammar) {
     153      Assert.IsTrue(grammar.Symbols.Count() == grammar.Symbols.Distinct().Count());
     154      foreach (ISymbol symbol in grammar.Symbols) {
     155        Assert.IsTrue(grammar.GetMinimumSubtreeCount(symbol) <= grammar.GetMaximumExpressionLength(symbol));
     156        Assert.IsTrue(grammar.GetAllowedChildSymbols(symbol).Count() == grammar.GetAllowedChildSymbols(symbol).Distinct().Count());
     157        for (int i = 0; i < grammar.GetMaximumSubtreeCount(symbol); i++) {
     158          Assert.IsTrue(grammar.GetAllowedChildSymbols(symbol, i).Count() == grammar.GetAllowedChildSymbols(symbol, i).Distinct().Count());
     159        }
     160      }
    134161    }
    135162
     
    138165                            where symb.Name == treeNode.Symbol.Name
    139166                            select symb).SingleOrDefault();
    140       Assert.IsTrue(treeNode.SubTrees.Count() >= treeNode.Grammar.GetMinSubtreeCount(matchingSymbol));
    141       Assert.IsTrue(treeNode.SubTrees.Count() <= treeNode.Grammar.GetMaxSubtreeCount(matchingSymbol));
     167      Assert.IsTrue(treeNode.SubTrees.Count() >= treeNode.Grammar.GetMinimumSubtreeCount(matchingSymbol));
     168      Assert.IsTrue(treeNode.SubTrees.Count() <= treeNode.Grammar.GetMaximumSubtreeCount(matchingSymbol));
    142169      Assert.AreNotEqual(0.0, matchingSymbol.InitialFrequency); // check that no deactivated symbols occur in the tree
    143170      for (int i = 0; i < treeNode.SubTrees.Count(); i++) {
    144         Assert.IsTrue(treeNode.Grammar.GetAllowedSymbols(treeNode.Symbol, i).Select(x => x.Name).Contains(treeNode.GetSubTree(i).Symbol.Name));
     171        Assert.IsTrue(treeNode.Grammar.GetAllowedChildSymbols(treeNode.Symbol, i).Select(x => x.Name).Contains(treeNode.GetSubTree(i).Symbol.Name));
    145172        IsValid(treeNode.GetSubTree(i));
    146173      }
Note: See TracChangeset for help on using the changeset viewer.