LevelRenderer r1 = new LevelRenderer(); r1.setItemMargin(0.123); r1.setMaximumItemWidth(0.234); LevelRenderer r2 = null; try { r2 = (LevelRenderer) r1.clone(); } catch (CloneNotSupportedException e) { System.err.println("Failed to clone."); } assertTrue(r1 != r2); assertTrue(r1.getClass() == r2.getClass()); assertTrue(r1.equals(r2)); assertTrue(checkIndependence(r1, r2));
SimpleHistogramDataset d1 = new SimpleHistogramDataset("Dataset 1"); SimpleHistogramDataset d2 = null; try { d2 = (SimpleHistogramDataset) d1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } assertTrue(d1 != d2); assertTrue(d1.getClass() == d2.getClass()); assertTrue(d1.equals(d2)); // check that clone is independent of the original d2.addBin(new SimpleHistogramBin(2.0, 3.0)); d2.addObservation(2.3); assertFalse(d1.equals(d2));
Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/tests/org/jfree/chart/renderer/category/junit/LevelRendererTests.java File path: /jfreechart-1.0.10/tests/org/jfree/data/statistics/junit/SimpleHistogramDatasetTests.java
Method name: void testCloning() Method name: void testCloning()
Number of AST nodes: 10 Number of AST nodes: 10
1
LevelRenderer r1 = new LevelRenderer();
2
        r1.setItemMargin(0.123);
3
        r1.setMaximumItemWidth(0.234);
4
        LevelRenderer r
1
SimpleHistogramDataset d1 = new SimpleHistogramDataset("Dataset 1");
5
2 = null;
2
        SimpleHistogramDataset d2 = null;
6
        try {
3
        try {
7
            r2 = (LevelRenderer) r1.clone();
4
            d2 = (SimpleHistogramDataset) d1.clone();
8
        }
5
        }
9
        catch (CloneNotSupportedException e) {
6
        catch (CloneNotSupportedException e) {
10
            System.err.println("Failed to clone.");
7
            e.printStackTrace();
11
        }
8
        }
12
        assertTrue(r1 != r2);
9
        assertTrue(d1 != d2);
13
        assertTrue(r1.getClass() == r2.getClass());
10
        assertTrue(d1.getClass() == d2.getClass());
14
        assertTrue(r1.equals(r2));
11
        assertTrue(d1.equals(d2));
12
        
15
        assertTrue(checkIndependence(r1, r
13
        // check that clone is independent of the original
14
        d2.addBin(new SimpleHistogramBin(2.0, 3.0));
15
        d2.addObservation(2.3);
16
2));
16
        assertFalse(d1.equals(d2));
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.3
Clones locationClones are in different classes having the same super class
Number of node comparisons51
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements8
    Number of unmapped statements in the first code fragment2
    Number of unmapped statements in the second code fragment2
    Time elapsed for statement mapping (ms)105.9
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    LevelRenderer r1 = new LevelRenderer();
    1
    LevelRenderer r1 = new LevelRenderer();
    1
    SimpleHistogramDataset d1 = new SimpleHistogramDataset("Dataset 1");
    Differences
    Expression1Expression2Difference
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    r1d1VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    new LevelRenderer()new SimpleHistogramDataset("Dataset 1")ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression new LevelRenderer() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new SimpleHistogramDataset("Dataset 1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new LevelRenderer() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new SimpleHistogramDataset("Dataset 1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    1
    SimpleHistogramDataset d1 = new SimpleHistogramDataset("Dataset 1");
    2
    r1.setItemMargin(0.123);
    2
    r1.setItemMargin(0.123);
    9
    d2.addObservation(2.3);
    Differences
    Expression1Expression2Difference
    0.1232.3LITERAL_VALUE_MISMATCH
    setItemMarginaddObservationMETHOD_INVOCATION_NAME_MISMATCH
    r1d2VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression r1.setItemMargin(0.123) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d2.addObservation(2.3) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r1.setItemMargin(0.123) is a void method call, and thus it cannot be parameterized
    Expression d2.addObservation(2.3) is a void method call, and thus it cannot be parameterized
    Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r1 cannot be unified with expression d2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void setItemMargin(double) , public void addObservation(double)
    9
    d2.addObservation(2.3);
    3
    r1.setMaximumItemWidth(0.234);
    3
    r1.setMaximumItemWidth(0.234);
    Preondition Violations
    Unmatched statement r1.setMaximumItemWidth(0.234); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                      
    4
    LevelRenderer r2 = null;
    4
    LevelRenderer r2 = null;
    2
    SimpleHistogramDataset d2 = null;
    Differences
    Expression1Expression2Difference
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    r2d2VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    2
    SimpleHistogramDataset d2 = null;
    5
    try
    5
    try
    3
    try
    Differences
    Expression1Expression2Difference
    printlnprintStackTraceMETHOD_INVOCATION_NAME_MISMATCH
    System.erreAST_TYPE_MISMATCH
    System.err.println("Failed to clone.")e.printStackTrace()ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression e.printStackTrace() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression System.err.println("Failed to clone.") is a void method call, and thus it cannot be parameterized
    Expression e.printStackTrace() is a void method call, and thus it cannot be parameterized
    Expression e cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression e.printStackTrace() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression System.err.println("Failed to clone.") is a void method call, and thus it cannot be parameterized
    Expression e.printStackTrace() is a void method call, and thus it cannot be parameterized
    3
    try
    6
    r2 = (LevelRenderer)r1.clone();
    6
    r2 = (LevelRenderer)r1.clone();
    4
    d2 = (SimpleHistogramDataset)d1.clone();
    Differences
    Expression1Expression2Difference
    r2d2VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    r1d1VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression (LevelRenderer)r1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression (SimpleHistogramDataset)d1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4
    d2 = (SimpleHistogramDataset)d1.clone();
    7
    assertTrue(r1 != r2);
    7
    assertTrue(r1 != r2);
    5
    assertTrue(d1 != d2);
    Differences
    Expression1Expression2Difference
    r1d1VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    r2d2VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5
    assertTrue(d1 != d2);
    8
    assertTrue(r1.getClass() == r2.getClass());
    8
    assertTrue(r1.getClass() == r2.getClass());
    6
    assertTrue(d1.getClass() == d2.getClass());
    Differences
    Expression1Expression2Difference
    r1d1VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    r2d2VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6
    assertTrue(d1.getClass() == d2.getClass());
    9
    assertTrue(r1.equals(r2));
    9
    assertTrue(r1.equals(r2));
    7
    assertTrue(d1.equals(d2));
    Differences
    Expression1Expression2Difference
    r2d2VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    r1d1VARIABLE_NAME_MISMATCH
    org.jfree.chart.renderer.category.LevelRendererorg.jfree.data.statistics.SimpleHistogramDatasetSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r2 cannot be unified with expression d2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    Expression r2 cannot be unified with expression d2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression r1 cannot be unified with expression d1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    7
    assertTrue(d1.equals(d2));
                                                                                                
    8
    d2.addBin(new SimpleHistogramBin(2.0, 3.0));
    Preondition Violations
    Unmatched statement d2.addBin(new SimpleHistogramBin(2.0,3.0)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    8
    d2.addBin(new SimpleHistogramBin(2.0, 3.0));
                                                                  
    10
    assertFalse(d1.equals(d2));
    Preondition Violations
    Unmatched statement assertFalse(d1.equals(d2)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    10
    assertFalse(d1.equals(d2));
    10
    assertTrue(checkIndependence(r1, r2));
    10
    assertTrue(checkIndependence(r1, r2));
    Preondition Violations
    Unmatched statement assertTrue(checkIndependence(r1,r2)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                                      
    Precondition Violations (44)
    Row Violation
    1Expression new LevelRenderer() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression new SimpleHistogramDataset("Dataset 1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression new LevelRenderer() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression new SimpleHistogramDataset("Dataset 1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5Expression r1.setItemMargin(0.123) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression d2.addObservation(2.3) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression r1.setItemMargin(0.123) is a void method call, and thus it cannot be parameterized
    8Expression d2.addObservation(2.3) is a void method call, and thus it cannot be parameterized
    9Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    10Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    11Expression r1 cannot be unified with expression d2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void setItemMargin(double) , public void addObservation(double)
    12Unmatched statement r1.setMaximumItemWidth(0.234); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    13Expression e.printStackTrace() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    14Expression System.err.println("Failed to clone.") is a void method call, and thus it cannot be parameterized
    15Expression e.printStackTrace() is a void method call, and thus it cannot be parameterized
    16Expression e cannot be parameterized, because it has dependencies to/from statements that will be extracted
    17Expression e.printStackTrace() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    18Expression System.err.println("Failed to clone.") is a void method call, and thus it cannot be parameterized
    19Expression e.printStackTrace() is a void method call, and thus it cannot be parameterized
    20Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    21Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    22Expression (LevelRenderer)r1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    23Expression (SimpleHistogramDataset)d1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    24Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    25Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    26Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    27Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    28Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    29Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    30Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    31Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    32Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    33Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    34Expression r2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    35Expression d2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    36Expression r2 cannot be unified with expression d2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    37Expression r2 cannot be unified with expression d2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    38Expression r1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    39Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    40Expression r1 cannot be unified with expression d1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    41Unmatched statement d2.addBin(new SimpleHistogramBin(2.0,3.0)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    42Unmatched statement assertFalse(d1.equals(d2)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    43Unmatched statement assertTrue(checkIndependence(r1,r2)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    44Clone fragment #1 returns variables r1, r2 , while Clone fragment #2 returns variables d2, d1