package lectures.equals_polymorphism_overloading;
import util.annotations.WebDocuments;

import lectures.arrays.collections_implementation.AStringHistory;
import lectures.arrays.collections_implementation.StringHistory;
import lectures.graphics.ACartesianPoint;
import lectures.graphics.Point;
import lectures.inheritance.AStringSet;

@WebDocuments({"Lectures/EqualsPolymorphismOverloading.pptx", "Lectures/EqualsPolymorphismOverloading.pdf", "Videos/EqualsPolymorphismOverloading.avi"})
public class EqualsVsEqualEqual {
    public static void main (String[] args) {
        defaultEqualsVsEqualEqual();
        defaultEqualsVsCustomEquals();
    }
    public static void defaultEqualsVsEqualEqual() {
        Point p1 = new ACartesianPoint(200, 200); 
        Point p2 = p1;
        System.out.println(p1 == p2);
        p2 = new ACartesianPoint(200, 200);     
        System.out.println(p1 == p2);
        System.out.println(p1.equals(p2));
        StringHistory stringHistory1 = new AStringHistory();
        StringHistory stringHistory2 = new AStringHistory();
        System.out.println(stringHistory1.equals(stringHistory2));
            
    }
    public static void defaultEqualsVsCustomEquals() {      
        StringHistory stringHistory1 = new AStringHistory();
        StringHistory stringHistory2 = new AStringHistory();
        System.out.println(stringHistory1.equals(stringHistory2));
        stringHistory1 = new AStringHistoryWithCustomEquals();
        stringHistory2 = new AStringHistoryWithCustomEquals();
        System.out.println(stringHistory1.equals(stringHistory2));
        System.out.println(stringHistory1.equals(new AStringSet()));
        System.out.println(((StringHistoryWithCustomEquals)stringHistory1).equals(stringHistory2));     
    }
    

}