DefaultKeyedValues2DDataset d1 = new DefaultKeyedValues2DDataset(); d1.setValue(new Integer(1), "V1", "C1"); d1.setValue(null, "V2", "C1"); d1.setValue(new Integer(3), "V3", "C2"); DefaultKeyedValues2DDataset d2 = null; try { d2 = (DefaultKeyedValues2DDataset) d1.clone(); } catch (CloneNotSupportedException e) { System.err.println("Failed to clone."); } assertTrue(d1 != d2); assertTrue(d1.getClass() == d2.getClass()); assertTrue(d1.equals(d2));
SimpleHistogramBin b1 = new SimpleHistogramBin(1.1, 2.2, false, true); b1.setItemCount(99); SimpleHistogramBin b2 = null; try { b2 = (SimpleHistogramBin) b1.clone(); } catch (CloneNotSupportedException e) { System.err.println("Failed to clone."); } assertTrue(b1 != b2); assertTrue(b1.getClass() == b2.getClass()); assertTrue(b1.equals(b2)); // check that clone is independent of the original b2.setItemCount(111); assertFalse(b1.equals(b2));
Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/tests/org/jfree/data/general/junit/DefaultKeyedValues2DDatasetTests.java File path: /jfreechart-1.0.10/tests/org/jfree/data/statistics/junit/SimpleHistogramBinTests.java
Method name: void testCloning() Method name: void testCloning()
Number of AST nodes: 10 Number of AST nodes: 10
1
DefaultKeyedValues2DDataset d1 = new DefaultKeyedValues2DDataset();
2
        d1.setValue(new Integer(1), "V1", "C1");
3
        d1.setValue(null, "V2", "C1");
1
SimpleHistogramBin b1 = new SimpleHistogramBin(1.1, 2.2, false, true);
4
        d1.setValue(new Integer(3), "V3", "C2");
2
        b1.set
5
        DefaultKeyedValues2DDataset d
3
ItemCount(99);
6
2 = null;
4
        SimpleHistogramBin b2 = null;
7
        try {
5
        try {
8
            d2 = (DefaultKeyedValues2DDataset) d1.clone();
6
            b2 = (SimpleHistogramBin) b1.clone();
9
        }
7
        }
10
        catch (CloneNotSupportedException e) {
8
        catch (CloneNotSupportedException e) {
11
            System.err.println("Failed to clone.");
9
            System.err.println("Failed to clone.");
12
        }
10
        }
13
        assertTrue(d1 != d2);
11
        assertTrue(b1 != b2);
14
        assertTrue(d1.getClass() == d2.getClass());
12
        assertTrue(b1.getClass() == b2.getClass());
15
        assertTrue(d
13
        assertTrue(b1.equals(b2));
14
        
15
        // check that clone is independent of the original
16
        b2.setItemCount(111);
16
1.equals(d2));
17
        assertFalse(b1.equals(b2));
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.2
Clones locationClones are in different classes having the same super class
Number of node comparisons52
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements9
    Number of unmapped statements in the first code fragment1
    Number of unmapped statements in the second code fragment1
    Time elapsed for statement mapping (ms)44.3
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    DefaultKeyedValues2DDataset d1 = new DefaultKeyedValues2DDataset();
    1
    DefaultKeyedValues2DDataset d1 = new DefaultKeyedValues2DDataset();
    1
    SimpleHistogramBin b1 = new SimpleHistogramBin(1.1, 2.2, false, true);
    Differences
    Expression1Expression2Difference
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d1b1VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    new DefaultKeyedValues2DDataset()new SimpleHistogramBin(1.1,2.2,false,true)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression new SimpleHistogramBin(1.1,2.2,false,true) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new SimpleHistogramBin(1.1,2.2,false,true) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    1
    SimpleHistogramBin b1 = new SimpleHistogramBin(1.1, 2.2, false, true);
    2
    d1.setValue(new Integer(1), "V1", "C1");
    2
    d1.setValue(new Integer(1), "V1", "C1");
    2
    b1.setItemCount(99);
    Differences
    Expression1Expression2Difference
    setValuesetItemCountMETHOD_INVOCATION_NAME_MISMATCH
    d1b1VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d1.setValue(new Integer(1),"V1","C1")b1.setItemCount(99)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression d1.setValue(new Integer(1),"V1","C1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression b1.setItemCount(99) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1.setValue(new Integer(1),"V1","C1") is a void method call, and thus it cannot be parameterized
    Expression b1.setItemCount(99) is a void method call, and thus it cannot be parameterized
    Expression d1 cannot be unified with expression b1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void setValue(java.lang.Number, Comparable#RAW, Comparable#RAW) , public void setItemCount(int)
    Expression d1.setValue(new Integer(1),"V1","C1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression b1.setItemCount(99) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1.setValue(new Integer(1),"V1","C1") is a void method call, and thus it cannot be parameterized
    Expression b1.setItemCount(99) is a void method call, and thus it cannot be parameterized
    2
    b1.setItemCount(99);
    3
    d1.setValue(null, "V2", "C1");
    3
    d1.setValue(null, "V2", "C1");
    Preondition Violations
    Unmatched statement d1.setValue(null,"V2","C1"); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
                                                                  
    4
    d1.setValue(new Integer(3), "V3", "C2");
    4
    d1.setValue(new Integer(3), "V3", "C2");
    9
    b2.setItemCount(111);
    Differences
    Expression1Expression2Difference
    setValuesetItemCountMETHOD_INVOCATION_NAME_MISMATCH
    d1b2VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d1.setValue(new Integer(3),"V3","C2")b2.setItemCount(111)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression d1.setValue(new Integer(3),"V3","C2") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression b2.setItemCount(111) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1.setValue(new Integer(3),"V3","C2") is a void method call, and thus it cannot be parameterized
    Expression b2.setItemCount(111) is a void method call, and thus it cannot be parameterized
    Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression b2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1 cannot be unified with expression b2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void setValue(java.lang.Number, Comparable#RAW, Comparable#RAW) , public void setItemCount(int)
    Expression d1.setValue(new Integer(3),"V3","C2") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression b2.setItemCount(111) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression d1.setValue(new Integer(3),"V3","C2") is a void method call, and thus it cannot be parameterized
    Expression b2.setItemCount(111) is a void method call, and thus it cannot be parameterized
    9
    b2.setItemCount(111);
    5
    DefaultKeyedValues2DDataset d2 = null;
    5
    DefaultKeyedValues2DDataset d2 = null;
    3
    SimpleHistogramBin b2 = null;
    Differences
    Expression1Expression2Difference
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d2b2VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    3
    SimpleHistogramBin b2 = null;
    6
    try
    4
    try
    7
    d2 = (DefaultKeyedValues2DDataset)d1.clone();
    7
    d2 = (DefaultKeyedValues2DDataset)d1.clone();
    5
    b2 = (SimpleHistogramBin)b1.clone();
    Differences
    Expression1Expression2Difference
    d2b2VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d1b1VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression (DefaultKeyedValues2DDataset)d1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression (SimpleHistogramBin)b1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5
    b2 = (SimpleHistogramBin)b1.clone();
    8
    assertTrue(d1 != d2);
    8
    assertTrue(d1 != d2);
    6
    assertTrue(b1 != b2);
    Differences
    Expression1Expression2Difference
    d1b1VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d2b2VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    6
    assertTrue(b1 != b2);
    9
    assertTrue(d1.getClass() == d2.getClass());
    9
    assertTrue(d1.getClass() == d2.getClass());
    7
    assertTrue(b1.getClass() == b2.getClass());
    Differences
    Expression1Expression2Difference
    d1b1VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d2b2VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    7
    assertTrue(b1.getClass() == b2.getClass());
    10
    assertTrue(d1.equals(d2));
    10
    assertTrue(d1.equals(d2));
    8
    assertTrue(b1.equals(b2));
    Differences
    Expression1Expression2Difference
    d2b2VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    d1b1VARIABLE_NAME_MISMATCH
    org.jfree.data.general.DefaultKeyedValues2DDatasetorg.jfree.data.statistics.SimpleHistogramBinSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression d2 cannot be unified with expression b2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    Expression d2 cannot be unified with expression b2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    Expression d1 cannot be unified with expression b1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    8
    assertTrue(b1.equals(b2));
                                                                  
    10
    assertFalse(b1.equals(b2));
    Preondition Violations
    Unmatched statement assertFalse(b1.equals(b2)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    10
    assertFalse(b1.equals(b2));
    Precondition Violations (30)
    Row Violation
    1Expression new SimpleHistogramBin(1.1,2.2,false,true) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression new SimpleHistogramBin(1.1,2.2,false,true) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression d1.setValue(new Integer(1),"V1","C1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression b1.setItemCount(99) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5Expression d1.setValue(new Integer(1),"V1","C1") is a void method call, and thus it cannot be parameterized
    6Expression b1.setItemCount(99) is a void method call, and thus it cannot be parameterized
    7Expression d1 cannot be unified with expression b1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void setValue(java.lang.Number, Comparable#RAW, Comparable#RAW) , public void setItemCount(int)
    8Expression d1.setValue(new Integer(1),"V1","C1") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9Expression b1.setItemCount(99) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    10Expression d1.setValue(new Integer(1),"V1","C1") is a void method call, and thus it cannot be parameterized
    11Expression b1.setItemCount(99) is a void method call, and thus it cannot be parameterized
    12Unmatched statement d1.setValue(null,"V2","C1"); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    13Expression d1.setValue(new Integer(3),"V3","C2") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    14Expression b2.setItemCount(111) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    15Expression d1.setValue(new Integer(3),"V3","C2") is a void method call, and thus it cannot be parameterized
    16Expression b2.setItemCount(111) is a void method call, and thus it cannot be parameterized
    17Expression d1 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    18Expression b2 cannot be parameterized, because it has dependencies to/from statements that will be extracted
    19Expression d1 cannot be unified with expression b2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public void setValue(java.lang.Number, Comparable#RAW, Comparable#RAW) , public void setItemCount(int)
    20Expression d1.setValue(new Integer(3),"V3","C2") cannot be parameterized, because it has dependencies to/from statements that will be extracted
    21Expression b2.setItemCount(111) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    22Expression d1.setValue(new Integer(3),"V3","C2") is a void method call, and thus it cannot be parameterized
    23Expression b2.setItemCount(111) is a void method call, and thus it cannot be parameterized
    24Expression (DefaultKeyedValues2DDataset)d1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    25Expression (SimpleHistogramBin)b1.clone() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    26Expression d2 cannot be unified with expression b2 , because common superclass type org.jfree.util.PublicCloneable cannot be passed as an argument to public boolean equals(java.lang.Object)
    27Expression d2 cannot be unified with expression b2 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    28Expression d1 cannot be unified with expression b1 , because common superclass org.jfree.util.PublicCloneable does not declare member(s) public boolean equals(java.lang.Object)
    29Unmatched statement assertFalse(b1.equals(b2)); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted
    30Clone fragment #1 returns variables d1 , while Clone fragment #2 returns variables b1, b2