String input = FolderTstHelper.getString(0); System.out.println("input=" + input); // create stream from string ByteArrayInputStream inputStream = FolderTstHelper.getByteArrayInputStream(input); // add stream to folder Object uid = getSourceFolder().addMessage(inputStream); // create Command reference MailFolderCommandReference ref = new MailFolderCommandReference( getSourceFolder(), getDestFolder(), new Object[] { uid }); // create copy command MoveMessageCommand command = new MoveMessageCommand(ref); // execute command -> use mock object class as worker which does nothing command.execute(NullWorkerStatusController.getInstance()); // get inputstream of this message from folder InputStream outputStream = destFolder.getMessageSourceStream(uid); // create string from inputstream String output = FolderTstHelper.getStringFromInputStream(outputStream); // compare both messages assertEquals(input, output);
String input = FolderTstHelper.getString(0); System.out.println("input=" + input); // create stream from string ByteArrayInputStream inputStream = FolderTstHelper .getByteArrayInputStream(input); // add stream to folder Object uid = getSourceFolder().addMessage(inputStream); // create Command reference MailFolderCommandReference ref = new MailFolderCommandReference( getSourceFolder(), getDestFolder(), new Object[] { uid }); // create copy command CopyMessageCommand command = new CopyMessageCommand(ref); // execute command -> use mock object class as worker which does // nothing command.execute(NullWorkerStatusController.getInstance()); // get inputstream of this message from folder InputStream outputStream = destFolder.getMessageSourceStream(uid); // create string from inputstream String output = FolderTstHelper.getStringFromInputStream(outputStream); // compare both messages assertEquals(input, output);
Clone fragments detected by clone detection tool
File path: /columba-1.4-src/mail/src/test/java/org/columba/mail/folder/command/MoveMessageTest.java File path: /columba-1.4-src/mail/src/test/java/org/columba/mail/folder/command/CopyMessageCommandTest.java
Method name: void testMoveMessage() Method name: void testCopyMessage()
Number of AST nodes: 10 Number of AST nodes: 10
1
String input = FolderTstHelper.getString(0);
1
String input = FolderTstHelper.getString(0);
2
        System.out.println("input=" + input);
2
		System.out.println("input=" + input);
3
        // create stream from string
3
		// create stream from string
4
        ByteArrayInputStream inputStream = FolderTstHelper
4
		ByteArrayInputStream inputStream = FolderTstHelper
5
.getByteArrayInputStream(input);
5
				.getByteArrayInputStream(input);
6
        // add stream to folder
6
		// add stream to folder
7
        Object uid = getSourceFolder().addMessage(inputStream);
7
		Object uid = getSourceFolder().addMessage(inputStream);
8
//      create Command reference
8
		// create Command reference
9
        MailFolderCommandReference ref = new MailFolderCommandReference(
9
		MailFolderCommandReference ref = new MailFolderCommandReference(
10
				getSourceFolder(), getDestFolder(), new Object[] { uid });
10
				getSourceFolder(), getDestFolder(), new Object[] { uid });
11
        // create copy command
11
		// create copy command
12
        MoveMessageCommand command = new MoveMessageCommand(ref);
12
		CopyMessageCommand command = new CopyMessageCommand(ref);
13
        // execute command -> use mock object class as worker which does
13
		// execute command -> use mock object class as worker which does
14
 nothing
14
		// nothing
15
        command.execute(NullWorkerStatusController.getInstance());
15
		command.execute(NullWorkerStatusController.getInstance());
16
        // get inputstream of this message from folder
16
		// get inputstream of this message from folder
17
        InputStream outputStream = destFolder.getMessageSourceStream(uid);
17
		InputStream outputStream = destFolder.getMessageSourceStream(uid);
18
        // create string from inputstream
18
		// create string from inputstream
19
        String output = FolderTstHelper.getStringFromInputStream(outputStream);
19
		String output = FolderTstHelper.getStringFromInputStream(outputStream);
20
        // compare both messages
20
		// compare both messages
21
        assertEquals(input, output);
21
		assertEquals(input, output);
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.0
Clones locationClones are in different classes having the same super class
Number of node comparisons56
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements10
    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
    String input = FolderTstHelper.getString(0);
    1
    String input = FolderTstHelper.getString(0);
    2
    System.out.println("input=" + input);
    2
    System.out.println("input=" + input);
    3
    ByteArrayInputStream inputStream = FolderTstHelper.getByteArrayInputStream(input);
    3
    ByteArrayInputStream inputStream = FolderTstHelper.getByteArrayInputStream(input);
    4
    Object uid = getSourceFolder().addMessage(inputStream);
    4
    Object uid = getSourceFolder().addMessage(inputStream);
    5
    MailFolderCommandReference ref = new MailFolderCommandReference(getSourceFolder(), getDestFolder(), new Object[] {uid});
    5
    MailFolderCommandReference ref = new MailFolderCommandReference(getSourceFolder(), getDestFolder(), new Object[] {uid});
    6
    MoveMessageCommand command = new MoveMessageCommand(ref);
    6
    MoveMessageCommand command = new MoveMessageCommand(ref);
    6
    CopyMessageCommand command = new CopyMessageCommand(ref);
    Differences
    Expression1Expression2Difference
    org.columba.mail.folder.command.MoveMessageCommandorg.columba.mail.folder.command.CopyMessageCommandSUBCLASS_TYPE_MISMATCH
    org.columba.mail.folder.command.MoveMessageCommandorg.columba.mail.folder.command.CopyMessageCommandSUBCLASS_TYPE_MISMATCH
    org.columba.mail.folder.command.MoveMessageCommandorg.columba.mail.folder.command.CopyMessageCommandSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression new MoveMessageCommand(ref) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression new CopyMessageCommand(ref) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6
    CopyMessageCommand command = new CopyMessageCommand(ref);
    7
    command.execute(NullWorkerStatusController.getInstance());
    7
    command.execute(NullWorkerStatusController.getInstance());
    7
    command.execute(NullWorkerStatusController.getInstance());
    Differences
    Expression1Expression2Difference
    org.columba.mail.folder.command.MoveMessageCommandorg.columba.mail.folder.command.CopyMessageCommandSUBCLASS_TYPE_MISMATCH
    7
    command.execute(NullWorkerStatusController.getInstance());
    8
    InputStream outputStream = destFolder.getMessageSourceStream(uid);
    8
    InputStream outputStream = destFolder.getMessageSourceStream(uid);
    9
    String output = FolderTstHelper.getStringFromInputStream(outputStream);
    9
    String output = FolderTstHelper.getStringFromInputStream(outputStream);
    10
    assertEquals(input, output);
    10
    assertEquals(input, output);
    Precondition Violations (3)
    Row Violation
    1Expression new MoveMessageCommand(ref) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression new CopyMessageCommand(ref) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Clone fragment #1 returns variables inputStream, outputStream , while Clone fragment #2 returns variables inputStream, outputStream