From 4f1af224d1da57e07f3247084a7edea0643b000a Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 29 Sep 2015 18:43:10 +0300 Subject: [PATCH] Rewrite CheckLocalVariableTableTest using assertEqualsToFile --- .../AbstractCheckLocalVariablesTableTest.java | 57 ++++--------------- 1 file changed, 12 insertions(+), 45 deletions(-) diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.java index 09ca79cdfe8..2133301b1b5 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.java @@ -93,22 +93,17 @@ public abstract class AbstractCheckLocalVariablesTableTest extends TestCaseWithT assertNotNull("Couldn't find class file for pattern " + classFileRegex + " in: " + pathsString, outputFile); ClassReader cr = new ClassReader(outputFile.asByteArray()); - List expectedLocalVariables = parseExpectations(); List actualLocalVariables = readLocalVariable(cr, methodName); - assertEquals("Count of variables are different", expectedLocalVariables.size(), actualLocalVariables.size()); + JetTestUtils.assertEqualsToFile(ktFile, text.substring(0, text.indexOf("// VARIABLE : ")) + getActualVariablesAsString(actualLocalVariables)); + } - int index = 0; - for (LocalVariable expectedVariable : expectedLocalVariables) { - LocalVariable actualVariable = actualLocalVariables.get(index); - assertEquals("Names are different", expectedVariable.name, actualVariable.name); - assertTrue( - String.format("Type doesn't match regex: name %s, regex %s, type %s", expectedVariable.name, expectedVariable.type, actualVariable.type), - actualVariable.type.matches(expectedVariable.type) - ); - assertEquals("Indexes are different", expectedVariable.index, actualVariable.index); - index++; + private static String getActualVariablesAsString(List list) { + StringBuilder builder = new StringBuilder(); + for (LocalVariable variable : list) { + builder.append(variable.toString()).append("\n"); } + return builder.toString(); } @@ -126,44 +121,16 @@ public abstract class AbstractCheckLocalVariablesTableTest extends TestCaseWithT this.type = type; this.index = index; } + + @Override + public String toString() { + return "// VARIABLE : NAME=" + name + " TYPE=" + type + " INDEX=" + index; + } } @NotNull private static final Pattern methodPattern = Pattern.compile("^// METHOD : *(.*)"); - private static final Pattern namePattern = Pattern.compile("^// VARIABLE : NAME=*(.*) TYPE=.* INDEX=.*"); - private static final Pattern typePattern = Pattern.compile("^// VARIABLE : NAME=.* TYPE=*(.*) INDEX=.*"); - private static final Pattern indexPattern = Pattern.compile("^// VARIABLE : NAME=.* TYPE=.* INDEX=*(.*)"); - - - private List parseExpectations() throws IOException { - List lines = Files.readLines(ktFile, Charset.forName("utf-8")); - List expectedLocalVariables = new ArrayList(); - for (int i = Math.max(lines.size() - 10, 0); i < lines.size(); ++i) { - Matcher nameMatcher = namePattern.matcher(lines.get(i)); - if (nameMatcher.matches()) { - Matcher typeMatcher = typePattern.matcher(lines.get(i)); - Matcher indexMatcher = indexPattern.matcher(lines.get(i)); - - if (!typeMatcher.matches() - || !indexMatcher.matches()) { - throw new AssertionError("Incorrect test instructions format"); - } - - - expectedLocalVariables.add(new LocalVariable(nameMatcher.group(1), - StringUtil.escapeToRegexp(typeMatcher.group(1)).replace("\\*", ".+"), - Integer.parseInt(indexMatcher.group(1)))); - } - } - if (expectedLocalVariables.size() == 0) { - throw new AssertionError("test instructions not found in " + ktFile); - } - else { - return expectedLocalVariables; - } - } - @NotNull private String parseClassAndMethodSignature() throws IOException { List lines = Files.readLines(ktFile, Charset.forName("utf-8"));