if (isUnixStyle) { assertEquals("no drives on Unix", 4, l.length); assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c")); assertEquals("/test", l[1]); assertTrue("d resolved relative to project\'s basedir", l[2].endsWith("/d")); assertEquals("/programs", l[3]); } else if (isNetWare) { assertEquals("volumes on NetWare", 2, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); assertEquals("d:\\programs", l[1].toLowerCase(Locale.US)); } else { assertEquals("drives on DOS", 2, l.length); assertEquals("c:\\test", l[0].toLowerCase(Locale.US)); assertEquals("d:\\programs", l[1].toLowerCase(Locale.US)); }
if (isUnixStyle) { assertEquals("no drives on Unix", 3, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/SYS")); assertEquals("/JAVA/lib/rt.jar", l[1]); assertEquals("/JAVA/lib/classes.zip", l[2]); } else if (isNetWare) { assertEquals("volumes on NetWare", 2, l.length); assertEquals("sys:\\java\\lib\\rt.jar", l[0].toLowerCase(Locale.US)); assertEquals("sys:\\java\\lib\\classes.zip", l[1].toLowerCase(Locale.US)); } else { assertEquals("no multiple character-length volumes on Windows", 3, l.length); assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\SYS")); assertTrue("java/lib/rt.jar resolved relative to project\'s basedir", l[1].endsWith("\\JAVA\\lib\\rt.jar")); assertTrue("java/lib/classes.zip resolved relative to project\'s basedir", l[2].endsWith("\\JAVA\\lib\\classes.zip")); }
Clone fragments detected by clone detection tool
File path: /apache-ant-1.7.0/src/tests/junit/org/apache/tools/ant/types/PathTest.java File path: /apache-ant-1.7.0/src/tests/junit/org/apache/tools/ant/types/PathTest.java
Method name: void testConstructorWindowsStyle() Method name: void testConstructorNetWareStyle()
Number of AST nodes: 13 Number of AST nodes: 13
1
if (isUnixStyle) {
1
if (isUnixStyle) {
2
            assertEquals("no drives on Unix", 4, l.length);
2
            assertEquals("no drives on Unix", 3, l.length);
3
            assertTrue("c resolved relative to project\'s basedir",
3
            assertTrue("sys resolved relative to project\'s basedir",
4
                   l[0].endsWith("/c"));
4
                   l[0].endsWith("/SYS"));
5
            assertEquals("/test", l[1]);
5
            assertEquals("/
6
            assertTrue("d resolved relative to project\'s basedir",
7
                   l[2].endsWith("/d"));
6
JAVA/lib/rt.jar", l[1]);
8
            assertEquals("/programs", l[3]);
7
            assertEquals("/JAVA/lib/classes.zip", l[2]);
9
        } else if (isNetWare) {
8
        } else if (isNetWare) {
10
            assertEquals("volumes on NetWare", 2, l.length);
9
            assertEquals("volumes on NetWare", 2, l.length);
11
            assertEquals("c:\\test", l[0].toLowerCase(Locale.US));
10
            assertEquals("sys:\\java\\lib\\rt.jar", l[0].toLowerCase(Locale.US));
12
            assertEquals("d:\\programs", l[1].toLowerCase(Locale.US));
11
            assertEquals("sys:\\java\\lib\\classes.zip", l[1].toLowerCase(Locale.US));
13
        } else {
12
        } else {
14
            assertEquals("drives on DOS", 2, l.length);
13
            assertEquals("no multiple character-length volumes on Windows", 3, l.length);
15
            assertEquals("c:\\test", l[0].toLowerCase(Locale.US));
14
            assert
16
            assertEquals("d:\\programs",
15
True("sys resolved relative to project\'s basedir",
16
                   l[0].endsWith("\\SYS"));
17
            assertTrue("java/lib/rt.jar resolved relative to project\'s basedir",
18
                   l[1].endsWith("\\JAVA\\lib\\rt.jar"));
19
            assertTrue("java/lib/classes.zip resolved relative to project\'s basedir",
17
 l[1].toLowerCase(Locale.US));
20
                   l[2].endsWith("\\JAVA\\lib\\classes.zip"));
18
        }
21
        }
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 declared in the same class
Number of node comparisons135
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements11
    Number of unmapped statements in the first code fragment2
    Number of unmapped statements in the second code fragment2
    Time elapsed for statement mapping (ms)16.9
    Clone typeType 3
    Mapped Statements
    ID Statement ID Statement
    26
    if (isUnixStyle)
    61
    if (isUnixStyle)
    27
    assertEquals("no drives on Unix", 4, l.length);
    27
    assertEquals("no drives on Unix", 4, l.length);
    65
    assertEquals("/JAVA/lib/classes.zip", l[2]);
    Differences
    Expression1Expression2Difference
    assertEquals("no drives on Unix",4,l.length)assertEquals("/JAVA/lib/classes.zip",l[2])ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression assertEquals("no drives on Unix",4,l.length) is a void method call, and thus it cannot be parameterized
    Expression assertEquals("/JAVA/lib/classes.zip",l[2]) is a void method call, and thus it cannot be parameterized
    65
    assertEquals("/JAVA/lib/classes.zip", l[2]);
    28
    assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c"));
    28
    assertTrue("c resolved relative to project\'s basedir", l[0].endsWith("/c"));
    63
    assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/SYS"));
    Differences
    Expression1Expression2Difference
    "c resolved relative to project\'s basedir""sys resolved relative to project\'s basedir"LITERAL_VALUE_MISMATCH
    "/c""/SYS"LITERAL_VALUE_MISMATCH
    63
    assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("/SYS"));
    29
    assertEquals("/test", l[1]);
    29
    assertEquals("/test", l[1]);
    64
    assertEquals("/JAVA/lib/rt.jar", l[1]);
    Differences
    Expression1Expression2Difference
    "/test""/JAVA/lib/rt.jar"LITERAL_VALUE_MISMATCH
    64
    assertEquals("/JAVA/lib/rt.jar", l[1]);
    30
    assertTrue("d resolved relative to project\'s basedir", l[2].endsWith("/d"));
                                                                                                                                                                    
    31
    assertEquals("/programs", l[3]);
    31
    assertEquals("/programs", l[3]);
    62
    assertEquals("no drives on Unix", 3, l.length);
    Differences
    Expression1Expression2Difference
    assertEquals("/programs",l[3])assertEquals("no drives on Unix",3,l.length)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression assertEquals("/programs",l[3]) is a void method call, and thus it cannot be parameterized
    Expression assertEquals("no drives on Unix",3,l.length) is a void method call, and thus it cannot be parameterized
    62
    assertEquals("no drives on Unix", 3, l.length);
    32
    else if (isNetWare)
    66
    else if (isNetWare)
    33
    assertEquals("volumes on NetWare", 2, l.length);
    67
    assertEquals("volumes on NetWare", 2, l.length);
    34
    assertEquals("c:\\test", l[0].toLowerCase(Locale.US));
    34
    assertEquals("c:\\test", l[0].toLowerCase(Locale.US));
    68
    assertEquals("sys:\\java\\lib\\rt.jar", l[0].toLowerCase(Locale.US));
    Differences
    Expression1Expression2Difference
    "c:\\test""sys:\\java\\lib\\rt.jar"LITERAL_VALUE_MISMATCH
    68
    assertEquals("sys:\\java\\lib\\rt.jar", l[0].toLowerCase(Locale.US));
    35
    assertEquals("d:\\programs", l[1].toLowerCase(Locale.US));
    35
    assertEquals("d:\\programs", l[1].toLowerCase(Locale.US));
    69
    assertEquals("sys:\\java\\lib\\classes.zip", l[1].toLowerCase(Locale.US));
    Differences
    Expression1Expression2Difference
    "d:\\programs""sys:\\java\\lib\\classes.zip"LITERAL_VALUE_MISMATCH
    69
    assertEquals("sys:\\java\\lib\\classes.zip", l[1].toLowerCase(Locale.US));
    else
    else
    36
    assertEquals("drives on DOS", 2, l.length);
    36
    assertEquals("drives on DOS", 2, l.length);
    71
    assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\SYS"));
    Differences
    Expression1Expression2Difference
    assertEqualsassertTrueMETHOD_INVOCATION_NAME_MISMATCH
    assertEquals("drives on DOS",2,l.length)assertTrue("sys resolved relative to project\'s basedir",l[0].endsWith("\\SYS"))ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression assertEquals("drives on DOS",2,l.length) is a void method call, and thus it cannot be parameterized
    Expression assertTrue("sys resolved relative to project\'s basedir",l[0].endsWith("\\SYS")) is a void method call, and thus it cannot be parameterized
    Expression assertEquals("drives on DOS",2,l.length) is a void method call, and thus it cannot be parameterized
    Expression assertTrue("sys resolved relative to project\'s basedir",l[0].endsWith("\\SYS")) is a void method call, and thus it cannot be parameterized
    71
    assertTrue("sys resolved relative to project\'s basedir", l[0].endsWith("\\SYS"));
    37
    assertEquals("c:\\test", l[0].toLowerCase(Locale.US));
    37
    assertEquals("c:\\test", l[0].toLowerCase(Locale.US));
    70
    assertEquals("no multiple character-length volumes on Windows", 3, l.length);
    Differences
    Expression1Expression2Difference
    assertEquals("c:\\test",l[0].toLowerCase(Locale.US))assertEquals("no multiple character-length volumes on Windows",3,l.length)ARGUMENT_NUMBER_MISMATCH
    Preondition Violations
    Expression assertEquals("c:\\test",l[0].toLowerCase(Locale.US)) is a void method call, and thus it cannot be parameterized
    Expression assertEquals("no multiple character-length volumes on Windows",3,l.length) is a void method call, and thus it cannot be parameterized
    70
    assertEquals("no multiple character-length volumes on Windows", 3, l.length);
    38
    assertEquals("d:\\programs", l[1].toLowerCase(Locale.US));
                                                                                                                              
                                                                                                                                                                                                                                  
    72
    assertTrue("java/lib/rt.jar resolved relative to project\'s basedir", l[1].endsWith("\\JAVA\\lib\\rt.jar"));
                                                                                                                                                                                                                                                      
    73
    assertTrue("java/lib/classes.zip resolved relative to project\'s basedir", l[2].endsWith("\\JAVA\\lib\\classes.zip"));
    Precondition Violations (10)
    Row Violation
    1Expression assertEquals("no drives on Unix",4,l.length) is a void method call, and thus it cannot be parameterized
    2Expression assertEquals("/JAVA/lib/classes.zip",l[2]) is a void method call, and thus it cannot be parameterized
    3Expression assertEquals("/programs",l[3]) is a void method call, and thus it cannot be parameterized
    4Expression assertEquals("no drives on Unix",3,l.length) is a void method call, and thus it cannot be parameterized
    5Expression assertEquals("drives on DOS",2,l.length) is a void method call, and thus it cannot be parameterized
    6Expression assertTrue("sys resolved relative to project\'s basedir",l[0].endsWith("\\SYS")) is a void method call, and thus it cannot be parameterized
    7Expression assertEquals("drives on DOS",2,l.length) is a void method call, and thus it cannot be parameterized
    8Expression assertTrue("sys resolved relative to project\'s basedir",l[0].endsWith("\\SYS")) is a void method call, and thus it cannot be parameterized
    9Expression assertEquals("c:\\test",l[0].toLowerCase(Locale.US)) is a void method call, and thus it cannot be parameterized
    10Expression assertEquals("no multiple character-length volumes on Windows",3,l.length) is a void method call, and thus it cannot be parameterized