with ada.text_io; use ada.text_io; 
with ada.integer_text_io; use ada.integer_text_io; 
 
with pairpkg; use pairpkg;

procedure pairClient  is 

    p1: Pair;
    p2: Pair;

begin
    p1 := NewPair(1, 2);

    put(p1);

    put(toString(p1));
    put(distanceToOrigin(p1));

    p2 := NewPair(3, 4);
    put(toString(p2));
    put(distanceToOrigin(p2));
    put(distanceBetween(p2, p1));

    p2 := reflect(p1);
    put(toString(p2));

    reflectMe(p1);
    put(toString(p1));

    -- distanceToOrigin for this pair is too large for a natural
    p1 := NewPair(integer'last, integer'last);
    
    begin
        -- This will raise an exception that is handled
        put(distanceToOrigin(p1));
    exception
        when Pair_Distance_Too_Large => 
            put_line("Can't calculate distance for this pair");
    end;

    -- This will raise an exception that is not handled
    put(distanceToOrigin(p1));

end pairClient;