|  | // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | package com.android.tools.r8; | 
|  |  | 
|  | import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage; | 
|  | import static org.hamcrest.CoreMatchers.not; | 
|  |  | 
|  | import java.util.Collection; | 
|  | import java.util.Collections; | 
|  | import java.util.List; | 
|  | import org.hamcrest.Matcher; | 
|  |  | 
|  | public interface TestDiagnosticMessages { | 
|  |  | 
|  | List<Diagnostic> getInfos(); | 
|  |  | 
|  | List<Diagnostic> getWarnings(); | 
|  |  | 
|  | List<Diagnostic> getErrors(); | 
|  |  | 
|  | TestDiagnosticMessages assertNoMessages(); | 
|  |  | 
|  | TestDiagnosticMessages assertOnlyInfos(); | 
|  |  | 
|  | TestDiagnosticMessages assertOnlyWarnings(); | 
|  |  | 
|  | TestDiagnosticMessages assertOnlyErrors(); | 
|  |  | 
|  | TestDiagnosticMessages assertInfosCount(int count); | 
|  |  | 
|  | TestDiagnosticMessages assertWarningsCount(int count); | 
|  |  | 
|  | TestDiagnosticMessages assertErrorsCount(int count); | 
|  |  | 
|  | default TestDiagnosticMessages assertNoInfos() { | 
|  | return assertInfosCount(0); | 
|  | } | 
|  |  | 
|  | default TestDiagnosticMessages assertNoWarnings() { | 
|  | return assertWarningsCount(0); | 
|  | } | 
|  |  | 
|  | default TestDiagnosticMessages assertNoErrors() { | 
|  | return assertErrorsCount(0); | 
|  | } | 
|  |  | 
|  | // Match exact. | 
|  |  | 
|  | default TestDiagnosticMessages assertDiagnosticsMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertDiagnosticsMatch(Collections.singletonList(matcher)); | 
|  | } | 
|  |  | 
|  | TestDiagnosticMessages assertDiagnosticsMatch(Collection<Matcher<Diagnostic>> matchers); | 
|  |  | 
|  | default TestDiagnosticMessages assertInfosMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertInfosMatch(Collections.singletonList(matcher)); | 
|  | } | 
|  |  | 
|  | TestDiagnosticMessages assertInfosMatch(Collection<Matcher<Diagnostic>> matchers); | 
|  |  | 
|  | default TestDiagnosticMessages assertWarningsMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertWarningsMatch(Collections.singletonList(matcher)); | 
|  | } | 
|  |  | 
|  | TestDiagnosticMessages assertWarningsMatch(Collection<Matcher<Diagnostic>> matchers); | 
|  |  | 
|  | default TestDiagnosticMessages assertErrorsMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertErrorsMatch(Collections.singletonList(matcher)); | 
|  | } | 
|  |  | 
|  | TestDiagnosticMessages assertErrorsMatch(Collection<Matcher<Diagnostic>> matchers); | 
|  |  | 
|  | // Match one. | 
|  |  | 
|  | TestDiagnosticMessages assertDiagnosticThatMatches(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | TestDiagnosticMessages assertInfoThatMatches(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | TestDiagnosticMessages assertWarningThatMatches(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | TestDiagnosticMessages assertErrorThatMatches(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | // Consider removing this helper. | 
|  | default TestDiagnosticMessages assertWarningMessageThatMatches(Matcher<String> matcher) { | 
|  | return assertWarningThatMatches(diagnosticMessage(matcher)); | 
|  | } | 
|  |  | 
|  | // Consider removing this helper. | 
|  | default TestDiagnosticMessages assertErrorMessageThatMatches(Matcher<String> matcher) { | 
|  | return assertErrorThatMatches(diagnosticMessage(matcher)); | 
|  | } | 
|  |  | 
|  | // Match all. | 
|  |  | 
|  | TestDiagnosticMessages assertAllDiagnosticsMatch(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | TestDiagnosticMessages assertAllInfosMatch(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | TestDiagnosticMessages assertAllWarningsMatch(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | TestDiagnosticMessages assertAllErrorsMatch(Matcher<Diagnostic> matcher); | 
|  |  | 
|  | // Match none. | 
|  |  | 
|  | default TestDiagnosticMessages assertNoDiagnosticsMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertAllDiagnosticsMatch(not(matcher)); | 
|  | } | 
|  |  | 
|  | default TestDiagnosticMessages assertNoInfosMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertAllInfosMatch(not(matcher)); | 
|  | } | 
|  |  | 
|  | default TestDiagnosticMessages assertNoWarningsMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertAllWarningsMatch(not(matcher)); | 
|  | } | 
|  |  | 
|  | default TestDiagnosticMessages assertNoErrorsMatch(Matcher<Diagnostic> matcher) { | 
|  | return assertAllErrorsMatch(not(matcher)); | 
|  | } | 
|  | } |