1/*
2 * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from "@ohos/hypium"
16import ohosWindow from '@ohos.window';
17import display from '@ohos.display';
18import screenshot from '@ohos.screenshot';
19import { UiDriver, BY, ON, PointerMatrix } from '@ohos.UiTest'
20import { BusinessError } from '@ohos.base';
21
22async function sleep(time: number) {
23  let timeoutId: number = 0;
24  let promise = new Promise<string>(resolve => {
25    timeoutId = setTimeout(() => {
26      resolve('sleep finished');
27    }, time);
28  })
29  await promise;
30  clearTimeout(timeoutId)
31}
32export default function windowVerificationProblemTest() {
33  describe('window_verification_problem_test', async () => {
34    console.log('describe window_verification_problem_test start!!!');
35
36    /**
37     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4170
38     * @tc.name      : testDisplayOffAdd_RepeatOff
39     * @tc.desc      : Turn off the monitor that shows device changes
40     * @tc.size      : MediumTest
41     * @tc.type      : Function
42     * @tc.level     : Level 3
43     */
44    it('testDisplayOffAdd_RepeatOff', 0, async (done:Function) => {
45      let caseName = 'testDisplayOffAdd_RepeatOff';
46      let msgStr = 'jsunittest ' + caseName + ' ';
47      console.log(msgStr + 'begin');
48      let callback: Callback<number> = (data: number) => {
49        console.info(msgStr + 'Listening enabled. Data: ' + JSON.stringify(data));
50      };
51      try {
52        display.on("add", callback);
53      } catch (exception) {
54        console.error(msgStr + 'Failed to register callback. Code: ' + JSON.stringify(exception));
55        expect().assertFail();
56        done();
57
58      }
59      try {
60        display.off("add");
61      } catch (exception) {
62        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
63        expect().assertFail();
64        done();
65      }
66      try {
67        display.off("add");
68        done();
69      } catch (exception) {
70        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
71        expect().assertFail();
72        done();
73      }
74    });
75    /**
76     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4180
77     * @tc.name      : testDisplayOffAdd_UnregisteredOff
78     * @tc.desc      : Turn off the monitor that shows device changes
79     * @tc.size      : MediumTest
80     * @tc.type      : Function
81     * @tc.level     : Level 3
82     */
83    it('testDisplayOffAdd_UnregisteredOff', 0, async (done:Function) => {
84      let caseName = 'testDisplayOffAdd_UnregisteredOff';
85      let msgStr = 'jsunittest ' + caseName + ' ';
86      console.log(msgStr + 'begin');
87      try {
88        display.off("add");
89        done();
90      } catch (exception) {
91        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
92        expect().assertFail();
93        done();
94      }
95    });
96    /**
97     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4190
98     * @tc.name      : testDisplayOffRemove_RepeatOff
99     * @tc.desc      : Turn off the monitor that shows device changes
100     * @tc.size      : MediumTest
101     * @tc.type      : Function
102     * @tc.level     : Level 3
103     */
104    it('testDisplayOffRemove_RepeatOff', 0, async (done:Function) => {
105      let caseName = 'testDisplayOffRemove_RepeatOff';
106      let msgStr = 'jsunittest ' + caseName + ' ';
107      console.log(msgStr + 'begin');
108      let callback: Callback<number> = (data: number) => {
109        console.info(msgStr + 'Listening enabled. Data: ' + JSON.stringify(data));
110      };
111      try {
112        display.on("remove", callback);
113      } catch (exception) {
114        console.error(msgStr + 'Failed to register callback. Code: ' + JSON.stringify(exception));
115        expect().assertFail();
116        done();
117      }
118      try {
119        display.off("remove");
120      } catch (exception) {
121        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
122        expect().assertFail();
123        done();
124      }
125      try {
126        display.off("remove");
127        done();
128      } catch (exception) {
129        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
130        expect().assertFail();
131        done();
132      }
133    });
134    /**
135     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4200
136     * @tc.name      : testDisplayOffRemove_UnregisteredOff
137     * @tc.desc      : Turn off the monitor that shows device changes
138     * @tc.size      : MediumTest
139     * @tc.type      : Function
140     * @tc.level     : Level 3
141     */
142    it('testDisplayOffRemove_UnregisteredOff', 0, async (done:Function) => {
143      let caseName = 'testDisplayOffRemove_UnregisteredOff';
144      let msgStr = 'jsunittest ' + caseName + ' ';
145      console.log(msgStr + 'begin');
146      try {
147        display.off("remove");
148        done();
149      } catch (exception) {
150        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
151        expect().assertFail();
152        done();
153      }
154    });
155    /**
156     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4210
157     * @tc.name      : testDisplayOffChange_RepeatOff
158     * @tc.desc      : Turn off the monitor that shows device changes
159     * @tc.size      : MediumTest
160     * @tc.type      : Function
161     * @tc.level     : Level 3
162     */
163    it('testDisplayOffChange_RepeatOff', 0, async (done:Function) => {
164      let caseName = 'testDisplayOffChange_RepeatOff';
165      let msgStr = 'jsunittest ' + caseName + ' ';
166      console.log(msgStr + 'begin');
167      let callback: Callback<number> = (data: number) => {
168        console.info(msgStr + 'Listening enabled. Data: ' + JSON.stringify(data));
169      };
170      try {
171        display.on("change", callback);
172      } catch (exception) {
173        console.error(msgStr + 'Failed to register callback. Code: ' + JSON.stringify(exception));
174        expect().assertFail();
175        done();
176      }
177      try {
178        display.off("change");
179      } catch (exception) {
180        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
181        expect().assertFail();
182        done();
183      }
184      try {
185        display.off("change");
186        done();
187
188      } catch (exception) {
189        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
190        expect().assertFail();
191        done();
192      }
193    });
194    /**
195     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4220
196     * @tc.name      : testDisplayOffChange_UnregisteredOff
197     * @tc.desc      : Turn off the monitor that shows device changes
198     * @tc.size      : MediumTest
199     * @tc.type      : Function
200     * @tc.level     : Level 3
201     */
202    it('testDisplayOffChange_UnregisteredOff', 0, async (done:Function) => {
203      let caseName = 'testDisplayOffChange_UnregisteredOff';
204      let msgStr = 'jsunittest ' + caseName + ' ';
205      console.log(msgStr + 'begin');
206      try {
207        display.off("change");
208        done();
209      } catch (exception) {
210        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
211        expect().assertFail();
212        done();
213      }
214    });
215    /**
216     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4230
217     * @tc.name      : testDisplayOffFoldStatusChange_RepeatOff
218     * @tc.desc      : Enable the monitoring of the folding status change of the folding device
219     * @tc.size      : MediumTest
220     * @tc.type      : Function
221     * @tc.level     : Level 3
222     */
223    it('testDisplayOffFoldStatusChange_RepeatOff', 0, async (done:Function) => {
224      let caseName = 'testDisplayOffFoldStatusChange_RepeatOff';
225      let msgStr = 'jsunittest ' + caseName + ' ';
226      console.log(msgStr + 'begin');
227      let callback: Callback<display.FoldStatus> = (data: display.FoldStatus) => {
228        console.info(msgStr + 'Listening enabled. Data: ' + JSON.stringify(data));
229      };
230      try {
231        display.on('foldStatusChange', callback);
232      } catch (exception) {
233        console.error(msgStr + 'Failed to register callback. Code: ' + JSON.stringify(exception));
234        expect().assertFail();
235        done();
236      }
237      try {
238        display.off("foldStatusChange");
239      } catch (exception) {
240        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
241        expect().assertFail();
242        done();
243      }
244      try {
245        display.off("foldStatusChange");
246        done();
247      } catch (exception) {
248        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
249        expect().assertFail();
250        done();
251      }
252    });
253    /**
254     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4240
255     * @tc.name      : testDisplayOffFoldStatusChange_UnregisteredOff
256     * @tc.desc      : Enable the monitoring of the folding status change of the folding device
257     * @tc.size      : MediumTest
258     * @tc.type      : Function
259     * @tc.level     : Level 3
260     */
261    it('testDisplayOffFoldStatusChange_UnregisteredOff', 0, async (done:Function) => {
262      let caseName = 'testDisplayOffFoldStatusChange_UnregisteredOff';
263      let msgStr = 'jsunittest ' + caseName + ' ';
264      console.log(msgStr + 'begin');
265      try {
266        display.off("foldStatusChange");
267        done();
268      } catch (exception) {
269        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
270        expect().assertFail();
271        done();
272      }
273    });
274    /**
275     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4250
276     * @tc.name      : testDisplayOffFoldDisplayModeChange_RepeatOff
277     * @tc.desc      : Turn off monitoring for screen display mode changes on folding devices
278     * @tc.size      : MediumTest
279     * @tc.type      : Function
280     * @tc.level     : Level 3
281     */
282    it('testDisplayOffFoldDisplayModeChange_RepeatOff', 0, async (done:Function) => {
283      let caseName = 'testDisplayOffFoldDisplayModeChange_RepeatOff';
284      let msgStr = 'jsunittest ' + caseName + ' ';
285      console.log(msgStr + 'begin');
286      let callback: Callback<display.FoldDisplayMode> = (data: display.FoldDisplayMode) => {
287        console.info(msgStr + 'Listening enabled. Data: ' + JSON.stringify(data));
288      };
289      try {
290        display.on('foldDisplayModeChange', callback);
291      } catch (exception) {
292        console.error(msgStr + 'Failed to register callback. Code: ' + JSON.stringify(exception));
293        expect().assertFail();
294        done();
295      }
296      try {
297        display.off("foldDisplayModeChange");
298      } catch (exception) {
299        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
300        expect().assertFail();
301        done();
302      }
303      try {
304        display.off("foldDisplayModeChange");
305        done();
306      } catch (exception) {
307        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
308        expect().assertFail();
309        done();
310      }
311    });
312    /**
313     * @tc.number    : SUB_BASIC_WMS_SPCIAL_XTS_STAGE_JS_API_4260
314     * @tc.name      : testDisplayOffFoldDisplayModeChange_UnregisteredOff
315     * @tc.desc      : Turn off monitoring for screen display mode changes on folding devices
316     * @tc.size      : MediumTest
317     * @tc.type      : Function
318     * @tc.level     : Level 3
319     */
320    it('testDisplayOffFoldDisplayModeChange_UnregisteredOff', 0, async (done:Function) => {
321      let caseName = 'testDisplayOffFoldDisplayModeChange_UnregisteredOff';
322      let msgStr = 'jsunittest ' + caseName + ' ';
323      console.log(msgStr + 'begin');
324      try {
325        display.off("foldDisplayModeChange");
326        done();
327
328      } catch (exception) {
329        console.error(msgStr + 'Failed to unregister callback. Code: ' + JSON.stringify(exception));
330        expect().assertFail();
331        done();
332      }
333    });
334  })
335}
336