@Test
 public void testIfNoReplaceHappensWhenNoAbstractPartialClasses() {
   file1AsList.add("public class test {");
   file1AsList.add("}");
   file1AsList.add("public class test2 {");
   file1AsList.add("}");
   file1AsList.add("public class test3 {");
   file1AsList.add("}");
   Assert.assertEquals(file1AsList, fileComparer.replaceAbstractClasses(file1AsList));
 }
 @Test
 public void testIfInvalidClassStructureIsNotReplaced() {
   file1AsList.add("public class test {");
   file1AsList.add("}");
   file1AsList.add("public class test2 {");
   file1AsList.add("}");
   file1AsList.add("test4 public class {");
   file1AsList.add("}");
   file1AsList.add("public class test3 {");
   file1AsList.add("}");
   Assert.assertEquals(file1AsList, fileComparer.replaceAbstractClasses(file1AsList));
 }
  @Test
  public void testOneReplacingAbstractClassesWithImplementation() {
    String abstractclassLine = "public abstract partial class test4 : WebService {";
    String resultingClass = "public interface Itest4SoapBinding {";
    file1AsList.add("public class test {");
    file1AsList.add("}");
    file1AsList.add("public class test2 {");
    file1AsList.add("}");
    file1AsList.add(abstractclassLine);
    file1AsList.add("}");
    file1AsList.add("public abstract class test3 {");
    file1AsList.add("}");

    List<String> linesWithoutAbstractClasses = fileComparer.replaceAbstractClasses(file1AsList);
    Assert.assertEquals(linesWithoutAbstractClasses.size(), file1AsList.size());
    Assert.assertTrue(linesWithoutAbstractClasses.contains(resultingClass));
    Assert.assertFalse(linesWithoutAbstractClasses.contains(abstractclassLine));
  }
  @Test
  public void testReplaceOneAbstractPartialClasses() {
    String partialAbstractclassLine = "public abstract partial class test4 {";
    String resultingInterfaceClass = "public interface Itest4SoapBinding {";
    file1AsList.add("public class test {");
    file1AsList.add("}");
    file1AsList.add("public class test2 {");
    file1AsList.add("}");
    file1AsList.add(partialAbstractclassLine);
    file1AsList.add("}");
    file1AsList.add("public abstract class test3 {");
    file1AsList.add("}");

    List<String> linesWithoutAbstractClasses = fileComparer.replaceAbstractClasses(file1AsList);
    Assert.assertEquals(linesWithoutAbstractClasses.size(), file1AsList.size());
    Assert.assertTrue(linesWithoutAbstractClasses.contains(resultingInterfaceClass));
    Assert.assertFalse(linesWithoutAbstractClasses.contains(partialAbstractclassLine));
  }
  @Test
  public void testOneReplacingAbstractClasses() {
    String abstractclassLine = "public abstract class test4 {";
    String resultingClass = "  class test4 {";
    file1AsList.add("public class test {");
    file1AsList.add("}");
    file1AsList.add("public class test2 {");
    file1AsList.add("}");
    file1AsList.add(abstractclassLine);
    file1AsList.add("}");
    file1AsList.add("public abstract class test3 {");
    file1AsList.add("}");

    List<String> linesWithoutAbstractClasses = fileComparer.replaceAbstractClasses(file1AsList);
    Assert.assertEquals(linesWithoutAbstractClasses.size(), file1AsList.size());
    Assert.assertTrue(linesWithoutAbstractClasses.contains(resultingClass));
    Assert.assertFalse(linesWithoutAbstractClasses.contains(abstractclassLine));
  }
 @Test
 public void testIfAbstractPartialClassIsCorrectlyConvertedToAInterface() {
   file1AsList.add("public abstract partial class test {");
   file1AsList.add("protected abstract testMethod1(String arg1);");
   file1AsList.add("protected abstract testMethod2(String arg1, Object obj);");
   file1AsList.add("protected abstract testMethod3(String arg1, Object obj, Boolean b);");
   file1AsList.add("public testMethod4(String arg1) {");
   file1AsList.add("}");
   file1AsList.add("}");
   List<String> expectedResult = new LinkedList<String>();
   expectedResult.add("public interface ItestSoapBinding {");
   expectedResult.add("  testMethod1(String arg1);");
   expectedResult.add("  testMethod2(String arg1, Object obj);");
   expectedResult.add("  testMethod3(String arg1, Object obj, Boolean b);");
   expectedResult.add("public testMethod4(String arg1) {");
   expectedResult.add("}");
   expectedResult.add("}");
   Assert.assertEquals(expectedResult, fileComparer.replaceAbstractClasses(file1AsList));
 }
 @Test
 public void testReplaceFourAbstractPartialClasses() {
   List<String> abstractPartialClasses = new LinkedList<String>();
   List<String> resultingAbstractPartialClasses = new LinkedList<String>();
   for (int i = 0; i < 4; i++) {
     abstractPartialClasses.add("public abstract partial class test" + i + " {");
     resultingAbstractPartialClasses.add("public interface Itest" + i + "SoapBinding {");
   }
   file1AsList.addAll(abstractPartialClasses);
   file1AsList.add("}");
   file1AsList.add("}");
   file1AsList.add("}");
   file1AsList.add("}");
   List<String> expectedResult = new LinkedList<String>(resultingAbstractPartialClasses);
   expectedResult.add("}");
   expectedResult.add("}");
   expectedResult.add("}");
   expectedResult.add("}");
   Assert.assertEquals(fileComparer.replaceAbstractClasses(file1AsList), expectedResult);
 }