1886da342Sopenharmony_ci/*
2886da342Sopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3886da342Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4886da342Sopenharmony_ci * you may not use this file except in compliance with the License.
5886da342Sopenharmony_ci * You may obtain a copy of the License at
6886da342Sopenharmony_ci *
7886da342Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8886da342Sopenharmony_ci *
9886da342Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10886da342Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11886da342Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12886da342Sopenharmony_ci * See the License for the specific language governing permissions and
13886da342Sopenharmony_ci * limitations under the License.
14886da342Sopenharmony_ci */
15886da342Sopenharmony_ci
16886da342Sopenharmony_ciclass SpecEvent {
17886da342Sopenharmony_ci    constructor(attr) {
18886da342Sopenharmony_ci        this.id = attr.id;
19886da342Sopenharmony_ci        this.coreContext = attr.context;
20886da342Sopenharmony_ci        this.eventMonitors = [];
21886da342Sopenharmony_ci    }
22886da342Sopenharmony_ci
23886da342Sopenharmony_ci    subscribeEvent(service) {
24886da342Sopenharmony_ci        this.eventMonitors.push(service);
25886da342Sopenharmony_ci    }
26886da342Sopenharmony_ci
27886da342Sopenharmony_ci    async specStart() {
28886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
29886da342Sopenharmony_ci            await monitor['specStart']();
30886da342Sopenharmony_ci        }
31886da342Sopenharmony_ci    }
32886da342Sopenharmony_ci
33886da342Sopenharmony_ci    async specDone() {
34886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
35886da342Sopenharmony_ci            await monitor['specDone']();
36886da342Sopenharmony_ci        }
37886da342Sopenharmony_ci    }
38886da342Sopenharmony_ci}
39886da342Sopenharmony_ci
40886da342Sopenharmony_ciclass SuiteEvent {
41886da342Sopenharmony_ci    constructor(attr) {
42886da342Sopenharmony_ci        this.id = attr.id;
43886da342Sopenharmony_ci        this.suiteContext = attr.coreContext;
44886da342Sopenharmony_ci        this.eventMonitors = [];
45886da342Sopenharmony_ci    }
46886da342Sopenharmony_ci
47886da342Sopenharmony_ci    subscribeEvent(service) {
48886da342Sopenharmony_ci        this.eventMonitors.push(service);
49886da342Sopenharmony_ci    }
50886da342Sopenharmony_ci
51886da342Sopenharmony_ci    async suiteStart() {
52886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
53886da342Sopenharmony_ci            await monitor['suiteStart']();
54886da342Sopenharmony_ci        }
55886da342Sopenharmony_ci    }
56886da342Sopenharmony_ci
57886da342Sopenharmony_ci    async suiteDone() {
58886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
59886da342Sopenharmony_ci            await monitor['suiteDone']();
60886da342Sopenharmony_ci        }
61886da342Sopenharmony_ci    }
62886da342Sopenharmony_ci}
63886da342Sopenharmony_ci
64886da342Sopenharmony_ciclass TaskEvent {
65886da342Sopenharmony_ci    constructor(attr) {
66886da342Sopenharmony_ci        this.id = attr.id;
67886da342Sopenharmony_ci        this.coreContext = attr.coreContext;
68886da342Sopenharmony_ci        this.eventMonitors = [];
69886da342Sopenharmony_ci    }
70886da342Sopenharmony_ci
71886da342Sopenharmony_ci    subscribeEvent(service) {
72886da342Sopenharmony_ci        this.eventMonitors.push(service);
73886da342Sopenharmony_ci    }
74886da342Sopenharmony_ci
75886da342Sopenharmony_ci    async taskStart() {
76886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
77886da342Sopenharmony_ci            await monitor['taskStart']();
78886da342Sopenharmony_ci        }
79886da342Sopenharmony_ci    }
80886da342Sopenharmony_ci
81886da342Sopenharmony_ci    async taskDone() {
82886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
83886da342Sopenharmony_ci            await monitor['taskDone']();
84886da342Sopenharmony_ci        }
85886da342Sopenharmony_ci    }
86886da342Sopenharmony_ci
87886da342Sopenharmony_ci    incorrectFormat() {
88886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
89886da342Sopenharmony_ci            monitor['incorrectFormat']();
90886da342Sopenharmony_ci        }
91886da342Sopenharmony_ci    }
92886da342Sopenharmony_ci
93886da342Sopenharmony_ci    incorrectTestSuiteFormat() {
94886da342Sopenharmony_ci        for (const monitor of this.eventMonitors) {
95886da342Sopenharmony_ci            monitor.incorrectTestSuiteFormat();
96886da342Sopenharmony_ci        }
97886da342Sopenharmony_ci    }
98886da342Sopenharmony_ci}
99886da342Sopenharmony_ci
100886da342Sopenharmony_ciexport { SpecEvent, TaskEvent, SuiteEvent };
101