This is a collection of public tests for project four, meant to test
different pieces of the semantic rules given in the project.  In
testing the project, we will try to make a set of tests which is as
disjoint as possible with respect to the program synatx and semantic
rules.  (I.e., will allow you to implement things incrementally.)
However, there are certain parts of the project which necessarily
depend on others (for example, function invocation is a prerequisite
for a number of the tests shown here).  

While our actual tests will attempt to test your program as
incrementally as possible, we have tried to give you an idea of what
to expect with these public tests.

You are also encouraged to create your own tests.

arith1-5.ru:

  These test basic functionality of arithmetic.  You might want to
implement your compiler to pass these tests first, and then "throw
away" part of your implementation when you expand to (e.g.,) represent
all values as classes (where integers will be wrapped in an object).

arith1.ru: should produce 6
arith2.ru: should produce 3
arith3.ru: should produce -1
arith4.ru: should produce 2
arith5.ru: should produce 21

class1-4.ru:

  These test basic details behind your class implementation.

class1.ru: should produce 3
class2.ru: should produce -1 (*not* 3, because of the subclass)
class3.ru: should produce 4

field1-3.ru:

field1.ru: should produce 1
field2.ru: should produce 1
field3.ru: should produce 2

iftest1-5.ru:

iftest1.ru: should produce 1
iftest2.ru: should produce 2
iftest3.ru: should produce 2
iftest4.ru: should produce 1
iftest5.ru: should produce 2

invoke.ru: should produce 15

local.ru: should produce 12

print.ru: should print "hello" and then produce 1

seq1.ru: should produce 2

string1.ru: should produce 1
string2.ru: should print "hello world!" and thn produce 1
 