1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.tools.io
18 
19 import android.tools.Scenario
20 
21 /** Possible status of a flicker ru */
22 enum class RunStatus(val prefix: String, val isFailure: Boolean) {
23     UNDEFINED("UNDEFINED", false),
24     RUN_EXECUTED("EXECUTED", false),
25     ASSERTION_SUCCESS("PASS", false),
26     RUN_FAILED("FAILED_RUN", true),
27     PARSING_FAILURE("FAILED_PARSING", true),
28     ASSERTION_FAILED("FAIL", true);
29 
<lambda>null30     fun generateArchiveNameFor(scenario: Scenario, counter: Int): String = buildString {
31         append(prefix)
32         append("__")
33         append(scenario)
34         if (counter > 0) {
35             append("_")
36             append(counter)
37         }
38         append(".zip")
39     }
40 
41     companion object {
fromFileNamenull42         fun fromFileName(fileName: String): RunStatus? {
43             if (!fileName.contains("__")) {
44                 return UNDEFINED
45             }
46 
47             return when (fileName.split("__").first()) {
48                 RUN_EXECUTED.prefix -> RUN_EXECUTED
49                 ASSERTION_SUCCESS.prefix -> ASSERTION_SUCCESS
50                 RUN_FAILED.prefix -> RUN_FAILED
51                 PARSING_FAILURE.prefix -> PARSING_FAILURE
52                 ASSERTION_FAILED.prefix -> ASSERTION_FAILED
53                 UNDEFINED.prefix -> UNDEFINED
54                 else -> null
55             }
56         }
57 
58         val ALL: List<RunStatus> = RunStatus.values().toList()
59     }
60 }
61