// Copyright (c) 2019, 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.retrace.stacktraces;

import com.android.tools.r8.utils.StringUtils;
import java.util.Arrays;
import java.util.List;

public class RetraceAssertionErrorStackTrace implements StackTraceForTest {

  @Override
  public List<String> obfuscatedStackTrace() {
    return Arrays.asList(
        "java.lang.AssertionError",
        "        at com.android.tools.r8.retrace.h.<init>(:4)",
        "        at com.android.tools.r8.retrace.f.a(:48)",
        "        at com.android.tools.r8.retrace.f.a(:2)",
        "        at com.android.tools.r8.retrace.Retrace.run(:5)",
        "        at"
            + " com.android.tools.r8.retrace.RetraceTests.testNullLineTrace(RetraceTests.java:73)");
  }

  @Override
  public List<String> retracedStackTrace() {
    return Arrays.asList(
        "java.lang.AssertionError",
        "        at"
            + " com.android.tools.r8.retrace.RetraceCore$StackTraceNode.<init>(RetraceCore.java:31)",
        "        at com.android.tools.r8.retrace.RetraceCore.retraceLine(RetraceCore.java:117)",
        "        at com.android.tools.r8.retrace.RetraceCore.retrace(RetraceCore.java:107)",
        "        at com.android.tools.r8.retrace.Retrace.run(Retrace.java:116)",
        "        at"
            + " com.android.tools.r8.retrace.RetraceTests.testNullLineTrace(RetraceTests.java:73)");
  }

  @Override
  public String mapping() {
    return StringUtils.lines(
        "com.android.tools.r8.retrace.Retrace -> com.android.tools.r8.retrace.Retrace:",
        "    boolean $assertionsDisabled -> a",
        "    1:5:void <clinit>():34:38 -> <clinit>",
        "    1:1:void <init>():35:35 -> <init>",
        "    1:7:com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer"
            + " getMappingSupplier(java.lang.String,com.android.tools.r8.DiagnosticsHandler):86:92"
            + " -> a",
        "    8:9:com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer"
            + " getMappingSupplier(java.lang.String,com.android.tools.r8.DiagnosticsHandler):88:89"
            + " -> a",
        "    10:12:com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer"
            + " getMappingSupplier(java.lang.String,com.android.tools.r8.DiagnosticsHandler):88:90"
            + " -> a",
        "    13:13:java.lang.String lambda$getMappingSupplier$0(java.nio.file.Path):92:92 -> a",
        "    14:14:void lambda$run$1(java.util.List):135:135 -> a",
        "    15:15:void lambda$main$2(java.lang.String[]):144:144 -> a",
        "    1:1:void run(java.lang.String[]):126:126 -> b",
        "    2:22:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):43:63"
            + " -> b",
        "    2:22:void run(java.lang.String[]):127 -> b",
        "    23:23:java.util.List"
            + " getStackTraceFromFile(java.lang.String,com.android.tools.r8.DiagnosticsHandler):98:98"
            + " -> b",
        "    23:23:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):63 ->"
            + " b",
        "    23:23:void run(java.lang.String[]):127 -> b",
        "    24:25:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):63:64"
            + " -> b",
        "    24:25:void run(java.lang.String[]):127 -> b",
        "    26:27:java.util.List"
            + " getStackTraceFromFile(java.lang.String,com.android.tools.r8.DiagnosticsHandler):100:101"
            + " -> b",
        "    26:27:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):63 ->"
            + " b",
        "    26:27:void run(java.lang.String[]):127 -> b",
        "    28:30:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):67:69"
            + " -> b",
        "    28:30:void run(java.lang.String[]):127 -> b",
        "    31:35:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):67:71"
            + " -> b",
        "    31:35:void run(java.lang.String[]):127 -> b",
        "    36:39:java.util.List getStackTraceFromStandardInput():148:151 -> b",
        "    36:39:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):79 ->"
            + " b",
        "    36:39:void run(java.lang.String[]):127 -> b",
        "    40:40:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):79:79"
            + " -> b",
        "    40:40:void run(java.lang.String[]):127 -> b",
        "    41:47:void run(java.lang.String[]):130:136 -> b",
        "    48:49:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " parseArguments(java.lang.String[],com.android.tools.r8.DiagnosticsHandler):75:76"
            + " -> b",
        "    48:49:void run(java.lang.String[]):127 -> b",
        "    1:1:void main(java.lang.String[]):144:144 -> main",
        "    2:10:void"
            + " withMainProgramHandler(com.android.tools.r8.retrace.Retrace$MainAction):164:172 ->"
            + " main",
        "    2:10:void main(java.lang.String[]):144 -> main",
        "    11:11:void"
            + " withMainProgramHandler(com.android.tools.r8.retrace.Retrace$MainAction):167:167 ->"
            + " main",
        "    11:11:void main(java.lang.String[]):144 -> main",
        "    1:9:void run(com.android.tools.r8.retrace.RetraceCommand):112:120 -> run",
        "    10:12:void run(com.android.tools.r8.retrace.RetraceCommand):119:121 -> run",
        "com.android.tools.r8.retrace.Retrace$1 -> com.android.tools.r8.retrace.Retrace$a:",
        "    1:1:void <init>():126:126 -> <init>",
        "com.android.tools.r8.retrace.Retrace$MainAction ->"
            + " com.android.tools.r8.retrace.Retrace$b:",
        "com.android.tools.r8.retrace.Retrace$RetraceAbortException ->"
            + " com.android.tools.r8.retrace.Retrace$RetraceAbortException:",
        "    1:1:void <init>():156:156 -> <init>",
        "com.android.tools.r8.retrace.RetraceCommand ->"
            + " com.android.tools.r8.retrace.RetraceCommand:",
        "    com.android.tools.r8.DiagnosticsHandler diagnosticsHandler -> a",
        "    java.util.function.Consumer retracedStackTraceConsumer -> d",
        "    com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer proguardMapProducer"
            + " -> b",
        "    java.util.List stackTrace -> c",
        "    boolean $assertionsDisabled -> e",
        "    1:1:void <clinit>():13:13 -> <clinit>",
        "    1:1:void"
            + " <init>(boolean,com.android.tools.r8.DiagnosticsHandler,com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer,java.util.List,java.util.function.Consumer,com.android.tools.r8.retrace.RetraceCommand$1):13:13"
            + " -> <init>",
        "    2:12:void"
            + " <init>(boolean,com.android.tools.r8.DiagnosticsHandler,com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer,java.util.List,java.util.function.Consumer):26:36"
            + " -> <init>",
        "    1:1:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " builder(com.android.tools.r8.DiagnosticsHandler):45:45 -> a",
        "com.android.tools.r8.retrace.RetraceCommand$1 -> com.android.tools.r8.retrace.a:",
        "com.android.tools.r8.retrace.RetraceCommand$Builder ->"
            + " com.android.tools.r8.retrace.RetraceCommand$a:",
        "    com.android.tools.r8.DiagnosticsHandler diagnosticsHandler -> a",
        "    java.util.function.Consumer retracedStackTraceConsumer -> d",
        "    com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer proguardMapProducer"
            + " -> b",
        "    java.util.List stackTrace -> c",
        "    1:1:void"
            + " <init>(com.android.tools.r8.DiagnosticsHandler,com.android.tools.r8.retrace.RetraceCommand$1):53:53"
            + " -> <init>",
        "    2:3:void <init>(com.android.tools.r8.DiagnosticsHandler):61:62 -> <init>",
        "    1:1:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " setProguardMapProducer(com.android.tools.r8.retrace.RetraceCommand$ProguardMapProducer):77:77"
            + " -> a",
        "    2:2:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " setStackTrace(java.util.List):88:88 -> a",
        "    3:3:com.android.tools.r8.retrace.RetraceCommand$Builder"
            + " setRetracedStackTraceConsumer(java.util.function.Consumer):98:98 -> a",
        "    4:16:com.android.tools.r8.retrace.RetraceCommand build():103:115 -> a",
        "    17:17:com.android.tools.r8.retrace.RetraceCommand build():113:113 -> a",
        "    18:18:com.android.tools.r8.retrace.RetraceCommand build():110:110 -> a",
        "    19:19:com.android.tools.r8.retrace.RetraceCommand build():107:107 -> a",
        "    20:20:com.android.tools.r8.retrace.RetraceCommand build():104:104 -> a",
        "com.android.tools.r8.retrace.RetraceCore -> com.android.tools.r8.retrace.f:",
        "    java.util.List stackTrace -> b",
        "    com.android.tools.r8.naming.ClassNameMapper classNameMapper -> a",
        "    com.android.tools.r8.DiagnosticsHandler diagnosticsHandler -> c",
        "    1:4:void"
            + " <init>(com.android.tools.r8.naming.ClassNameMapper,java.util.List,com.android.tools.r8.DiagnosticsHandler):99:102"
            + " -> <init>",
        "    1:3:com.android.tools.r8.retrace.RetraceCore$RetraceResult retrace():106:108 -> a",
        "    4:7:void retraceLine(java.util.List,int,java.util.List):112:115 -> a",
        "    8:8:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " parseLine(int,java.lang.String):503:503 -> a",
        "    8:8:void retraceLine(java.util.List,int,java.util.List):115 -> a",
        "    9:29:com.android.tools.r8.retrace.RetraceCore$ExceptionLine"
            + " com.android.tools.r8.retrace.RetraceCore$ExceptionLine.tryParse(java.lang.String):191:211"
            + " -> a",
        "    9:29:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " parseLine(int,java.lang.String):507 -> a",
        "    9:29:void retraceLine(java.util.List,int,java.util.List):115 -> a",
        "    30:40:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " com.android.tools.r8.retrace.RetraceCore$MoreLine.tryParse(java.lang.String):452:462"
            + " -> a",
        "    30:40:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " parseLine(int,java.lang.String):511 -> a",
        "    30:40:void retraceLine(java.util.List,int,java.util.List):115 -> a",
        "    41:42:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " parseLine(int,java.lang.String):513:514 -> a",
        "    41:42:void retraceLine(java.util.List,int,java.util.List):115 -> a",
        "    43:46:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " parseLine(int,java.lang.String):513:516 -> a",
        "    43:46:void retraceLine(java.util.List,int,java.util.List):115 -> a",
        "    47:50:void retraceLine(java.util.List,int,java.util.List):116:119 -> a",
        "    51:52:com.android.tools.r8.retrace.RetraceCore$StackTraceLine"
            + " parseLine(int,java.lang.String):499:500 -> a",
        "    51:52:void retraceLine(java.util.List,int,java.util.List):115 -> a",
        "com.android.tools.r8.retrace.RetraceCore$AtLine -> com.android.tools.r8.retrace.b:",
        "    int linePosition -> f",
        "    boolean $assertionsDisabled -> g",
        "    java.lang.String startingWhitespace -> a",
        "    java.lang.String clazz -> c",
        "    java.lang.String at -> b",
        "    java.lang.String fileName -> e",
        "    java.lang.String method -> d",
        "    1:1:void <clinit>():243:243 -> <clinit>",
        "    1:7:void"
            + " <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,int):261:267"
            + " -> <init>",
        "    boolean isAtLine() -> a",
        "    1:1:java.lang.String"
            + " access$000(com.android.tools.r8.retrace.RetraceCore$AtLine):243:243 -> a",
        "    2:7:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):328:333 -> a",
        "    8:22:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):331:345 -> a",
        "    23:57:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):339:373 ->"
            + " a",
        "    58:67:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):367:376 ->"
            + " a",
        "    68:74:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):351:357 ->"
            + " a",
        "    75:75:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):351:351 ->"
            + " a",
        "    76:80:java.lang.String getClassSimpleName(java.lang.String):398:402 -> a",
        "    1:1:java.lang.String"
            + " access$100(com.android.tools.r8.retrace.RetraceCore$AtLine):243:243 -> b",
        "    2:5:java.lang.String retracedFileName(java.lang.String):384:387 -> b",
        "    6:11:java.lang.String retracedFileName(java.lang.String):385:390 -> b",
        "    12:14:java.lang.String"
            + " com.android.tools.r8.com.google.common.io.Files.getFileExtension(java.lang.String):792:794"
            + " -> b",
        "    12:14:java.lang.String retracedFileName(java.lang.String):390 -> b",
        "    15:18:java.lang.String retracedFileName(java.lang.String):391:394 -> b",
        "    19:19:java.lang.Object"
            + " com.android.tools.r8.com.google.common.base.Preconditions.checkNotNull(java.lang.Object):787:787"
            + " -> b",
        "    19:19:java.lang.String"
            + " com.android.tools.r8.com.google.common.io.Files.getFileExtension(java.lang.String):791"
            + " -> b",
        "    19:19:java.lang.String retracedFileName(java.lang.String):390 -> b",
        "    1:1:java.lang.String"
            + " access$200(com.android.tools.r8.retrace.RetraceCore$AtLine):243:243 -> c",
        "    2:51:com.android.tools.r8.retrace.RetraceCore$AtLine"
            + " tryParse(java.lang.String):272:321 -> c",
        "    1:1:int access$300(com.android.tools.r8.retrace.RetraceCore$AtLine):243:243 -> d",
        "    1:15:java.lang.String toString():410:424 -> toString",
        "com.android.tools.r8.retrace.RetraceCore$AtStackTraceLineComparator ->"
            + " com.android.tools.r8.retrace.c:",
        "    1:1:void <init>():53:53 -> <init>",
        "    1:1:int compare(java.lang.Object,java.lang.Object):53:53 -> compare",
        "    2:16:int"
            + " compare(com.android.tools.r8.retrace.RetraceCore$StackTraceLine,com.android.tools.r8.retrace.RetraceCore$StackTraceLine):57:71"
            + " -> compare",
        "    2:16:int compare(java.lang.Object,java.lang.Object):53 -> compare",
        "com.android.tools.r8.retrace.RetraceCore$ExceptionLine -> com.android.tools.r8.retrace.d:",
        "    java.lang.String initialWhiteSpace -> a",
        "    java.lang.String exceptionClass -> c",
        "    java.lang.String description -> b",
        "    java.lang.String message -> d",
        "    1:5:void"
            + " <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String):183:187"
            + " -> <init>",
        "    1:6:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):216:221 -> a",
        "    1:1:java.lang.String toString():227:227 -> toString",
        "com.android.tools.r8.retrace.RetraceCore$MoreLine -> com.android.tools.r8.retrace.e:",
        "    java.lang.String line -> a",
        "    1:2:void <init>(java.lang.String):445:446 -> <init>",
        "    1:1:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):470:470 -> a",
        "    1:1:java.lang.String toString():475:475 -> toString",
        "com.android.tools.r8.retrace.RetraceCore$RetraceResult ->"
            + " com.android.tools.r8.retrace.f$a:",
        "    java.util.List nodes -> a",
        "    1:2:void <init>(java.util.List):79:80 -> <init>",
        "    1:3:java.util.List toListOfStrings():84:86 -> a",
        "com.android.tools.r8.retrace.RetraceCore$StackTraceLine ->"
            + " com.android.tools.r8.retrace.g:",
        "    1:1:void <init>():122:122 -> <init>",
        "    boolean isAtLine() -> a",
        "    java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper) -> a",
        "    1:1:int firstNonWhiteSpaceCharacterFromIndex(java.lang.String,int):126:126 -> a",
        "    2:2:int firstCharFromIndex(java.lang.String,int,char):130:130 -> a",
        "    3:3:boolean lambda$firstCharFromIndex$0(char,java.lang.Character):130:130 -> a",
        "    4:9:int firstFromIndex(java.lang.String,int,java.util.function.Predicate):134:139 ->"
            + " a",
        "com.android.tools.r8.retrace.RetraceCore$StackTraceNode ->"
            + " com.android.tools.r8.retrace.h:",
        "    java.util.List lines -> a",
        "    boolean $assertionsDisabled -> b",
        "    1:1:void <clinit>():24:24 -> <clinit>",
        "    1:4:void <init>(java.util.List):28:31 -> <init>",
        "    1:14:java.lang.String toString():36:49 -> toString",
        "com.android.tools.r8.retrace.RetraceCore$UnknownLine -> com.android.tools.r8.retrace.i:",
        "    java.lang.String line -> a",
        "    1:2:void <init>(java.lang.String):482:483 -> <init>",
        "    1:1:java.util.List retrace(com.android.tools.r8.naming.ClassNameMapper):488:488 -> a",
        "    1:1:java.lang.String toString():493:493 -> toString",
        "com.android.tools.r8.retrace.RetraceInvalidStackTraceLineDiagnostics ->"
            + " com.android.tools.r8.retrace.RetraceInvalidStackTraceLineDiagnostics:",
        "    java.lang.String message -> b",
        "    int lineNumber -> a",
        "    1:3:void <init>(int,java.lang.String):23:25 -> <init>",
        "    1:1:com.android.tools.r8.retrace.RetraceInvalidStackTraceLineDiagnostics"
            + " createNull(int):44:44 -> createNull",
        "    1:2:com.android.tools.r8.retrace.RetraceInvalidStackTraceLineDiagnostics"
            + " createParse(int,java.lang.String):48:49 -> createParse",
        "    1:1:java.lang.String getDiagnosticMessage():40:40 -> getDiagnosticMessage",
        "    1:1:com.android.tools.r8.origin.Origin getOrigin():30:30 -> getOrigin",
        "    1:1:com.android.tools.r8.position.Position getPosition():35:35 -> getPosition");
  }

  @Override
  public int expectedWarnings() {
    return 0;
  }
}
