/*  File TestNat.java

    Test driver for Natural Number Example
    H. Conrad Cunningham

1234567890123456789012345678901234567890123456789012345678901234567890

2004-01-17: Original
2016-10-26: Formatting changes, new tests

    This is a quick-and-dirty, partial test driver for the Nat cluster
    of classes.

 */

public class TestNat
{
    public static void main(String[] arg)
    {
	System.out.println("\nTest Zero");
	Nat zero = Zero.getZero();
        System.out.println("0 : " + zero);
	
	System.out.println("\nTest Succ");
	Nat one = new Succ(zero) ;
        System.out.println("1 : " + one);
		
        Nat three = new Succ(new Succ(new Succ(zero)));
        System.out.println("1+1+1+0 : " + three);
	
        Nat six = three.add(three);
        System.out.println("3+3 : " + six);
        System.out.println("3-3 : " + three.sub(three));
        System.out.println("3-6 : " + three.sub(six));
        System.out.println("3=3 : " + three.equals(three));
        System.out.println("3=6 : " + three.equals(six));
        System.out.println("0=6 : " + zero.equals(six));
        System.out.println("0=0 : " + zero.equals(zero));

	System.out.println("\nTest Err");
        Nat err = Err.getErr(); 
        System.out.println("Err = 1+1+Err : " + 
            err.equals(new Succ(new Succ(err))));
        System.out.println("3<3 : " + three.isLess(three));
        System.out.println("3<6 : " + three.isLess(six));
        System.out.println("0<6 : " + zero.isLess(six));
        System.out.println("0<0 : " + zero.isLess(zero));

	System.out.println("\nTest method chaining");
	Nat result = zero.add(one).add(six).sub(three).sub(one);
        System.out.println("0+1+6-3-1 : " + result);

    }
} 

