private static List<TestedObject> parseExpectedTestedObject(String testDescription) { String[] testObjectData = testDescription.substring(testDescription.indexOf("// TESTED_OBJECT_KIND")).split("\n\n"); ArrayList<TestedObject> objects = new ArrayList<TestedObject>(); for (String testData : testObjectData) { if (testData.isEmpty()) continue; TestedObject testObject = new TestedObject(); testObject.textData = testData; List<String> testedObjects = findListWithPrefixes(testData, "// TESTED_OBJECTS: "); assertTrue("Cannot find TESTED_OBJECTS instruction", !testedObjects.isEmpty()); testObject.containingClass = testedObjects.get(0); if (testedObjects.size() == 1) { testObject.name = testedObjects.get(0); } else if (testedObjects.size() == 2) { testObject.name = testedObjects.get(1); } else { throw new IllegalArgumentException( "TESTED_OBJECTS instruction must contain one (for class) or two (for function and property) values"); } testObject.kind = findStringWithPrefixes(testData, "// TESTED_OBJECT_KIND: "); List<String> isFullName = findListWithPrefixes(testData, "// IS_FULL_CONTAINING_CLASS_NAME: "); if (isFullName.size() == 1) { testObject.isFullContainingClassName = Boolean.parseBoolean(isFullName.get(0)); } objects.add(testObject); } assertTrue("Test description not present!", !objects.isEmpty()); return objects; }