jltools.visit
Class NodeScrambler
java.lang.Object
|
+--jltools.ast.NodeVisitor
|
+--jltools.visit.NodeScrambler
- public class NodeScrambler
- extends NodeVisitor
The NodeScrambler
is test case generator of sorts. Since it
is ofter useful to introduce ``random'' errors into source code, this
class provides a way of doing so in a semi-structed manner. The process
takes place in two phases. First, a "FirstPass" is made to collect
a list of nodes and their parents. Then a second pass is made to randomly
replace a branch of the tree with another suitable branch.
Inner Class Summary |
class |
NodeScrambler.FirstPass
Scans throught the AST, create a list of all nodes present, along with
the set of parents for each node in the tree. |
Constructor Summary |
NodeScrambler()
|
NodeScrambler(long seed)
Create a new NodeScrambler with the given random number
generator seed. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
fp
public NodeScrambler.FirstPass fp
NodeScrambler
public NodeScrambler()
NodeScrambler
public NodeScrambler(long seed)
- Create a new
NodeScrambler
with the given random number
generator seed.
getSeed
public long getSeed()
override
public Node override(Node n)
- Description copied from class:
NodeVisitor
- Given a tree rooted at
n
, the visitor has the option of
overriding all traversal of the children of n
. If no
changes were made to n
and the visitor wishes to prevent
further traversal of the tree, then it should return n
. If
changes were made to the subtree, then the visitor should return a
copy of n
with appropriate changes. Finally, if the
visitor does not wish to override traversal of the subtree rooted at
n
, then it should return null
.
- Overrides:
override
in class NodeVisitor
- Following copied from class:
jltools.ast.NodeVisitor
- Parameters:
n
- The root of the subtree to be traversed.- Returns:
- A node if normal traversal is to stop,
null
if it
is to continue.
coinFlip
protected boolean coinFlip()
potentialScramble
protected Node potentialScramble(Node n)