MyDateAxis axis = new MyDateAxis("Month"); Month nov2006 = new Month(11, 2006); Month dec2006 = new Month(12, 2006); // five dates to check... Date d0 = new Date(nov2006.getFirstMillisecond()); Date d1 = new Date(nov2006.getFirstMillisecond() + 500L); Date d2 = new Date(nov2006.getMiddleMillisecond()); Date d3 = new Date(nov2006.getMiddleMillisecond() + 500L); Date d4 = new Date(nov2006.getLastMillisecond()); Date end = new Date(dec2006.getLastMillisecond()); DateTickUnit unit = new DateTickUnit(DateTickUnit.MONTH, 3); axis.setTickUnit(unit); // START: check d0 and d1 axis.setTickMarkPosition(DateTickMarkPosition.START); axis.setRange(d0, end); Date psd = axis.previousStandardDate(d0, unit); Date nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d0.getTime()); assertTrue(nsd.getTime() >= d0.getTime()); axis.setRange(d1, end); psd = axis.previousStandardDate(d1, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d1.getTime()); assertTrue(nsd.getTime() >= d1.getTime()); // MIDDLE: check d1, d2 and d3 axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); axis.setRange(d1, end); psd = axis.previousStandardDate(d1, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d1.getTime()); assertTrue(nsd.getTime() >= d1.getTime()); axis.setRange(d2, end); psd = axis.previousStandardDate(d2, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d2.getTime()); assertTrue(nsd.getTime() >= d2.getTime()); axis.setRange(d3, end); psd = axis.previousStandardDate(d3, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d3.getTime()); assertTrue(nsd.getTime() >= d3.getTime()); // END: check d3 and d4 axis.setTickMarkPosition(DateTickMarkPosition.END); axis.setRange(d3, end); psd = axis.previousStandardDate(d3, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d3.getTime()); assertTrue(nsd.getTime() >= d3.getTime()); axis.setRange(d4, end); psd = axis.previousStandardDate(d4, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d4.getTime()); assertTrue(nsd.getTime() >= d4.getTime());
MyDateAxis axis = new MyDateAxis("Hour"); Hour h0 = new Hour(12, 1, 4, 2007); Hour h1 = new Hour(13, 1, 4, 2007); // five dates to check... Date d0 = new Date(h0.getFirstMillisecond()); Date d1 = new Date(h0.getFirstMillisecond() + 500L); Date d2 = new Date(h0.getMiddleMillisecond()); Date d3 = new Date(h0.getMiddleMillisecond() + 500L); Date d4 = new Date(h0.getLastMillisecond()); Date end = new Date(h1.getLastMillisecond()); DateTickUnit unit = new DateTickUnit(DateTickUnit.HOUR, 6); axis.setTickUnit(unit); // START: check d0 and d1 axis.setTickMarkPosition(DateTickMarkPosition.START); axis.setRange(d0, end); Date psd = axis.previousStandardDate(d0, unit); Date nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d0.getTime()); assertTrue(nsd.getTime() >= d0.getTime()); axis.setRange(d1, end); psd = axis.previousStandardDate(d1, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d1.getTime()); assertTrue(nsd.getTime() >= d1.getTime()); // MIDDLE: check d1, d2 and d3 axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); axis.setRange(d1, end); psd = axis.previousStandardDate(d1, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d1.getTime()); assertTrue(nsd.getTime() >= d1.getTime()); axis.setRange(d2, end); psd = axis.previousStandardDate(d2, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d2.getTime()); assertTrue(nsd.getTime() >= d2.getTime()); axis.setRange(d3, end); psd = axis.previousStandardDate(d3, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d3.getTime()); assertTrue(nsd.getTime() >= d3.getTime()); // END: check d3 and d4 axis.setTickMarkPosition(DateTickMarkPosition.END); axis.setRange(d3, end); psd = axis.previousStandardDate(d3, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d3.getTime()); assertTrue(nsd.getTime() >= d3.getTime()); axis.setRange(d4, end); psd = axis.previousStandardDate(d4, unit); nsd = unit.addToDate(psd); assertTrue(psd.getTime() < d4.getTime()); assertTrue(nsd.getTime() >= d4.getTime());
Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/tests/org/jfree/chart/axis/junit/DateAxisTests.java File path: /jfreechart-1.0.10/tests/org/jfree/chart/axis/junit/DateAxisTests.java
Method name: void testPreviousStandardDateMonthB() Method name: void testPreviousStandardDateHourB()
Number of AST nodes: 49 Number of AST nodes: 49
1
MyDateAxis axis = new MyDateAxis("Month");
1
MyDateAxis axis = new MyDateAxis("Hour");
2
        Month nov2006 = new Month(11, 2006);
2
        Hour h0 = new Hour(12, 1, 4, 2007);
3
        Month dec2006 = new Month(12, 2006);
3
        Hour h1 = new Hour(13, 1, 4, 2007);
4
        
4
        
5
        // five dates to check...
5
        // five dates to check...
6
        Date d0 = new Date(nov2006.getFirstMillisecond());
6
        Date d0 = new Date(h0.getFirstMillisecond());
7
        Date d1 = new Date(nov2006.getFirstMillisecond() + 500L);
7
        Date d1 = new Date(h0.getFirstMillisecond() + 500L);
8
        Date d2 = new Date(nov2006.getMiddleMillisecond());
8
        Date d2 = new Date(h0.getMiddleMillisecond());
9
        Date d3 = new Date(nov2006.getMiddleMillisecond() + 500L);
9
        Date d3 = new Date(h0.getMiddleMillisecond() + 500L);
10
        Date d4 = new Date(nov2006.getLastMillisecond());
10
        Date d4 = new Date(h0.getLastMillisecond());
11
        
11
     
12
        Date end = new Date(dec2006.getLastMillisecond());
12
        Date end = new Date(h1.getLastMillisecond());
13
        
13
        
14
        DateTickUnit unit = new DateTickUnit(DateTickUnit.MONTH, 3);
14
        DateTickUnit unit = new DateTickUnit(DateTickUnit.HOUR, 6);
15
        axis.setTickUnit(unit);
15
        axis.setTickUnit(unit);
16
        // START: check d0 and d1
16
        // START: check d0 and d1
17
        axis.setTickMarkPosition(DateTickMarkPosition.START);
17
        axis.setTickMarkPosition(DateTickMarkPosition.START);
18
        axis.setRange(d0, end);
18
        axis.setRange(d0, end);
19
        Date psd = axis.previousStandardDate(d0, unit);
19
        Date psd = axis.previousStandardDate(d0, unit);
20
        Date nsd = unit.addToDate(psd);
20
        Date nsd = unit.addToDate(psd);
21
        assertTrue(psd.getTime() < d0.getTime());
21
        assertTrue(psd.getTime() < d0.getTime());
22
        assertTrue(nsd.getTime() >= d0.getTime());
22
        assertTrue(nsd.getTime() >= d0.getTime());
23
        axis.setRange(d1, end);
23
        axis.setRange(d1, end);
24
        psd = axis.previousStandardDate(d1, unit);
24
        psd = axis.previousStandardDate(d1, unit);
25
        nsd = unit.addToDate(psd);
25
        nsd = unit.addToDate(psd);
26
        assertTrue(psd.getTime() < d1.getTime());
26
        assertTrue(psd.getTime() < d1.getTime());
27
        assertTrue(nsd.getTime() >= d1.getTime());
27
        assertTrue(nsd.getTime() >= d1.getTime());
28
        // MIDDLE: check d1, d2 and d3
28
        // MIDDLE: check d1, d2 and d3
29
        axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
29
        axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
30
        
30
        
31
        axis.setRange(d1, end);
31
        axis.setRange(d1, end);
32
        psd = axis.previousStandardDate(d1, unit);
32
        psd = axis.previousStandardDate(d1, unit);
33
        nsd = unit.addToDate(psd);
33
        nsd = unit.addToDate(psd);
34
        assertTrue(psd.getTime() < d1.getTime());
34
        assertTrue(psd.getTime() < d1.getTime());
35
        assertTrue(nsd.getTime() >= d1.getTime());
35
        assertTrue(nsd.getTime() >= d1.getTime());
36
        
36
        
37
        axis.setRange(d2, end);
37
        axis.setRange(d2, end);
38
        psd = axis.previousStandardDate(d2, unit);
38
        psd = axis.previousStandardDate(d2, unit);
39
        nsd = unit.addToDate(psd);
39
        nsd = unit.addToDate(psd);
40
        assertTrue(psd.getTime() < d2.getTime());
40
        assertTrue(psd.getTime() < d2.getTime());
41
        assertTrue(nsd.getTime() >= d2.getTime());
41
        assertTrue(nsd.getTime() >= d2.getTime());
42
        axis.setRange(d3, end);
42
        axis.setRange(d3, end);
43
        psd = axis.previousStandardDate(d3, unit);
43
        psd = axis.previousStandardDate(d3, unit);
44
        nsd = unit.addToDate(psd);
44
        nsd = unit.addToDate(psd);
45
        assertTrue(psd.getTime() < d3.getTime());
45
        assertTrue(psd.getTime() < d3.getTime());
46
        assertTrue(nsd.getTime() >= d3.getTime());
46
        assertTrue(nsd.getTime() >= d3.getTime());
47
        // END: check d3 and d4
47
        // END: check d3 and d4
48
        axis.setTickMarkPosition(DateTickMarkPosition.END);
48
        axis.setTickMarkPosition(DateTickMarkPosition.END);
49
        
49
        
50
        axis.setRange(d3, end);
50
        axis.setRange(d3, end);
51
        psd = axis.previousStandardDate(d3, unit);
51
        psd = axis.previousStandardDate(d3, unit);
52
        nsd = unit.addToDate(psd);
52
        nsd = unit.addToDate(psd);
53
        assertTrue(psd.getTime() < d3.getTime());
53
        assertTrue(psd.getTime() < d3.getTime());
54
        assertTrue(nsd.getTime() >= d3.getTime());
54
        assertTrue(nsd.getTime() >= d3.getTime());
55
        
55
        
56
        axis.setRange(d4, end);
56
        axis.setRange(d4, end);
57
        psd = axis.previousStandardDate(d4, unit);
57
        psd = axis.previousStandardDate(d4, unit);
58
        nsd = unit.addToDate(psd);
58
        nsd = unit.addToDate(psd);
59
        assertTrue(psd.getTime() < d4.getTime());
59
        assertTrue(psd.getTime() < d4.getTime());
60
        assertTrue(nsd.getTime() >= d4.getTime());
60
        assertTrue(nsd.getTime() >= d4.getTime());
Summary
Number of common nesting structure subtrees1
Number of refactorable cases1
Number of non-refactorable cases0
Time elapsed for finding largest common nesting structure subtrees (ms)0.0
Clones locationClones are declared in the same class
Number of node comparisons765
  1. {Refactorable}
    Mapping Summary
    Number of mapped statements49
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)0.0
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    MyDateAxis axis = new MyDateAxis("Month");
    1
    MyDateAxis axis = new MyDateAxis("Month");
    1
    MyDateAxis axis = new MyDateAxis("Hour");
    Differences
    Expression1Expression2Difference
    "Month""Hour"LITERAL_VALUE_MISMATCH
    1
    MyDateAxis axis = new MyDateAxis("Hour");
    2
    Month nov2006 = new Month(11, 2006);
    2
    Month nov2006 = new Month(11, 2006);
    2
    Hour h0 = new Hour(12, 1, 4, 2007);
    Differences
    Expression1Expression2Difference
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    nov2006h0VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    new Month(11,2006)new Hour(12,1,4,2007)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression new Month(11,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new Hour(12,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new Month(11,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new Hour(12,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2
    Hour h0 = new Hour(12, 1, 4, 2007);
    3
    Month dec2006 = new Month(12, 2006);
    3
    Month dec2006 = new Month(12, 2006);
    3
    Hour h1 = new Hour(13, 1, 4, 2007);
    Differences
    Expression1Expression2Difference
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    dec2006h1VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    new Month(12,2006)new Hour(13,1,4,2007)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression new Month(12,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new Hour(13,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new Month(12,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new Hour(13,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3
    Hour h1 = new Hour(13, 1, 4, 2007);
    4
    Date d0 = new Date(nov2006.getFirstMillisecond());
    4
    Date d0 = new Date(nov2006.getFirstMillisecond());
    4
    Date d0 = new Date(h0.getFirstMillisecond());
    Differences
    Expression1Expression2Difference
    nov2006h0VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    4
    Date d0 = new Date(h0.getFirstMillisecond());
    5
    Date d1 = new Date(nov2006.getFirstMillisecond() + 500L);
    5
    Date d1 = new Date(nov2006.getFirstMillisecond() + 500L);
    5
    Date d1 = new Date(h0.getFirstMillisecond() + 500L);
    Differences
    Expression1Expression2Difference
    nov2006h0VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    5
    Date d1 = new Date(h0.getFirstMillisecond() + 500L);
    6
    Date d2 = new Date(nov2006.getMiddleMillisecond());
    6
    Date d2 = new Date(nov2006.getMiddleMillisecond());
    6
    Date d2 = new Date(h0.getMiddleMillisecond());
    Differences
    Expression1Expression2Difference
    nov2006h0VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    6
    Date d2 = new Date(h0.getMiddleMillisecond());
    7
    Date d3 = new Date(nov2006.getMiddleMillisecond() + 500L);
    7
    Date d3 = new Date(nov2006.getMiddleMillisecond() + 500L);
    7
    Date d3 = new Date(h0.getMiddleMillisecond() + 500L);
    Differences
    Expression1Expression2Difference
    nov2006h0VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    7
    Date d3 = new Date(h0.getMiddleMillisecond() + 500L);
    8
    Date d4 = new Date(nov2006.getLastMillisecond());
    8
    Date d4 = new Date(nov2006.getLastMillisecond());
    8
    Date d4 = new Date(h0.getLastMillisecond());
    Differences
    Expression1Expression2Difference
    nov2006h0VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    8
    Date d4 = new Date(h0.getLastMillisecond());
    9
    Date end = new Date(dec2006.getLastMillisecond());
    9
    Date end = new Date(dec2006.getLastMillisecond());
    9
    Date end = new Date(h1.getLastMillisecond());
    Differences
    Expression1Expression2Difference
    dec2006h1VARIABLE_NAME_MISMATCH
    org.jfree.data.time.Monthorg.jfree.data.time.HourSUBCLASS_TYPE_MISMATCH
    9
    Date end = new Date(h1.getLastMillisecond());
    10
    DateTickUnit unit = new DateTickUnit(DateTickUnit.MONTH, 3);
    10
    DateTickUnit unit = new DateTickUnit(DateTickUnit.MONTH, 3);
    10
    DateTickUnit unit = new DateTickUnit(DateTickUnit.HOUR, 6);
    Differences
    Expression1Expression2Difference
    MONTHHOURVARIABLE_NAME_MISMATCH
    36LITERAL_VALUE_MISMATCH
    10
    DateTickUnit unit = new DateTickUnit(DateTickUnit.HOUR, 6);
    11
    axis.setTickUnit(unit);
    11
    axis.setTickUnit(unit);
    12
    axis.setTickMarkPosition(DateTickMarkPosition.START);
    12
    axis.setTickMarkPosition(DateTickMarkPosition.START);
    13
    axis.setRange(d0, end);
    13
    axis.setRange(d0, end);
    14
    Date psd = axis.previousStandardDate(d0, unit);
    14
    Date psd = axis.previousStandardDate(d0, unit);
    15
    Date nsd = unit.addToDate(psd);
    15
    Date nsd = unit.addToDate(psd);
    16
    assertTrue(psd.getTime() < d0.getTime());
    16
    assertTrue(psd.getTime() < d0.getTime());
    17
    assertTrue(nsd.getTime() >= d0.getTime());
    17
    assertTrue(nsd.getTime() >= d0.getTime());
    18
    axis.setRange(d1, end);
    18
    axis.setRange(d1, end);
    19
    psd = axis.previousStandardDate(d1, unit);
    19
    psd = axis.previousStandardDate(d1, unit);
    20
    nsd = unit.addToDate(psd);
    20
    nsd = unit.addToDate(psd);
    21
    assertTrue(psd.getTime() < d1.getTime());
    21
    assertTrue(psd.getTime() < d1.getTime());
    22
    assertTrue(nsd.getTime() >= d1.getTime());
    22
    assertTrue(nsd.getTime() >= d1.getTime());
    23
    axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
    23
    axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
    24
    axis.setRange(d1, end);
    24
    axis.setRange(d1, end);
    25
    psd = axis.previousStandardDate(d1, unit);
    25
    psd = axis.previousStandardDate(d1, unit);
    26
    nsd = unit.addToDate(psd);
    26
    nsd = unit.addToDate(psd);
    27
    assertTrue(psd.getTime() < d1.getTime());
    27
    assertTrue(psd.getTime() < d1.getTime());
    28
    assertTrue(nsd.getTime() >= d1.getTime());
    28
    assertTrue(nsd.getTime() >= d1.getTime());
    29
    axis.setRange(d2, end);
    29
    axis.setRange(d2, end);
    30
    psd = axis.previousStandardDate(d2, unit);
    30
    psd = axis.previousStandardDate(d2, unit);
    31
    nsd = unit.addToDate(psd);
    31
    nsd = unit.addToDate(psd);
    32
    assertTrue(psd.getTime() < d2.getTime());
    32
    assertTrue(psd.getTime() < d2.getTime());
    33
    assertTrue(nsd.getTime() >= d2.getTime());
    33
    assertTrue(nsd.getTime() >= d2.getTime());
    34
    axis.setRange(d3, end);
    34
    axis.setRange(d3, end);
    35
    psd = axis.previousStandardDate(d3, unit);
    35
    psd = axis.previousStandardDate(d3, unit);
    36
    nsd = unit.addToDate(psd);
    36
    nsd = unit.addToDate(psd);
    37
    assertTrue(psd.getTime() < d3.getTime());
    37
    assertTrue(psd.getTime() < d3.getTime());
    38
    assertTrue(nsd.getTime() >= d3.getTime());
    38
    assertTrue(nsd.getTime() >= d3.getTime());
    39
    axis.setTickMarkPosition(DateTickMarkPosition.END);
    39
    axis.setTickMarkPosition(DateTickMarkPosition.END);
    40
    axis.setRange(d3, end);
    40
    axis.setRange(d3, end);
    41
    psd = axis.previousStandardDate(d3, unit);
    41
    psd = axis.previousStandardDate(d3, unit);
    42
    nsd = unit.addToDate(psd);
    42
    nsd = unit.addToDate(psd);
    43
    assertTrue(psd.getTime() < d3.getTime());
    43
    assertTrue(psd.getTime() < d3.getTime());
    44
    assertTrue(nsd.getTime() >= d3.getTime());
    44
    assertTrue(nsd.getTime() >= d3.getTime());
    45
    axis.setRange(d4, end);
    45
    axis.setRange(d4, end);
    46
    psd = axis.previousStandardDate(d4, unit);
    46
    psd = axis.previousStandardDate(d4, unit);
    47
    nsd = unit.addToDate(psd);
    47
    nsd = unit.addToDate(psd);
    48
    assertTrue(psd.getTime() < d4.getTime());
    48
    assertTrue(psd.getTime() < d4.getTime());
    49
    assertTrue(nsd.getTime() >= d4.getTime());
    49
    assertTrue(nsd.getTime() >= d4.getTime());
    Precondition Violations (8)
    Row Violation
    1Expression new Month(11,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression new Hour(12,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression new Month(11,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression new Hour(12,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5Expression new Month(12,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression new Hour(13,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression new Month(12,2006) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    8Expression new Hour(13,1,4,2007) cannot be parameterized, because it has dependencies to/from statements that will be extracted