DialCap c1 = new DialCap(); DialCap c2 = null; try { c2 = (DialCap) c1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } assertTrue(c1 != c2); assertTrue(c1.getClass() == c2.getClass()); assertTrue(c1.equals(c2)); // check that the listener lists are independent MyDialLayerChangeListener l1 = new MyDialLayerChangeListener(); c1.addChangeListener(l1); assertTrue(c1.hasListener(l1)); assertFalse(c2.hasListener(l1));
ArcDialFrame f1 = new ArcDialFrame(); ArcDialFrame f2 = null; try { f2 = (ArcDialFrame) f1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } assertTrue(f1 != f2); assertTrue(f1.getClass() == f2.getClass()); assertTrue(f1.equals(f2)); // check that the listener lists are independent MyDialLayerChangeListener l1 = new MyDialLayerChangeListener(); f1.addChangeListener(l1); assertTrue(f1.hasListener(l1)); assertFalse(f2.hasListener(l1));
Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/tests/org/jfree/chart/plot/dial/junit/AbstractDialLayerTests.java File path: /jfreechart-1.0.10/tests/org/jfree/chart/plot/dial/junit/ArcDialFrameTests.java
Method name: void testCloning() Method name: void testCloning()
Number of AST nodes: 11 Number of AST nodes: 11
1
DialCap c1 = new DialCap();
1
ArcDialFrame f1 = new ArcDialFrame();
2
        DialCap c2 = null;
2
        ArcDialFrame f2 = null;
3
        try {
3
        try {
4
            c2 = (DialCap) c1.clone();
4
            f2 = (ArcDialFrame) f1.clone();
5
        }
5
        }
6
        catch (CloneNotSupportedException e) {
6
        catch (CloneNotSupportedException e) {
7
            e.printStackTrace();
7
            e.printStackTrace();
8
        }
8
        }
9
        assertTrue(c1 != c2);
9
        assertTrue(f1 != f2);
10
        assertTrue(c1.getClass() == c2.getClass());
10
        assertTrue(f1.getClass() == f2.getClass());
11
        assertTrue(c1.equals(c2));
11
        assertTrue(f1.equals(f2));
12
        
12
        
13
        // check that the listener lists are independent
13
        // check that the listener lists are independent
14
        MyDialLayerChangeListener l1 = new MyDialLayerChangeListener();
14
        MyDialLayerChangeListener l1 = new MyDialLayerChangeListener();
15
        c1.addChangeListener(l1);
15
        f1.addChangeListener(l1);
16
        assertTrue(c1.hasListener(l1));
16
        assertTrue(f1.hasListener(l1));
17
        assertFalse(c2.hasListener(l1));
17
        assertFalse(f2.hasListener(l1));
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 comparisons45
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements11
    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.8
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    DialCap c1 = new DialCap();
    1
    DialCap c1 = new DialCap();
    1
    ArcDialFrame f1 = new ArcDialFrame();
    Differences
    Expression1Expression2Difference
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression new DialCap() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new ArcDialFrame() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    1
    ArcDialFrame f1 = new ArcDialFrame();
    2
    DialCap c2 = null;
    2
    DialCap c2 = null;
    2
    ArcDialFrame f2 = null;
    Differences
    Expression1Expression2Difference
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    c2f2VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    2
    ArcDialFrame f2 = null;
    3
    try
    3
    try
    4
    c2 = (DialCap)c1.clone();
    4
    c2 = (DialCap)c1.clone();
    4
    f2 = (ArcDialFrame)f1.clone();
    Differences
    Expression1Expression2Difference
    c2f2VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression (DialCap)c1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression (ArcDialFrame)f1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4
    f2 = (ArcDialFrame)f1.clone();
    5
    assertTrue(c1 != c2);
    5
    assertTrue(c1 != c2);
    5
    assertTrue(f1 != f2);
    Differences
    Expression1Expression2Difference
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    c2f2VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    5
    assertTrue(f1 != f2);
    6
    assertTrue(c1.getClass() == c2.getClass());
    6
    assertTrue(c1.getClass() == c2.getClass());
    6
    assertTrue(f1.getClass() == f2.getClass());
    Differences
    Expression1Expression2Difference
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    c2f2VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    6
    assertTrue(f1.getClass() == f2.getClass());
    7
    assertTrue(c1.equals(c2));
    7
    assertTrue(c1.equals(c2));
    7
    assertTrue(f1.equals(f2));
    Differences
    Expression1Expression2Difference
    c2f2VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    7
    assertTrue(f1.equals(f2));
    8
    MyDialLayerChangeListener l1 = new MyDialLayerChangeListener();
    8
    MyDialLayerChangeListener l1 = new MyDialLayerChangeListener();
    9
    c1.addChangeListener(l1);
    9
    c1.addChangeListener(l1);
    9
    f1.addChangeListener(l1);
    Differences
    Expression1Expression2Difference
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    9
    f1.addChangeListener(l1);
    10
    assertTrue(c1.hasListener(l1));
    10
    assertTrue(c1.hasListener(l1));
    10
    assertTrue(f1.hasListener(l1));
    Differences
    Expression1Expression2Difference
    c1f1VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    10
    assertTrue(f1.hasListener(l1));
    11
    assertFalse(c2.hasListener(l1));
    11
    assertFalse(c2.hasListener(l1));
    11
    assertFalse(f2.hasListener(l1));
    Differences
    Expression1Expression2Difference
    c2f2VARIABLE_NAME_MISMATCH
    org.jfree.chart.plot.dial.DialCaporg.jfree.chart.plot.dial.ArcDialFrameSUBCLASS_TYPE_MISMATCH
    11
    assertFalse(f2.hasListener(l1));
    Precondition Violations (4)
    Row Violation
    1Expression new DialCap() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression new ArcDialFrame() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression (DialCap)c1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression (ArcDialFrame)f1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted