CustomCategoryURLGenerator g1 = new CustomCategoryURLGenerator(); List u1 = new java.util.ArrayList(); u1.add("URL A1"); u1.add("URL A2"); u1.add("URL A3"); g1.addURLSeries(u1); CustomCategoryURLGenerator g2 = null; try { g2 = (CustomCategoryURLGenerator) g1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } assertTrue(g1 != g2); assertTrue(g1.getClass() == g2.getClass()); assertTrue(g1.equals(g2)); // check independence List u2 = new java.util.ArrayList(); u2.add("URL XXX"); g1.addURLSeries(u2); assertFalse(g1.equals(g2)); g2.addURLSeries(new java.util.ArrayList(u2)); assertTrue(g1.equals(g2));
CustomXYURLGenerator g1 = new CustomXYURLGenerator(); List u1 = new java.util.ArrayList(); u1.add("URL A1"); u1.add("URL A2"); u1.add("URL A3"); g1.addURLSeries(u1); CustomXYURLGenerator g2 = null; try { g2 = (CustomXYURLGenerator) g1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } assertTrue(g1 != g2); assertTrue(g1.getClass() == g2.getClass()); assertTrue(g1.equals(g2)); // check independence List u2 = new java.util.ArrayList(); u2.add("URL XXX"); g1.addURLSeries(u2); assertFalse(g1.equals(g2)); g2.addURLSeries(new java.util.ArrayList(u2)); assertTrue(g1.equals(g2));
Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/tests/org/jfree/chart/urls/junit/CustomCategoryURLGeneratorTests.java File path: /jfreechart-1.0.10/tests/org/jfree/chart/urls/junit/CustomXYURLGeneratorTests.java
Method name: void testCloning() Method name: void testCloning()
Number of AST nodes: 18 Number of AST nodes: 18
1
CustomCategoryURLGenerator g1 = new CustomCategoryURLGenerator();
1
CustomXYURLGenerator g1 = new CustomXYURLGenerator();
2
        List u1 = new java.util.ArrayList();
2
        List u1 = new java.util.ArrayList();
3
        u1.add("URL A1");
3
        u1.add("URL A1");
4
        u1.add("URL A2");
4
        u1.add("URL A2");
5
        u1.add("URL A3");
5
        u1.add("URL A3");
6
        g1.addURLSeries(u1);
6
        g1.addURLSeries(u1);
7
        CustomCategoryURLGenerator g2 = null;
7
        CustomXYURLGenerator g2 = null;
8
        try {
8
        try {
9
            g2 = (CustomCategoryURLGenerator) g1.clone();
9
            g2 = (CustomXYURLGenerator) g1.clone();
10
        }
10
        }
11
        catch (CloneNotSupportedException e) {
11
        catch (CloneNotSupportedException e) {
12
            e.printStackTrace();
12
            e.printStackTrace();
13
        }
13
        }
14
        assertTrue(g1 != g2);
14
        assertTrue(g1 != g2);
15
        assertTrue(g1.getClass() == g2.getClass());
15
        assertTrue(g1.getClass() == g2.getClass());
16
        assertTrue(g1.equals(g2));
16
        assertTrue(g1.equals(g2));
17
        // check independence
17
        // check independence
18
        List u2 = new java.util.ArrayList();
18
        List u2 = new java.util.ArrayList();
19
        u2.add("URL XXX");
19
        u2.add("URL XXX");
20
        g1.addURLSeries(u2);
20
        g1.addURLSeries(u2);
21
        assertFalse(g1.equals(g2));
21
        assertFalse(g1.equals(g2));
22
        g2.addURLSeries(new java.util.ArrayList(u2));
22
        g2.addURLSeries(new java.util.ArrayList(u2));
23
        assertTrue(g1.equals(g2));
23
        assertTrue(g1.equals(g2));
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.1
Clones locationClones are in different classes having the same super class
Number of node comparisons72
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements18
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)28.6
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    CustomCategoryURLGenerator g1 = new CustomCategoryURLGenerator();
    1
    CustomCategoryURLGenerator g1 = new CustomCategoryURLGenerator();
    1
    CustomXYURLGenerator g1 = new CustomXYURLGenerator();
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    1
    CustomXYURLGenerator g1 = new CustomXYURLGenerator();
    2
    List u1 = new java.util.ArrayList();
    2
    List u1 = new java.util.ArrayList();
    3
    u1.add("URL A1");
    3
    u1.add("URL A1");
    4
    u1.add("URL A2");
    4
    u1.add("URL A2");
    5
    u1.add("URL A3");
    5
    u1.add("URL A3");
    6
    g1.addURLSeries(u1);
    6
    g1.addURLSeries(u1);
    6
    g1.addURLSeries(u1);
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void addURLSeries(List#RAW)
    6
    g1.addURLSeries(u1);
    7
    CustomCategoryURLGenerator g2 = null;
    7
    CustomCategoryURLGenerator g2 = null;
    7
    CustomXYURLGenerator g2 = null;
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    7
    CustomXYURLGenerator g2 = null;
    8
    try
    8
    try
    9
    g2 = (CustomCategoryURLGenerator)g1.clone();
    9
    g2 = (CustomCategoryURLGenerator)g1.clone();
    9
    g2 = (CustomXYURLGenerator)g1.clone();
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression (CustomCategoryURLGenerator)g1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression (CustomXYURLGenerator)g1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9
    g2 = (CustomXYURLGenerator)g1.clone();
    10
    assertTrue(g1 != g2);
    10
    assertTrue(g1 != g2);
    10
    assertTrue(g1 != g2);
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    10
    assertTrue(g1 != g2);
    11
    assertTrue(g1.getClass() == g2.getClass());
    11
    assertTrue(g1.getClass() == g2.getClass());
    11
    assertTrue(g1.getClass() == g2.getClass());
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public final native Class<? extends org.jfree.chart.urls.CustomCategoryURLGenerator> getClass()
    Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public final native Class<? extends org.jfree.chart.urls.CustomCategoryURLGenerator> getClass()
    11
    assertTrue(g1.getClass() == g2.getClass());
    12
    assertTrue(g1.equals(g2));
    12
    assertTrue(g1.equals(g2));
    12
    assertTrue(g1.equals(g2));
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g2 cannot be unified with expression g2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    12
    assertTrue(g1.equals(g2));
    13
    List u2 = new java.util.ArrayList();
    13
    List u2 = new java.util.ArrayList();
    14
    u2.add("URL XXX");
    14
    u2.add("URL XXX");
    15
    g1.addURLSeries(u2);
    15
    g1.addURLSeries(u2);
    15
    g1.addURLSeries(u2);
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void addURLSeries(List#RAW)
    15
    g1.addURLSeries(u2);
    16
    assertFalse(g1.equals(g2));
    16
    assertFalse(g1.equals(g2));
    16
    assertFalse(g1.equals(g2));
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g2 cannot be unified with expression g2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    16
    assertFalse(g1.equals(g2));
    17
    g2.addURLSeries(new java.util.ArrayList(u2));
    17
    g2.addURLSeries(new java.util.ArrayList(u2));
    17
    g2.addURLSeries(new java.util.ArrayList(u2));
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void addURLSeries(List#RAW)
    17
    g2.addURLSeries(new java.util.ArrayList(u2));
    18
    assertTrue(g1.equals(g2));
    18
    assertTrue(g1.equals(g2));
    18
    assertTrue(g1.equals(g2));
    Differences
    Expression1Expression2Difference
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.urls.CustomCategoryURLGeneratororg.jfree.chart.urls.CustomXYURLGeneratorSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression g2 cannot be unified with expression g2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    18
    assertTrue(g1.equals(g2));
    Precondition Violations (16)
    Row Violation
    1Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void addURLSeries(List#RAW)
    2Expression (CustomCategoryURLGenerator)g1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression (CustomXYURLGenerator)g1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public final native Class<? extends org.jfree.chart.urls.CustomCategoryURLGenerator> getClass()
    5Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public final native Class<? extends org.jfree.chart.urls.CustomCategoryURLGenerator> getClass()
    6Expression g2 cannot be unified with expression g2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    7Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    8Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    9Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void addURLSeries(List#RAW)
    10Expression g2 cannot be unified with expression g2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    11Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    12Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    13Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void addURLSeries(List#RAW)
    14Expression g2 cannot be unified with expression g2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    15Expression g2 cannot be unified with expression g2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    16Expression g1 cannot be unified with expression g1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)