122736c2fSopenharmony_ci/*
222736c2fSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd.
322736c2fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
422736c2fSopenharmony_ci * you may not use this file except in compliance with the License.
522736c2fSopenharmony_ci * You may obtain a copy of the License at
622736c2fSopenharmony_ci *
722736c2fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
822736c2fSopenharmony_ci *
922736c2fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1022736c2fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1122736c2fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1222736c2fSopenharmony_ci * See the License for the specific language governing permissions and
1322736c2fSopenharmony_ci * limitations under the License.
1422736c2fSopenharmony_ci */
1522736c2fSopenharmony_ci
1622736c2fSopenharmony_ciimport inputMethod from '@ohos.inputMethod';
1722736c2fSopenharmony_ciimport commonEventManager from '@ohos.commonEventManager';
1822736c2fSopenharmony_ciimport {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index';
1922736c2fSopenharmony_ciimport { PanelInfo, PanelFlag, PanelType } from '@ohos.inputMethod.Panel';
2022736c2fSopenharmony_ci
2122736c2fSopenharmony_cidescribe('InputMethodWithAttachTest', function () {
2222736c2fSopenharmony_ci  const WAIT_DEAL_OK = 500;
2322736c2fSopenharmony_ci  const TEST_RESULT_CODE = 0;
2422736c2fSopenharmony_ci  const TEST_FUNCTION =  {
2522736c2fSopenharmony_ci    INSERT_TEXT_SYNC: 0,
2622736c2fSopenharmony_ci    MOVE_CURSOR_SYNC: 1,
2722736c2fSopenharmony_ci    GET_ATTRIBUTE_SYNC: 2,
2822736c2fSopenharmony_ci    SELECT_BY_RANGE_SYNC: 3,
2922736c2fSopenharmony_ci    SELECT_BY_MOVEMENT_SYNC: 4,
3022736c2fSopenharmony_ci    GET_INDEX_AT_CURSOR_SYNC: 5,
3122736c2fSopenharmony_ci    DELETE_FORWARD_SYNC: 6,
3222736c2fSopenharmony_ci    DELETE_BACKWARD_SYNC: 7,
3322736c2fSopenharmony_ci    GET_FORWARD_SYNC: 8,
3422736c2fSopenharmony_ci    GET_BACKWARD_SYNC: 9,
3522736c2fSopenharmony_ci    CHANGE_FLAG_TO_FIXED: 10,
3622736c2fSopenharmony_ci    CHANGE_FLAG_TO_FLOATING: 11,
3722736c2fSopenharmony_ci    SETPRIVACYMODE_WITHOUT_PERMISSION: 12,
3822736c2fSopenharmony_ci    SETPRIVACYMODE_ERROR_PARAM: 13
3922736c2fSopenharmony_ci  }
4022736c2fSopenharmony_ci
4122736c2fSopenharmony_ci  beforeAll(async function (done) {
4222736c2fSopenharmony_ci    console.info('beforeAll called');
4322736c2fSopenharmony_ci    let inputMethodProperty = {
4422736c2fSopenharmony_ci      name:'com.example.testIme',
4522736c2fSopenharmony_ci      id:'InputMethodExtAbility'
4622736c2fSopenharmony_ci    };
4722736c2fSopenharmony_ci    await inputMethod.switchInputMethod(inputMethodProperty);
4822736c2fSopenharmony_ci    setTimeout(()=>{
4922736c2fSopenharmony_ci      done();
5022736c2fSopenharmony_ci    }, WAIT_DEAL_OK);
5122736c2fSopenharmony_ci  });
5222736c2fSopenharmony_ci
5322736c2fSopenharmony_ci  afterAll(async function () {
5422736c2fSopenharmony_ci    console.info('afterAll called');
5522736c2fSopenharmony_ci    let inputMethodSetting = inputMethod.getInputMethodSetting();
5622736c2fSopenharmony_ci    let props = await inputMethodSetting.listInputMethod();
5722736c2fSopenharmony_ci    let bundleName = 'com.example.newTestIme';
5822736c2fSopenharmony_ci    let bundleName1 = 'com.example.testIme';
5922736c2fSopenharmony_ci    for(let i = 0;i< props.length; i++) {
6022736c2fSopenharmony_ci      let prop = props[i];
6122736c2fSopenharmony_ci      if(prop.name !== bundleName && prop.name !== bundleName1){
6222736c2fSopenharmony_ci        await inputMethod.switchInputMethod(prop);
6322736c2fSopenharmony_ci      }
6422736c2fSopenharmony_ci    }
6522736c2fSopenharmony_ci  });
6622736c2fSopenharmony_ci
6722736c2fSopenharmony_ci  beforeEach(async function () {
6822736c2fSopenharmony_ci    console.info('beforeEach called');
6922736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
7022736c2fSopenharmony_ci    let cfg = {
7122736c2fSopenharmony_ci      inputAttribute:
7222736c2fSopenharmony_ci        {
7322736c2fSopenharmony_ci          textInputType: inputMethod.TextInputType.TEXT,
7422736c2fSopenharmony_ci          enterKeyType: inputMethod.EnterKeyType.NONE
7522736c2fSopenharmony_ci        }
7622736c2fSopenharmony_ci    };
7722736c2fSopenharmony_ci    await inputMethodCtrl.attach(false, cfg);
7822736c2fSopenharmony_ci  });
7922736c2fSopenharmony_ci
8022736c2fSopenharmony_ci  afterEach(async function () {
8122736c2fSopenharmony_ci    console.info('afterEach called');
8222736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
8322736c2fSopenharmony_ci    await inputMethodCtrl.detach();
8422736c2fSopenharmony_ci  });
8522736c2fSopenharmony_ci
8622736c2fSopenharmony_ci  function publishCommonEvent(codeNumber) {
8722736c2fSopenharmony_ci    console.info(`[publishCommonEvent] publish event, codeNumber = ${codeNumber}`);
8822736c2fSopenharmony_ci    commonEventManager.publish('syncTestFunction', { code: codeNumber }, (err)=>{
8922736c2fSopenharmony_ci      console.info(`inputMethod publish finish, err = ${JSON.stringify(err)}`);
9022736c2fSopenharmony_ci    })
9122736c2fSopenharmony_ci  }
9222736c2fSopenharmony_ci
9322736c2fSopenharmony_ci  function subscribe(subscribeInfo, functionCode, done) {
9422736c2fSopenharmony_ci    commonEventManager.createSubscriber(subscribeInfo).then((data)=>{
9522736c2fSopenharmony_ci      let subscriber = data;
9622736c2fSopenharmony_ci      commonEventManager.subscribe(subscriber, (err, eventData)=>{
9722736c2fSopenharmony_ci        console.info("inputMethod subscribe");
9822736c2fSopenharmony_ci        if(eventData.code === TEST_RESULT_CODE) {
9922736c2fSopenharmony_ci          expect(true).assertTrue();
10022736c2fSopenharmony_ci        }else{
10122736c2fSopenharmony_ci          expect().assertFail();
10222736c2fSopenharmony_ci        }
10322736c2fSopenharmony_ci        commonEventManager.unsubscribe(subscriber);
10422736c2fSopenharmony_ci        done();
10522736c2fSopenharmony_ci      })
10622736c2fSopenharmony_ci      publishCommonEvent(functionCode);
10722736c2fSopenharmony_ci    })
10822736c2fSopenharmony_ci  }
10922736c2fSopenharmony_ci  /*
11022736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_showTextInput_001
11122736c2fSopenharmony_ci   * @tc.name    Test whether the keyboard is displayed successfully.
11222736c2fSopenharmony_ci   * @tc.desc    Function test
11322736c2fSopenharmony_ci   * @tc.level   2
11422736c2fSopenharmony_ci   */
11522736c2fSopenharmony_ci  it('inputmethod_with_attach_test_showTextInput_001', 0, async function (done) {
11622736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_showTextInput_001 Test start*************');
11722736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
11822736c2fSopenharmony_ci    inputMethodCtrl.showTextInput((err) => {
11922736c2fSopenharmony_ci      if (err) {
12022736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_showTextInput_001 result: ${JSON.stringify(err)}`);
12122736c2fSopenharmony_ci        expect().assertFail();
12222736c2fSopenharmony_ci        done();
12322736c2fSopenharmony_ci      }
12422736c2fSopenharmony_ci      console.info('inputmethod_with_attach_test_showTextInput_001 callback success');
12522736c2fSopenharmony_ci      expect(true).assertTrue();
12622736c2fSopenharmony_ci      done();
12722736c2fSopenharmony_ci    });
12822736c2fSopenharmony_ci  });
12922736c2fSopenharmony_ci
13022736c2fSopenharmony_ci  /*
13122736c2fSopenharmony_ci  * @tc.number  inputmethod_with_attach_test_showTextInput_002
13222736c2fSopenharmony_ci  * @tc.name    Test whether the keyboard is displayed successfully.
13322736c2fSopenharmony_ci  * @tc.desc    Function test
13422736c2fSopenharmony_ci  * @tc.level   2
13522736c2fSopenharmony_ci  */
13622736c2fSopenharmony_ci  it('inputmethod_with_attach_test_showTextInput_002', 0, async function (done) {
13722736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_showTextInput_002 Test start*************');
13822736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
13922736c2fSopenharmony_ci    inputMethodCtrl.showTextInput().then(() => {
14022736c2fSopenharmony_ci      console.info('inputmethod_with_attach_test_showTextInput_002 promise success');
14122736c2fSopenharmony_ci      expect(true).assertTrue();
14222736c2fSopenharmony_ci      done();
14322736c2fSopenharmony_ci    }).catch((error) => {
14422736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_showTextInput_002 result: ${JSON.stringify(error)}`);
14522736c2fSopenharmony_ci      expect().assertFail();
14622736c2fSopenharmony_ci      done();
14722736c2fSopenharmony_ci    });
14822736c2fSopenharmony_ci  });
14922736c2fSopenharmony_ci
15022736c2fSopenharmony_ci  /*
15122736c2fSopenharmony_ci  * @tc.number  inputmethod_with_attach_test_hideTextInput_001
15222736c2fSopenharmony_ci  * @tc.name    Test whether the keyboard is hide successfully.
15322736c2fSopenharmony_ci  * @tc.desc    Function test
15422736c2fSopenharmony_ci  * @tc.level   2
15522736c2fSopenharmony_ci  */
15622736c2fSopenharmony_ci  it('inputmethod_with_attach_test_hideTextInput_001', 0, async function (done) {
15722736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_hideTextInput_001 Test start*************');
15822736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
15922736c2fSopenharmony_ci    inputMethodCtrl.hideTextInput((err) => {
16022736c2fSopenharmony_ci      if (err) {
16122736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_hideTextInput_001 result: ${JSON.stringify(err)}`);
16222736c2fSopenharmony_ci        expect().assertFail();
16322736c2fSopenharmony_ci        done();
16422736c2fSopenharmony_ci        return;
16522736c2fSopenharmony_ci      }
16622736c2fSopenharmony_ci      console.info('inputmethod_with_attach_test_hideTextInput_001 callback success');
16722736c2fSopenharmony_ci      expect(true).assertTrue();
16822736c2fSopenharmony_ci      done();
16922736c2fSopenharmony_ci    });
17022736c2fSopenharmony_ci  });
17122736c2fSopenharmony_ci
17222736c2fSopenharmony_ci
17322736c2fSopenharmony_ci  /*
17422736c2fSopenharmony_ci  * @tc.number  inputmethod_with_attach_test_hideTextInput_002
17522736c2fSopenharmony_ci  * @tc.name    Test whether the keyboard is hide successfully.
17622736c2fSopenharmony_ci  * @tc.desc    Function test
17722736c2fSopenharmony_ci  * @tc.level   2
17822736c2fSopenharmony_ci  */
17922736c2fSopenharmony_ci  it('inputmethod_with_attach_test_hideTextInput_002', 0, async function (done) {
18022736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_hideTextInput_002 Test start*************');
18122736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
18222736c2fSopenharmony_ci    inputMethodCtrl.hideTextInput().then(() => {
18322736c2fSopenharmony_ci      console.info('inputmethod_with_attach_test_hideTextInput_002 promise success');
18422736c2fSopenharmony_ci      expect(true).assertTrue();
18522736c2fSopenharmony_ci      done();
18622736c2fSopenharmony_ci    }).catch((error) => {
18722736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_hideTextInput_002 result: ${JSON.stringify(error)}`);
18822736c2fSopenharmony_ci      expect().assertFail();
18922736c2fSopenharmony_ci      done();
19022736c2fSopenharmony_ci    });
19122736c2fSopenharmony_ci  });
19222736c2fSopenharmony_ci
19322736c2fSopenharmony_ci  /*
19422736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_setCallingWindow_001
19522736c2fSopenharmony_ci   * @tc.name    Test the window ID of the application that the notification system is currently bound to
19622736c2fSopenharmony_ci   *     the input method. After setting correctly, whether the window where the client is located can avoid
19722736c2fSopenharmony_ci   *     the input method window.
19822736c2fSopenharmony_ci   * @tc.desc    Function test
19922736c2fSopenharmony_ci   * @tc.level   2
20022736c2fSopenharmony_ci   */
20122736c2fSopenharmony_ci  it('inputmethod_with_attach_test_setCallingWindow_001', 0, async function (done) {
20222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_setCallingWindow_001 Test start*************');
20322736c2fSopenharmony_ci    try {
20422736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
20522736c2fSopenharmony_ci      let windId = 100;
20622736c2fSopenharmony_ci      inputMethodCtrl.setCallingWindow(windId, (err) => {
20722736c2fSopenharmony_ci      if (err) {
20822736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_setCallingWindow_001 result: ${JSON.stringify(err)}`);
20922736c2fSopenharmony_ci        expect().assertFail();
21022736c2fSopenharmony_ci        done();
21122736c2fSopenharmony_ci      }
21222736c2fSopenharmony_ci      console.info('inputmethod_with_attach_test_setCallingWindow_001 callback success');
21322736c2fSopenharmony_ci      expect(true).assertTrue();
21422736c2fSopenharmony_ci      done();
21522736c2fSopenharmony_ci      })
21622736c2fSopenharmony_ci    } catch (error) {
21722736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_setCallingWindow_001 result: ${JSON.stringify(error)}`);
21822736c2fSopenharmony_ci      expect().assertFail();
21922736c2fSopenharmony_ci      done();
22022736c2fSopenharmony_ci    }
22122736c2fSopenharmony_ci  });
22222736c2fSopenharmony_ci
22322736c2fSopenharmony_ci  /*
22422736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_setCallingWindow_002
22522736c2fSopenharmony_ci   * @tc.name    Test the window ID of the application that the notification system is currently bound to
22622736c2fSopenharmony_ci   *     the input method. After setting correctly, whether the window where the client is located can avoid
22722736c2fSopenharmony_ci   *     the input method window.
22822736c2fSopenharmony_ci   * @tc.desc    Function test
22922736c2fSopenharmony_ci   * @tc.level   2
23022736c2fSopenharmony_ci   */
23122736c2fSopenharmony_ci  it('inputmethod_with_attach_test_setCallingWindow_002', 0, async function (done) {
23222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_setCallingWindow_002 Test start*************');
23322736c2fSopenharmony_ci    try {
23422736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
23522736c2fSopenharmony_ci      let windId = 100;
23622736c2fSopenharmony_ci      inputMethodCtrl.setCallingWindow(windId).then(() => {
23722736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_setCallingWindow_002 promise success');
23822736c2fSopenharmony_ci        expect(true).assertTrue();
23922736c2fSopenharmony_ci        done();
24022736c2fSopenharmony_ci      }).catch((error) => {
24122736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_setCallingWindow_002 result: ${JSON.stringify(error)}`);
24222736c2fSopenharmony_ci        expect().assertFail();
24322736c2fSopenharmony_ci        done();
24422736c2fSopenharmony_ci      })
24522736c2fSopenharmony_ci    } catch (error) {
24622736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_setCallingWindow_002 result: ${JSON.stringify(error)}`);
24722736c2fSopenharmony_ci      expect().assertFail();
24822736c2fSopenharmony_ci      done();
24922736c2fSopenharmony_ci    }
25022736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_setCallingWindow_002 Test end*************');
25122736c2fSopenharmony_ci  });
25222736c2fSopenharmony_ci
25322736c2fSopenharmony_ci  /*
25422736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_updateCursor_001
25522736c2fSopenharmony_ci   * @tc.name    Test whether the notification input method is valid when the current application cursor has changed.
25622736c2fSopenharmony_ci   * @tc.desc    Function test
25722736c2fSopenharmony_ci   * @tc.level   2
25822736c2fSopenharmony_ci   */
25922736c2fSopenharmony_ci  it('inputmethod_with_attach_test_updateCursor_001', 0, async function (done) {
26022736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateCursor_001 Test start*************');
26122736c2fSopenharmony_ci    try {
26222736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
26322736c2fSopenharmony_ci      let cursorInfo = { left: 100, top: 110, width: 600, height: 800 };
26422736c2fSopenharmony_ci      inputMethodCtrl.updateCursor(cursorInfo, (err) => {
26522736c2fSopenharmony_ci        if (err) {
26622736c2fSopenharmony_ci          console.info(`inputmethod_with_attach_test_updateCursor_001 result: ${JSON.stringify(err)}`);
26722736c2fSopenharmony_ci          expect().assertFail();
26822736c2fSopenharmony_ci          done();
26922736c2fSopenharmony_ci          return;
27022736c2fSopenharmony_ci        }
27122736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_updateCursor_001 callback success');
27222736c2fSopenharmony_ci        expect(true).assertTrue();
27322736c2fSopenharmony_ci        done();
27422736c2fSopenharmony_ci      })
27522736c2fSopenharmony_ci    } catch (error) {
27622736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_updateCursor_001 result: ${JSON.stringify(error)}`);
27722736c2fSopenharmony_ci      expect().assertFail();
27822736c2fSopenharmony_ci      done();
27922736c2fSopenharmony_ci    }
28022736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateCursor_001 Test end*************');
28122736c2fSopenharmony_ci  });
28222736c2fSopenharmony_ci
28322736c2fSopenharmony_ci  /*
28422736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_updateCursor_002
28522736c2fSopenharmony_ci   * @tc.name    Test whether the notification input method is valid when the current application cursor has changed.
28622736c2fSopenharmony_ci   * @tc.desc    Function test
28722736c2fSopenharmony_ci   * @tc.level   2
28822736c2fSopenharmony_ci   */
28922736c2fSopenharmony_ci  it('inputmethod_with_attach_test_updateCursor_002', 0, async function (done) {
29022736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateCursor_002 Test start*************');
29122736c2fSopenharmony_ci    try {
29222736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
29322736c2fSopenharmony_ci      let cursorInfo = { left: 100, top: 110, width: 600, height: 800 };
29422736c2fSopenharmony_ci      inputMethodCtrl.updateCursor(cursorInfo).then(() => {
29522736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_updateCursor_002 promise success');
29622736c2fSopenharmony_ci        expect(true).assertTrue();
29722736c2fSopenharmony_ci        done();
29822736c2fSopenharmony_ci      }).catch((error) => {
29922736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_updateCursor_002 result: ${JSON.stringify(error)}`);
30022736c2fSopenharmony_ci        expect().assertFail();
30122736c2fSopenharmony_ci        done();
30222736c2fSopenharmony_ci      })
30322736c2fSopenharmony_ci    } catch (error) {
30422736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_updateCursor_002 result: ${JSON.stringify(error)}`);
30522736c2fSopenharmony_ci      expect().assertFail();
30622736c2fSopenharmony_ci      done();
30722736c2fSopenharmony_ci    }
30822736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateCursor_002 Test end*************');
30922736c2fSopenharmony_ci  });
31022736c2fSopenharmony_ci
31122736c2fSopenharmony_ci  /*
31222736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_changeSelection_001
31322736c2fSopenharmony_ci   * @tc.name    Test whether the selection range of the current application text of the notification input
31422736c2fSopenharmony_ci   *     method has changed.
31522736c2fSopenharmony_ci   * @tc.desc    Function test
31622736c2fSopenharmony_ci   * @tc.level   2
31722736c2fSopenharmony_ci   */
31822736c2fSopenharmony_ci  it('inputmethod_with_attach_test_changeSelection_001', 0, async function (done) {
31922736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_changeSelection_001 Test start*************');
32022736c2fSopenharmony_ci    try {
32122736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
32222736c2fSopenharmony_ci      let text = 'text';
32322736c2fSopenharmony_ci      let start = 0;
32422736c2fSopenharmony_ci      let end = 5;
32522736c2fSopenharmony_ci      inputMethodCtrl.changeSelection(text, start, end, (err) => {
32622736c2fSopenharmony_ci        if (err) {
32722736c2fSopenharmony_ci          console.info(`inputmethod_with_attach_test_changeSelection_001 result: ${JSON.stringify(err)}`);
32822736c2fSopenharmony_ci          expect().assertFail();
32922736c2fSopenharmony_ci          done();
33022736c2fSopenharmony_ci          return;
33122736c2fSopenharmony_ci        }
33222736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_changeSelection_001 callback success');
33322736c2fSopenharmony_ci        expect(true).assertTrue();
33422736c2fSopenharmony_ci        done();
33522736c2fSopenharmony_ci      })
33622736c2fSopenharmony_ci    } catch (error) {
33722736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_changeSelection_001 result: ${JSON.stringify(error)}`);
33822736c2fSopenharmony_ci      expect().assertFail();
33922736c2fSopenharmony_ci      done();
34022736c2fSopenharmony_ci    }
34122736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_changeSelection_001 Test end*************');
34222736c2fSopenharmony_ci  });
34322736c2fSopenharmony_ci
34422736c2fSopenharmony_ci  /*
34522736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_changeSelection_002
34622736c2fSopenharmony_ci   * @tc.name    Test whether the selection range of the current application text of the notification input
34722736c2fSopenharmony_ci   *     method has changed.
34822736c2fSopenharmony_ci   * @tc.desc    Function test
34922736c2fSopenharmony_ci   * @tc.level   2
35022736c2fSopenharmony_ci   */
35122736c2fSopenharmony_ci  it('inputmethod_with_attach_test_changeSelection_002', 0, async function (done) {
35222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_changeSelection_002 Test start*************');
35322736c2fSopenharmony_ci    try {
35422736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
35522736c2fSopenharmony_ci      let text = 'text';
35622736c2fSopenharmony_ci      let start = 0;
35722736c2fSopenharmony_ci      let end = 5;
35822736c2fSopenharmony_ci      inputMethodCtrl.changeSelection(text, start, end).then(() => {
35922736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_changeSelection_002 promise success');
36022736c2fSopenharmony_ci        expect(true).assertTrue();
36122736c2fSopenharmony_ci        done();
36222736c2fSopenharmony_ci      }).catch((error) => {
36322736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_changeSelection_002 result: ${JSON.stringify(error)}`);
36422736c2fSopenharmony_ci        expect().assertFail();
36522736c2fSopenharmony_ci        done();
36622736c2fSopenharmony_ci      })
36722736c2fSopenharmony_ci    } catch (error) {
36822736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_changeSelection_002 result: ${JSON.stringify(error)}`);
36922736c2fSopenharmony_ci      expect().assertFail();
37022736c2fSopenharmony_ci      done();
37122736c2fSopenharmony_ci    }
37222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_changeSelection_002 Test end*************');
37322736c2fSopenharmony_ci  });
37422736c2fSopenharmony_ci
37522736c2fSopenharmony_ci  /*
37622736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_updateAttribute_001
37722736c2fSopenharmony_ci   * @tc.name    Test whether the InputAttribute information can be updated successfully.
37822736c2fSopenharmony_ci   * @tc.desc    Function test
37922736c2fSopenharmony_ci   * @tc.level   2
38022736c2fSopenharmony_ci   */
38122736c2fSopenharmony_ci  it('inputmethod_with_attach_test_updateAttribute_001', 0, async function (done) {
38222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateAttribute_001 Test start*************');
38322736c2fSopenharmony_ci    try {
38422736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
38522736c2fSopenharmony_ci      let attribute = { textInputType: inputMethod.TextInputType.TEXT, enterKeyType: inputMethod.EnterKeyType.NONE };
38622736c2fSopenharmony_ci      inputMethodCtrl.updateAttribute(attribute, (err) => {
38722736c2fSopenharmony_ci        if (err) {
38822736c2fSopenharmony_ci          console.info(`inputmethod_with_attach_test_updateAttribute_001 result: ${JSON.stringify(err)}`);
38922736c2fSopenharmony_ci          expect().assertFail();
39022736c2fSopenharmony_ci          done();
39122736c2fSopenharmony_ci          return;
39222736c2fSopenharmony_ci        }
39322736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_updateAttribute_001 callback success');
39422736c2fSopenharmony_ci        expect(true).assertTrue();
39522736c2fSopenharmony_ci        done();
39622736c2fSopenharmony_ci      })
39722736c2fSopenharmony_ci    } catch (error) {
39822736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_updateAttribute_001 result: ${JSON.stringify(error)}`);
39922736c2fSopenharmony_ci      expect().assertFail();
40022736c2fSopenharmony_ci      done();
40122736c2fSopenharmony_ci    }
40222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateAttribute_001 Test end*************');
40322736c2fSopenharmony_ci  });
40422736c2fSopenharmony_ci
40522736c2fSopenharmony_ci  /*
40622736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_updateAttribute_001
40722736c2fSopenharmony_ci   * @tc.name    Test whether the InputAttribute information can be updated successfully.
40822736c2fSopenharmony_ci   * @tc.desc    Function test
40922736c2fSopenharmony_ci   * @tc.level   2
41022736c2fSopenharmony_ci   */
41122736c2fSopenharmony_ci  it('inputmethod_with_attach_test_updateAttribute_001', 0, async function (done) {
41222736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateAttribute_001 Test start*************');
41322736c2fSopenharmony_ci    try {
41422736c2fSopenharmony_ci      let inputMethodCtrl = inputMethod.getController();
41522736c2fSopenharmony_ci      let attribute = { textInputType: 1, enterKeyType: 1 };
41622736c2fSopenharmony_ci      inputMethodCtrl.updateAttribute(attribute).then(() => {
41722736c2fSopenharmony_ci        console.info('inputmethod_with_attach_test_updateAttribute_001 promise success');
41822736c2fSopenharmony_ci        expect(true).assertTrue();
41922736c2fSopenharmony_ci        done();
42022736c2fSopenharmony_ci      }).catch((error) => {
42122736c2fSopenharmony_ci        console.info(`inputmethod_with_attach_test_updateAttribute_001 result: ${JSON.stringify(error)}`);
42222736c2fSopenharmony_ci        expect().assertFail();
42322736c2fSopenharmony_ci        done();
42422736c2fSopenharmony_ci      })
42522736c2fSopenharmony_ci    } catch (error) {
42622736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_updateAttribute_001 result: ${JSON.stringify(error)}`);
42722736c2fSopenharmony_ci      expect().assertFail();
42822736c2fSopenharmony_ci      done();
42922736c2fSopenharmony_ci    }
43022736c2fSopenharmony_ci    console.info('************* inputmethod_with_attach_test_updateAttribute_001 Test end*************');
43122736c2fSopenharmony_ci  });
43222736c2fSopenharmony_ci
43322736c2fSopenharmony_ci  /*
43422736c2fSopenharmony_ci   * @tc.number  inputmethod_test_showSoftKeyboard_001
43522736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will show softboard with callback.
43622736c2fSopenharmony_ci   * @tc.desc    Function test
43722736c2fSopenharmony_ci   * @tc.level   2
43822736c2fSopenharmony_ci   */
43922736c2fSopenharmony_ci  it('inputmethod_test_showSoftKeyboard_001', 0, async function (done) {
44022736c2fSopenharmony_ci    console.info('************* inputmethod_test_showSoftKeyboard_001 Test start*************');
44122736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getInputMethodController();
44222736c2fSopenharmony_ci    inputMethodCtrl.showSoftKeyboard((err)=>{
44322736c2fSopenharmony_ci      if (err) {
44422736c2fSopenharmony_ci        console.info(`inputmethod_test_showSoftKeyboard_001 err, ${JSON.stringify(err.message)}`);
44522736c2fSopenharmony_ci        expect().assertFail();
44622736c2fSopenharmony_ci        done();
44722736c2fSopenharmony_ci      }
44822736c2fSopenharmony_ci      console.info('************* inputmethod_test_showSoftKeyboard_001 Test end*************');
44922736c2fSopenharmony_ci      expect(true).assertTrue();
45022736c2fSopenharmony_ci      done();
45122736c2fSopenharmony_ci    });
45222736c2fSopenharmony_ci  });
45322736c2fSopenharmony_ci
45422736c2fSopenharmony_ci  /*
45522736c2fSopenharmony_ci   * @tc.number  inputmethod_test_showSoftKeyboard_002
45622736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will show softboard with callback.
45722736c2fSopenharmony_ci   * @tc.desc    Function test
45822736c2fSopenharmony_ci   * @tc.level   2
45922736c2fSopenharmony_ci   */
46022736c2fSopenharmony_ci  it('inputmethod_test_showSoftKeyboard_002', 0, async function (done) {
46122736c2fSopenharmony_ci    console.info('************* inputmethod_test_showSoftKeyboard_002 Test start*************');
46222736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getInputMethodController();
46322736c2fSopenharmony_ci    inputMethodCtrl.showSoftKeyboard().then(()=>{
46422736c2fSopenharmony_ci      console.info('inputmethod_test_showSoftKeyboard_002 success.');
46522736c2fSopenharmony_ci      expect(true).assertTrue();
46622736c2fSopenharmony_ci      done();
46722736c2fSopenharmony_ci    }).catch((err) => {
46822736c2fSopenharmony_ci      console.info(`inputmethod_test_showSoftKeyboard_002 err, ${JSON.stringify(err.message)}`);
46922736c2fSopenharmony_ci      expect().assertFail();
47022736c2fSopenharmony_ci      done();
47122736c2fSopenharmony_ci    });
47222736c2fSopenharmony_ci  });
47322736c2fSopenharmony_ci
47422736c2fSopenharmony_ci  /*
47522736c2fSopenharmony_ci   * @tc.number  inputmethod_test_hideSoftKeyboard_001
47622736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will hide softboard with callback.
47722736c2fSopenharmony_ci   * @tc.desc    Function test
47822736c2fSopenharmony_ci   * @tc.level   2
47922736c2fSopenharmony_ci   */
48022736c2fSopenharmony_ci  it('inputmethod_test_hideSoftKeyboard_001', 0, async function (done) {
48122736c2fSopenharmony_ci    console.info('************* inputmethod_test_hideSoftKeyboard_001 Test start*************');
48222736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getInputMethodController();
48322736c2fSopenharmony_ci    inputMethodCtrl.hideSoftKeyboard((err)=>{
48422736c2fSopenharmony_ci      if(err){
48522736c2fSopenharmony_ci        console.info(`inputmethod_test_hideSoftKeyboard_001 err, ${JSON.stringify(err.message)}`);
48622736c2fSopenharmony_ci        expect().assertFail();
48722736c2fSopenharmony_ci        done();
48822736c2fSopenharmony_ci      }
48922736c2fSopenharmony_ci      console.info('************* inputmethod_test_hideSoftKeyboard_001  Test end*************');
49022736c2fSopenharmony_ci      expect(true).assertTrue();
49122736c2fSopenharmony_ci      done();
49222736c2fSopenharmony_ci    });
49322736c2fSopenharmony_ci  });
49422736c2fSopenharmony_ci
49522736c2fSopenharmony_ci  /*
49622736c2fSopenharmony_ci   * @tc.number  inputmethod_test_hideSoftKeyboard_001
49722736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will hide softboard with callback.
49822736c2fSopenharmony_ci   * @tc.desc    Function test
49922736c2fSopenharmony_ci   * @tc.level   2
50022736c2fSopenharmony_ci   */
50122736c2fSopenharmony_ci  it('inputmethod_test_hideSoftKeyboard_002', 0, async function (done) {
50222736c2fSopenharmony_ci    console.info('************* inputmethod_test_hideSoftKeyboard_002 Test start*************');
50322736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getInputMethodController();
50422736c2fSopenharmony_ci    inputMethodCtrl.hideSoftKeyboard().then(()=>{
50522736c2fSopenharmony_ci      console.info('inputmethod_test_hideSoftKeyboard_002 success.');
50622736c2fSopenharmony_ci      expect(true).assertTrue();
50722736c2fSopenharmony_ci      done();
50822736c2fSopenharmony_ci    }).catch((err) => {
50922736c2fSopenharmony_ci      console.info(`inputmethod_test_hideSoftKeyboard_002 err, ${JSON.stringify(err.message)}`);
51022736c2fSopenharmony_ci      expect().assertFail();
51122736c2fSopenharmony_ci      done();
51222736c2fSopenharmony_ci    });
51322736c2fSopenharmony_ci  });
51422736c2fSopenharmony_ci
51522736c2fSopenharmony_ci  /*
51622736c2fSopenharmony_ci   * @tc.number  inputmethod_test_stopInputSessionWithAttach_001
51722736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will hides the keyboard.
51822736c2fSopenharmony_ci   * @tc.desc    Function test
51922736c2fSopenharmony_ci   * @tc.level   2
52022736c2fSopenharmony_ci   */
52122736c2fSopenharmony_ci  it('inputmethod_test_stopInputSessionWithAttach_001', 0, function (done) {
52222736c2fSopenharmony_ci    console.info('************* inputmethod_test_stopInputSessionWithAttach_001 Test start*************');
52322736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
52422736c2fSopenharmony_ci    inputMethodCtrl.stopInputSession((err, ret) => {
52522736c2fSopenharmony_ci      if (err) {
52622736c2fSopenharmony_ci        console.info(`inputmethod_test_stopInputSessionWithAttach_001 err, ${JSON.stringify(err.message)}`);
52722736c2fSopenharmony_ci        expect().assertFail();
52822736c2fSopenharmony_ci        done();
52922736c2fSopenharmony_ci        return;
53022736c2fSopenharmony_ci      }
53122736c2fSopenharmony_ci      expect(ret).assertTrue();
53222736c2fSopenharmony_ci      console.info('************* inputmethod_test_stopInputSessionWithAttach_001 Test end*************');
53322736c2fSopenharmony_ci      done();
53422736c2fSopenharmony_ci    });
53522736c2fSopenharmony_ci  });
53622736c2fSopenharmony_ci
53722736c2fSopenharmony_ci  /*
53822736c2fSopenharmony_ci * @tc.number  inputmethod_test_stopInputSessionWithAttach_002
53922736c2fSopenharmony_ci * @tc.name    Test Indicates the input method which will hides the keyboard.
54022736c2fSopenharmony_ci * @tc.desc    Function test
54122736c2fSopenharmony_ci * @tc.level   2
54222736c2fSopenharmony_ci */
54322736c2fSopenharmony_ci  it('inputmethod_test_stopInputSessionWithAttach_002', 0, function (done) {
54422736c2fSopenharmony_ci    console.info('************* inputmethod_test_stopInputSessionWithAttach_002 Test start*************');
54522736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
54622736c2fSopenharmony_ci    inputMethodCtrl.hideSoftKeyboard().then((result)=>{
54722736c2fSopenharmony_ci      if (result) {
54822736c2fSopenharmony_ci        console.info('inputmethod_test_stopInputSessionWithAttach_002 failed.');
54922736c2fSopenharmony_ci        expect().assertFail();
55022736c2fSopenharmony_ci        done();
55122736c2fSopenharmony_ci      }
55222736c2fSopenharmony_ci      console.info('inputmethod_test_stopInputSessionWithAttach_002 success.');
55322736c2fSopenharmony_ci      expect(true).assertTrue();
55422736c2fSopenharmony_ci      done();
55522736c2fSopenharmony_ci    }).catch((err) => {
55622736c2fSopenharmony_ci      console.info(`inputmethod_test_stopInputSessionWithAttach_002 err, ${JSON.stringify(err.message)}`);
55722736c2fSopenharmony_ci      expect().assertFail();
55822736c2fSopenharmony_ci      done();
55922736c2fSopenharmony_ci    });
56022736c2fSopenharmony_ci  });
56122736c2fSopenharmony_ci
56222736c2fSopenharmony_ci  /*
56322736c2fSopenharmony_ci   * @tc.number  inputmethod_with_attach_test_on_000
56422736c2fSopenharmony_ci   * @tc.name    Test whether the register the callback of the input method is valid.
56522736c2fSopenharmony_ci   * @tc.desc    Function test
56622736c2fSopenharmony_ci   * @tc.level   2
56722736c2fSopenharmony_ci   */
56822736c2fSopenharmony_ci  it('inputmethod_with_attach_test_on_000', 0, async function (done) {
56922736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
57022736c2fSopenharmony_ci    try {
57122736c2fSopenharmony_ci      inputMethodCtrl.on('insertText', (text) => {
57222736c2fSopenharmony_ci        console.info(`inputMethod insertText success, text: ${JSON.stringify(text)}`);
57322736c2fSopenharmony_ci      });
57422736c2fSopenharmony_ci      inputMethodCtrl.on('deleteLeft', (length) => {
57522736c2fSopenharmony_ci        console.info(`inputMethod deleteLeft success, length: ${JSON.stringify(length)}`);
57622736c2fSopenharmony_ci      });
57722736c2fSopenharmony_ci      inputMethodCtrl.on('deleteRight', (length) => {
57822736c2fSopenharmony_ci        console.info(`inputMethod deleteRight success, length: ${JSON.stringify(length)}`);
57922736c2fSopenharmony_ci      });
58022736c2fSopenharmony_ci      inputMethodCtrl.on('sendKeyboardStatus', (keyBoardStatus) => {
58122736c2fSopenharmony_ci        console.info(`inputMethod sendKeyboardStatus success, keyBoardStatus: ${JSON.stringify(keyBoardStatus)}`);
58222736c2fSopenharmony_ci      });
58322736c2fSopenharmony_ci      inputMethodCtrl.on('sendFunctionKey', (functionKey) => {
58422736c2fSopenharmony_ci        console.info(`inputMethod sendFunctionKey success,
58522736c2fSopenharmony_ci          functionKey.enterKeyType: ${JSON.stringify(functionKey.enterKeyType)}`);
58622736c2fSopenharmony_ci      });
58722736c2fSopenharmony_ci      inputMethodCtrl.on('moveCursor', (direction) => {
58822736c2fSopenharmony_ci        console.info(`inputMethod moveCursor success, direction: ${JSON.stringify(direction)}`);
58922736c2fSopenharmony_ci      });
59022736c2fSopenharmony_ci      inputMethodCtrl.on('handleExtendAction', (action) => {
59122736c2fSopenharmony_ci        console.info(`inputMethod handleExtendAction success, action: ${JSON.stringify(action)}`);
59222736c2fSopenharmony_ci      });
59322736c2fSopenharmony_ci      expect(true).assertTrue();
59422736c2fSopenharmony_ci      done();
59522736c2fSopenharmony_ci    } catch(error) {
59622736c2fSopenharmony_ci      console.info(`inputmethod_with_attach_test_on_000 result: ${JSON.stringify(error)}`);
59722736c2fSopenharmony_ci      expect().assertFail();
59822736c2fSopenharmony_ci      done();
59922736c2fSopenharmony_ci    }
60022736c2fSopenharmony_ci  });
60122736c2fSopenharmony_ci
60222736c2fSopenharmony_ci  /*
60322736c2fSopenharmony_ci   * @tc.number  inputmethod_test_insertTextSync_001
60422736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
60522736c2fSopenharmony_ci   * @tc.desc    Function test
60622736c2fSopenharmony_ci   * @tc.level   2
60722736c2fSopenharmony_ci   */
60822736c2fSopenharmony_ci  it('inputmethod_test_insertTextSync_001', 0, async function (done) {
60922736c2fSopenharmony_ci    console.info('************* inputmethod_test_insertTextSync_001 Test start*************');
61022736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
61122736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
61222736c2fSopenharmony_ci    try {
61322736c2fSopenharmony_ci      inputMethodCtrl.on('insertText', (text) => {
61422736c2fSopenharmony_ci        console.info(`inputMethod insertText success, text: ${JSON.stringify(text)}`);
61522736c2fSopenharmony_ci        expect(true).assertTrue();
61622736c2fSopenharmony_ci        done();
61722736c2fSopenharmony_ci      });
61822736c2fSopenharmony_ci      publishCommonEvent(TEST_FUNCTION.INSERT_TEXT_SYNC);
61922736c2fSopenharmony_ci    } catch(error) {
62022736c2fSopenharmony_ci      console.info(`inputmethod_test_insertTextSync result: ${JSON.stringify(error)}`);
62122736c2fSopenharmony_ci      expect().assertFail();
62222736c2fSopenharmony_ci      done();
62322736c2fSopenharmony_ci    }
62422736c2fSopenharmony_ci  });
62522736c2fSopenharmony_ci
62622736c2fSopenharmony_ci  /*
62722736c2fSopenharmony_ci   * @tc.number  inputmethod_test_moveCursorSync_001
62822736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
62922736c2fSopenharmony_ci   * @tc.desc    Function test
63022736c2fSopenharmony_ci   * @tc.level   2
63122736c2fSopenharmony_ci   */
63222736c2fSopenharmony_ci  it('inputmethod_test_moveCursorSync_001', 0, async function (done) {
63322736c2fSopenharmony_ci    console.info('************* inputmethod_test_moveCursorSync_001 Test start*************');
63422736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
63522736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
63622736c2fSopenharmony_ci    try {
63722736c2fSopenharmony_ci      inputMethodCtrl.on('moveCursor', (direction) => {
63822736c2fSopenharmony_ci        console.info(`inputMethod moveCursor success, direction: ${direction}`);
63922736c2fSopenharmony_ci        expect(true).assertTrue();
64022736c2fSopenharmony_ci        done();
64122736c2fSopenharmony_ci      });
64222736c2fSopenharmony_ci      publishCommonEvent(TEST_FUNCTION.MOVE_CURSOR_SYNC);
64322736c2fSopenharmony_ci    } catch(error) {
64422736c2fSopenharmony_ci      console.info(`inputmethod_text_moveCursorSync result: ${JSON.stringify(error)}`);
64522736c2fSopenharmony_ci      expect().assertFail();
64622736c2fSopenharmony_ci      done();
64722736c2fSopenharmony_ci    }
64822736c2fSopenharmony_ci  });
64922736c2fSopenharmony_ci
65022736c2fSopenharmony_ci  /*
65122736c2fSopenharmony_ci   * @tc.number  inputmethod_test_getEditorAttributeSync_001
65222736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
65322736c2fSopenharmony_ci   * @tc.desc    Function test
65422736c2fSopenharmony_ci   * @tc.level   2
65522736c2fSopenharmony_ci   */
65622736c2fSopenharmony_ci  it('inputmethod_test_getEditorAttributeSync_001', 0, async function (done) {
65722736c2fSopenharmony_ci    console.info('************* inputmethod_test_getEditorAttributeSync_001 Test start*************');
65822736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
65922736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
66022736c2fSopenharmony_ci    try {
66122736c2fSopenharmony_ci      let subscribeInfo = {
66222736c2fSopenharmony_ci        events: ['getEditorAttributeSyncResult']
66322736c2fSopenharmony_ci      };
66422736c2fSopenharmony_ci      subscribe(subscribeInfo, TEST_FUNCTION.GET_ATTRIBUTE_SYNC, done);
66522736c2fSopenharmony_ci    } catch(error) {
66622736c2fSopenharmony_ci      console.info(`inputmethod_test_getEditorAttributeSync_001 result: ${JSON.stringify(error)}`);
66722736c2fSopenharmony_ci      expect().assertFail();
66822736c2fSopenharmony_ci      done();
66922736c2fSopenharmony_ci    }
67022736c2fSopenharmony_ci  });
67122736c2fSopenharmony_ci
67222736c2fSopenharmony_ci  /*
67322736c2fSopenharmony_ci   * @tc.number  inputmethod_test_SelectByRangeSync_001
67422736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
67522736c2fSopenharmony_ci   * @tc.desc    Function test
67622736c2fSopenharmony_ci   * @tc.level   2
67722736c2fSopenharmony_ci   */
67822736c2fSopenharmony_ci  it('inputmethod_test_selectByRangeSync_001', 0, async function (done) {
67922736c2fSopenharmony_ci    console.info('************* inputmethod_test_selectByRangeSync_001 Test start*************');
68022736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
68122736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
68222736c2fSopenharmony_ci    try {
68322736c2fSopenharmony_ci      inputMethodCtrl.on('selectByRange', (range) => {
68422736c2fSopenharmony_ci        console.info(`inputMethod selectByRangeSync success, direction: ${range}`);
68522736c2fSopenharmony_ci        expect(true).assertTrue();
68622736c2fSopenharmony_ci        done();
68722736c2fSopenharmony_ci      });
68822736c2fSopenharmony_ci      publishCommonEvent(TEST_FUNCTION.SELECT_BY_RANGE_SYNC);
68922736c2fSopenharmony_ci    } catch(error) {
69022736c2fSopenharmony_ci      console.info(`inputmethod_text_selectByRangeSync result: ${JSON.stringify(error)}`);
69122736c2fSopenharmony_ci      expect().assertFail();
69222736c2fSopenharmony_ci       done();
69322736c2fSopenharmony_ci     }
69422736c2fSopenharmony_ci  });
69522736c2fSopenharmony_ci
69622736c2fSopenharmony_ci  /*
69722736c2fSopenharmony_ci   * @tc.number  inputmethod_test_selectByMovementSync_001
69822736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
69922736c2fSopenharmony_ci   * @tc.desc    Function test
70022736c2fSopenharmony_ci   * @tc.level   2
70122736c2fSopenharmony_ci   */
70222736c2fSopenharmony_ci  it('inputmethod_test_selectByMovementSync_001', 0, async function (done) {
70322736c2fSopenharmony_ci    console.info('************* inputmethod_test_selectByMovementSync_001 Test start*************');
70422736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
70522736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
70622736c2fSopenharmony_ci    try {
70722736c2fSopenharmony_ci      inputMethodCtrl.on('selectByMovement', (movement) => {
70822736c2fSopenharmony_ci        console.info(`inputMethod selectByMovementSync success, movement: ${movement}`);
70922736c2fSopenharmony_ci        expect(true).assertTrue();
71022736c2fSopenharmony_ci        done();
71122736c2fSopenharmony_ci      });
71222736c2fSopenharmony_ci      publishCommonEvent(TEST_FUNCTION.SELECT_BY_MOVEMENT_SYNC);
71322736c2fSopenharmony_ci    } catch(error) {
71422736c2fSopenharmony_ci      console.info(`inputmethod_text_selectByMovementSync result: ${JSON.stringify(error)}`);
71522736c2fSopenharmony_ci      expect().assertFail();
71622736c2fSopenharmony_ci       done();
71722736c2fSopenharmony_ci     }
71822736c2fSopenharmony_ci  });
71922736c2fSopenharmony_ci
72022736c2fSopenharmony_ci  /*
72122736c2fSopenharmony_ci   * @tc.number  inputmethod_test_selectByMovementSync_001
72222736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
72322736c2fSopenharmony_ci   * @tc.desc    Function test
72422736c2fSopenharmony_ci   * @tc.level   2
72522736c2fSopenharmony_ci   */
72622736c2fSopenharmony_ci  it('inputmethod_test_getTextIndexAtCursorSync_001', 0, async function (done) {
72722736c2fSopenharmony_ci    console.info('************* inputmethod_test_getTextIndexAtCursorSync_001 Test start*************');
72822736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
72922736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
73022736c2fSopenharmony_ci    try {
73122736c2fSopenharmony_ci      inputMethodCtrl.on('getTextIndexAtCursor', () => {
73222736c2fSopenharmony_ci        console.info(`inputMethod getTextIndexAtCursor success`);
73322736c2fSopenharmony_ci        return 2;
73422736c2fSopenharmony_ci      });
73522736c2fSopenharmony_ci      let subscribeInfo = {
73622736c2fSopenharmony_ci        events: ['getTextIndexAtCursorSyncResult']
73722736c2fSopenharmony_ci      };
73822736c2fSopenharmony_ci      subscribe(subscribeInfo, TEST_FUNCTION.GET_INDEX_AT_CURSOR_SYNC, done);
73922736c2fSopenharmony_ci    } catch(error) {
74022736c2fSopenharmony_ci      console.info(`inputmethod_test_getTextIndexAtCursorSync_001 result: ${JSON.stringify(error)}`);
74122736c2fSopenharmony_ci      expect().assertFail();
74222736c2fSopenharmony_ci      done();
74322736c2fSopenharmony_ci    }
74422736c2fSopenharmony_ci  });
74522736c2fSopenharmony_ci
74622736c2fSopenharmony_ci  /*
74722736c2fSopenharmony_ci   * @tc.number  inputmethod_test_deleteForwardSync_001
74822736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
74922736c2fSopenharmony_ci   * @tc.desc    Function test
75022736c2fSopenharmony_ci   * @tc.level   2
75122736c2fSopenharmony_ci   */
75222736c2fSopenharmony_ci  it('inputmethod_test_deleteForwardSync_001', 0, async function (done) {
75322736c2fSopenharmony_ci    console.info('************* inputmethod_test_deleteForwardSync_001 Test start*************');
75422736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
75522736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
75622736c2fSopenharmony_ci    try {
75722736c2fSopenharmony_ci      inputMethodCtrl.on('deleteLeft', (length) => {
75822736c2fSopenharmony_ci        console.info(`inputMethod deleteForwardSync success, length: ${length}`);
75922736c2fSopenharmony_ci        expect(true).assertTrue();
76022736c2fSopenharmony_ci        done();
76122736c2fSopenharmony_ci      });
76222736c2fSopenharmony_ci      publishCommonEvent(TEST_FUNCTION.DELETE_FORWARD_SYNC);
76322736c2fSopenharmony_ci    } catch(error) {
76422736c2fSopenharmony_ci      console.info(`inputmethod_text_deleteForwardSync result: ${JSON.stringify(error)}`);
76522736c2fSopenharmony_ci      expect().assertFail();
76622736c2fSopenharmony_ci      done();
76722736c2fSopenharmony_ci    }
76822736c2fSopenharmony_ci  });
76922736c2fSopenharmony_ci
77022736c2fSopenharmony_ci  /*
77122736c2fSopenharmony_ci   * @tc.number  inputmethod_test_deleteBackwardSync_001
77222736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
77322736c2fSopenharmony_ci   * @tc.desc    Function test
77422736c2fSopenharmony_ci   * @tc.level   2
77522736c2fSopenharmony_ci   */
77622736c2fSopenharmony_ci  it('inputmethod_test_deleteBackwardSync_001', 0, async function (done) {
77722736c2fSopenharmony_ci    console.info('************* inputmethod_test_deleteBackwardSync_001 Test start*************');
77822736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
77922736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
78022736c2fSopenharmony_ci    try {
78122736c2fSopenharmony_ci      inputMethodCtrl.on('deleteRight', (length) => {
78222736c2fSopenharmony_ci        console.info(`inputMethod deleteBackwardSync success, length: ${length}`);
78322736c2fSopenharmony_ci        expect(true).assertTrue();
78422736c2fSopenharmony_ci        done();
78522736c2fSopenharmony_ci      });
78622736c2fSopenharmony_ci      publishCommonEvent(TEST_FUNCTION.DELETE_BACKWARD_SYNC);
78722736c2fSopenharmony_ci    } catch(error) {
78822736c2fSopenharmony_ci      console.info(`inputmethod_text_deleteBackwardSync result: ${JSON.stringify(error)}`);
78922736c2fSopenharmony_ci      expect().assertFail();
79022736c2fSopenharmony_ci      done();
79122736c2fSopenharmony_ci    }
79222736c2fSopenharmony_ci  });
79322736c2fSopenharmony_ci
79422736c2fSopenharmony_ci  /*
79522736c2fSopenharmony_ci   * @tc.number  inputmethod_test_getForwardSync_001
79622736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
79722736c2fSopenharmony_ci   * @tc.desc    Function test
79822736c2fSopenharmony_ci   * @tc.level   2
79922736c2fSopenharmony_ci   */
80022736c2fSopenharmony_ci  it('inputmethod_test_getForwardSync_001', 0, async function (done) {
80122736c2fSopenharmony_ci    console.info('************* inputmethod_test_getForwardSync_001 Test start*************');
80222736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
80322736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
80422736c2fSopenharmony_ci    try {
80522736c2fSopenharmony_ci      inputMethodCtrl.on('getLeftTextOfCursor', (length) => {
80622736c2fSopenharmony_ci        console.info(`inputMethod getForwardSync success, length: ${length}`);
80722736c2fSopenharmony_ci        return 'getLeftTextOfCursor';
80822736c2fSopenharmony_ci      });
80922736c2fSopenharmony_ci      let subscribeInfo = {
81022736c2fSopenharmony_ci        events: ['getForwardSyncResult']
81122736c2fSopenharmony_ci      };
81222736c2fSopenharmony_ci      subscribe(subscribeInfo, TEST_FUNCTION.GET_FORWARD_SYNC, done);
81322736c2fSopenharmony_ci    } catch(error) {
81422736c2fSopenharmony_ci      console.info(`inputmethod_text_getForwardSync result: ${JSON.stringify(error)}`);
81522736c2fSopenharmony_ci      expect().assertFail();
81622736c2fSopenharmony_ci      done();
81722736c2fSopenharmony_ci    }
81822736c2fSopenharmony_ci  });
81922736c2fSopenharmony_ci  /*
82022736c2fSopenharmony_ci   * @tc.number  inputmethod_test_getBackwardSync_001
82122736c2fSopenharmony_ci   * @tc.name    Test Indicates the input method which will replace the current one.
82222736c2fSopenharmony_ci   * @tc.desc    Function test
82322736c2fSopenharmony_ci   * @tc.level   2
82422736c2fSopenharmony_ci   */
82522736c2fSopenharmony_ci  it('inputmethod_test_getBackwardSync_001', 0, async function (done) {
82622736c2fSopenharmony_ci    console.info('************* inputmethod_test_getBackwardSync_001 Test start*************');
82722736c2fSopenharmony_ci    let inputMethodCtrl = inputMethod.getController();
82822736c2fSopenharmony_ci    await inputMethodCtrl.showSoftKeyboard();
82922736c2fSopenharmony_ci    try {
83022736c2fSopenharmony_ci      inputMethodCtrl.on('getRightTextOfCursor', (length) => {
83122736c2fSopenharmony_ci        console.info(`inputMethod getBackwardSync success, length: ${length}`);
83222736c2fSopenharmony_ci        return 'getRightTextOfCursor';
83322736c2fSopenharmony_ci      });
83422736c2fSopenharmony_ci      let subscribeInfo = {
83522736c2fSopenharmony_ci        events: ['getBackwardSyncResult']
83622736c2fSopenharmony_ci      };
83722736c2fSopenharmony_ci      subscribe(subscribeInfo, TEST_FUNCTION.GET_BACKWARD_SYNC, done);
83822736c2fSopenharmony_ci    } catch(error) {
83922736c2fSopenharmony_ci      console.info(`inputmethod_text_getBackwardSync result: ${JSON.stringify(error)}`);
84022736c2fSopenharmony_ci      expect().assertFail();
84122736c2fSopenharmony_ci      done();
84222736c2fSopenharmony_ci    }
84322736c2fSopenharmony_ci  });
84422736c2fSopenharmony_ci
84522736c2fSopenharmony_ci  /*
84622736c2fSopenharmony_ci   * @tc.number  inputmethod_test_isPanelShown_001
84722736c2fSopenharmony_ci   * @tc.name    Test Indicates querying by isPanelShown.
84822736c2fSopenharmony_ci   * @tc.desc    Function test
84922736c2fSopenharmony_ci   * @tc.level   2
85022736c2fSopenharmony_ci   */
85122736c2fSopenharmony_ci  it('inputmethod_test_isPanelShown_001', 0, async function (done) {
85222736c2fSopenharmony_ci    console.info('************* inputmethod_test_isPanelShown_001 Test start*************');
85322736c2fSopenharmony_ci    try {
85422736c2fSopenharmony_ci      let cfg = {
85522736c2fSopenharmony_ci        inputAttribute:
85622736c2fSopenharmony_ci            {
85722736c2fSopenharmony_ci              textInputType: inputMethod.TextInputType.TEXT,
85822736c2fSopenharmony_ci              enterKeyType: inputMethod.EnterKeyType.NONE
85922736c2fSopenharmony_ci            }
86022736c2fSopenharmony_ci      };
86122736c2fSopenharmony_ci      await inputMethod.getController().attach(true, cfg);
86222736c2fSopenharmony_ci      setTimeout(()=>{
86322736c2fSopenharmony_ci        let result = inputMethod.getSetting().isPanelShown({type: PanelType.SOFT_KEYBOARD});
86422736c2fSopenharmony_ci        if (result) {
86522736c2fSopenharmony_ci          expect(true).assertTrue();
86622736c2fSopenharmony_ci        } else {
86722736c2fSopenharmony_ci          expect().assertFail();
86822736c2fSopenharmony_ci        }
86922736c2fSopenharmony_ci        done();
87022736c2fSopenharmony_ci      }, WAIT_DEAL_OK);
87122736c2fSopenharmony_ci    } catch (error) {
87222736c2fSopenharmony_ci      console.info(`inputmethod_test_isPanelShown_001 result: ${JSON.stringify(error)}`);
87322736c2fSopenharmony_ci      expect().assertFail();
87422736c2fSopenharmony_ci      done();
87522736c2fSopenharmony_ci    }
87622736c2fSopenharmony_ci  });
87722736c2fSopenharmony_ci
87822736c2fSopenharmony_ci  /*
87922736c2fSopenharmony_ci   * @tc.number  inputmethod_test_isPanelShown_002
88022736c2fSopenharmony_ci   * @tc.name    Test Indicates querying by isPanelShown.
88122736c2fSopenharmony_ci   * @tc.desc    Function test
88222736c2fSopenharmony_ci   * @tc.level   2
88322736c2fSopenharmony_ci   */
88422736c2fSopenharmony_ci  it('inputmethod_test_isPanelShown_002', 0, async function (done) {
88522736c2fSopenharmony_ci    console.info('************* inputmethod_test_isPanelShown_002 Test start*************');
88622736c2fSopenharmony_ci    try {
88722736c2fSopenharmony_ci      let subscribeInfo = {
88822736c2fSopenharmony_ci        events: ['changeFlag']
88922736c2fSopenharmony_ci      };
89022736c2fSopenharmony_ci      subscribe(subscribeInfo, TEST_FUNCTION.CHANGE_FLAG_TO_FLOATING, () => {
89122736c2fSopenharmony_ci        let result = inputMethod.getSetting().isPanelShown({
89222736c2fSopenharmony_ci          type: PanelType.SOFT_KEYBOARD,
89322736c2fSopenharmony_ci          flag: PanelFlag.FLAG_FLOATING
89422736c2fSopenharmony_ci        });
89522736c2fSopenharmony_ci        if (result) {
89622736c2fSopenharmony_ci          expect(true).assertTrue();
89722736c2fSopenharmony_ci        } else {
89822736c2fSopenharmony_ci          expect().assertFail();
89922736c2fSopenharmony_ci        }
90022736c2fSopenharmony_ci        subscribe(subscribeInfo, TEST_FUNCTION.CHANGE_FLAG_TO_FIXED, done);
90122736c2fSopenharmony_ci      });
90222736c2fSopenharmony_ci    } catch (error) {
90322736c2fSopenharmony_ci      console.info(`inputmethod_test_isPanelShown_002 result: ${JSON.stringify(error)}`);
90422736c2fSopenharmony_ci      expect().assertFail();
90522736c2fSopenharmony_ci      done();
90622736c2fSopenharmony_ci    }
90722736c2fSopenharmony_ci  });
90822736c2fSopenharmony_ci
90922736c2fSopenharmony_ci  /*
91022736c2fSopenharmony_ci   * @tc.number  inputmethod_test_setPrivacyModeWithoutPermission_001
91122736c2fSopenharmony_ci   * @tc.name    Test Indicates set panel privacy mode without permission.
91222736c2fSopenharmony_ci   * @tc.desc    Function test
91322736c2fSopenharmony_ci   * @tc.level   2
91422736c2fSopenharmony_ci   */
91522736c2fSopenharmony_ci  it('inputmethod_test_setPrivacyModeWithoutPermission_001', 0, async function (done) {
91622736c2fSopenharmony_ci    console.info('************* inputmethod_test_setPrivacyModeWithoutPermission_001 Test start*************');
91722736c2fSopenharmony_ci    try {
91822736c2fSopenharmony_ci      let subscribeInfo = {
91922736c2fSopenharmony_ci        events: ['setPrivacyModeWithoutPermissionResult']
92022736c2fSopenharmony_ci      };
92122736c2fSopenharmony_ci      subscribe(subscribeInfo, TEST_FUNCTION.SETPRIVACYMODE_WITHOUT_PERMISSION, done);
92222736c2fSopenharmony_ci    } catch(error) {
92322736c2fSopenharmony_ci      console.info(`inputmethod_test_setPrivacyModeWithoutPermission_001 result: ${JSON.stringify(error)}`);
92422736c2fSopenharmony_ci      expect().assertFail();
92522736c2fSopenharmony_ci      done();
92622736c2fSopenharmony_ci    }
92722736c2fSopenharmony_ci  });
92822736c2fSopenharmony_ci
92922736c2fSopenharmony_ci  /*
93022736c2fSopenharmony_ci   * @tc.number  inputmethod_test_setPrivacyModeErrorParam_001
93122736c2fSopenharmony_ci   * @tc.name    Test Indicates set panel privacy mode with undefined param.
93222736c2fSopenharmony_ci   * @tc.desc    Function test
93322736c2fSopenharmony_ci   * @tc.level   2
93422736c2fSopenharmony_ci   */
93522736c2fSopenharmony_ci    it('inputmethod_test_setPrivacyModeErrorParam_001', 0, async function (done) {
93622736c2fSopenharmony_ci      console.info('************* inputmethod_test_setPrivacyModeErrorParam_001 Test start*************');
93722736c2fSopenharmony_ci      try {
93822736c2fSopenharmony_ci        let subscribeInfo = {
93922736c2fSopenharmony_ci          events: ['setPrivacyModeErrorParamResult']
94022736c2fSopenharmony_ci        };
94122736c2fSopenharmony_ci        subscribe(subscribeInfo, TEST_FUNCTION.SETPRIVACYMODE_ERROR_PARAM, done);
94222736c2fSopenharmony_ci      } catch(error) {
94322736c2fSopenharmony_ci        console.info(`inputmethod_test_setPrivacyModeErrorParam_001 result: ${JSON.stringify(error)}`);
94422736c2fSopenharmony_ci        expect().assertFail();
94522736c2fSopenharmony_ci        done();
94622736c2fSopenharmony_ci      }
94722736c2fSopenharmony_ci    });
94822736c2fSopenharmony_ci});