anchor.diff:          ListNode.makeList([Primitive.LPUT, Primitive.QUOTE, foo, barlist])),
           equals(ListNode.makeList([bar, foo])));                               
     }
  -  
  +
     void testEvalOp() {
       makeInterpreter();
   
  
positive.code:       test("eval values", testEvalValues);
        test("eval if", testEvalIf);
        test("eval defn", testEvalDefn);
        test("eval defn concat", testEvalConcat);
        test("eval op", testEvalOp);
        test("eval first butfirst", testEvalFirstButFirst);
  
negative.code: 
  import "dart:math" as math;
  
  import "package:arrowlogo/console.dart";
  import "package:arrowlogo/debug.dart";
  import "package:arrowlogo/turtle.dart";
  import "package:arrowlogo/interpreter.dart";
  import "package:arrowlogo/nodes.dart";
  import "package:arrowlogo/parser.dart";
  import "package:arrowlogo/scope.dart";
  
  class MockConsole extends Console {
    void receive(dynamic raw) {}
  }
  
  class MockTurtleWorker extends TurtleWorker {
  
    @override
    void receive(Primitive p, List<dynamic> args) {
      // ignore
    }
  
    TurtleState get state => new TurtleState(0.0, 0.0, 0.0);
  }
  
  class InterpreterTest {
  
    Scope globalScope;
    var turtle = new MockTurtleWorker();
    var console = new MockConsole();
    var parent = new SimpleDebug();
    InterpreterImpl interpreter;
  
    InterpreterImpl makeInterpreter([Map<String, Node> map = null]) {
      globalScope = new Scope(map == null ? new Map() : map);
      interpreter = new InterpreterImpl.internal(
          globalScope, parent, turtle, console);
      return interpreter;
    }
  
    InterpreterTest() {
    }
  
  