#include "Point.h"
#include "PointPair.h"
#include "PointPairSet.h"
#include "PointSet.h"

int main(int argc, char** argv)
{
    Point p1;
    Point p2(2,3);
    Point p3(-5,5);
    Point p4(1,1);
    Point p5(10,10);
    
    cout<<"A: --------------------------------------"<<endl;
    PointSet ps1;       cout<<"ps1:"<<ps1<<endl;
    PointSet ps2(ps1);  cout<<"ps2:"<<ps2<<endl;
    PointSet ps3=ps2;   cout<<"ps3:"<<ps3<<endl;

    cout<<"B: --------------------------------------"<<endl;

    cout<<"no elements ps1:"<<ps1.numElements()<<endl;
    cout<<"is empty ps1:"<<ps1.isEmpty()<<endl;
    cout<<"ps1 has p1:"<<ps1.has(p1)<<endl;

    ps1.add(p1);
    ps1.add(p2);cout<<"ps1:"<<ps1<<endl;

    cout<<"no elements ps1:"<<ps1.numElements()<<endl;
    cout<<"is empty ps1:"<<ps1.isEmpty()<<endl;
    cout<<"ps1 has p1:"<<ps1.has(p1)<<endl;
    cout<<"ps1 has p2:"<<ps1.has(p2)<<endl;
    cout<<"ps1 has p3:"<<ps1.has(p3)<<endl;

    cout<<"C: --------------------------------------"<<endl;

    ps1.add(p2);ps1.add(p3);ps1.add(p4);ps1.add(p4);
    ps3=ps1; cout<<"ps3:"<<ps3<<endl;
    
    ps1.remove(p1);cout<<"ps1:"<<ps1<<endl;
    cout<<"ps1 has p1:"<<ps1.has(p1)<<endl;

    ps1.remove(p4);cout<<"ps1:"<<ps1<<endl;
    cout<<"ps1 has p4:"<<ps1.has(p4)<<endl;

    cout<<"D: --------------------------------------"<<endl;
    
    ps2=ps1.merge(ps3);cout<<"ps2:"<<ps2<<endl;
    ps2=ps3.merge(ps1);cout<<"ps2:"<<ps2<<endl;
    

    cout<<"E: --------------------------------------"<<endl;

    ps2=ps1.intersect(ps3);
    cout<<"ps2:"<<ps2<<endl;
    ps2=ps3.intersect(ps1);cout<<"ps2:"<<ps2<<endl;
    
    cout<<"F: --------------------------------------"<<endl;

    ps1=PointSet::create("/home/scratch4/dxpuiu/CSCI303/project3/points.txt");
    cout<<"ps1:"<<ps1<<endl;
    ps2=PointSet::create(100,100,0); cout<<"ps2:"<<ps2<<endl;
    ps2=PointSet::create(100,100,10);cout<<"ps2:"<<ps2<<endl;

    cout<<"G: --------------------------------------"<<endl;

    cout<<"ps1==ps2:"<<(ps1==ps2)<<endl;
    cout<<"ps1!=ps2:"<<(ps1!=ps2)<<endl;
     
    cout<<"ps2==ps2:"<<(ps2==ps2)<<endl;
    cout<<"ps2==ps2:"<<(ps2!=ps2)<<endl;

    cout<<"H: --------------------------------------"<<endl;    
    ps2=ps1; ps2=ps2; ps2.add(p5);

    cout<<"ps1==ps2:"<<(ps1==ps2)<<endl;
    cout<<"ps2==ps1:"<<(ps2==ps1)<<endl;
    cout<<"ps1!=ps2:"<<(ps1!=ps2)<<endl;
     
    cout<<"ps2==ps2:"<<(ps2==ps2)<<endl;
    cout<<"ps2!=ps2:"<<(ps2!=ps2)<<endl;

    cout<<"I: --------------------------------------"<<endl;

    PointSet* ps4=new PointSet(2); cout<<"ps4:"<<*ps4<<endl;
    ps4->add(p1);
    ps4->add(p2);
    ps4->add(p3);
    cout<<"ps4:"<<*ps4<<endl;

    *ps4=PointSet::create("/home/scratch4/dxpuiu/CSCI303/project3/points.txt");
    cout<<"ps4:"<<*ps4<<endl;

    delete ps4;
    cout<<"J: --------------------------------------"<<endl;

  
}
