/* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import bluetooth from '@ohos.bluetooth.socket'; import btAccess from '@ohos.bluetooth.access'; import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from '@ohos/hypium' export default function btSocketTest() { describe('btSocketTest', function() { function sleep(delay) { return new Promise(resovle => setTimeout(resovle, delay)) } async function tryToEnableBt() { let sta = btAccess.getState(); switch (sta) { case 0: btAccess.enableBluetooth(); await sleep(10000); let sta1 = btAccess.getState(); console.info('[bluetooth_js] bt turn off:' + JSON.stringify(sta1)); break; case 1: console.info('[bluetooth_js] bt turning on:' + JSON.stringify(sta)); await sleep(3000); break; case 2: console.info('[bluetooth_js] bt turn on:' + JSON.stringify(sta)); break; case 3: btAccess.enableBluetooth(); await sleep(10000); let sta2 = btAccess.getState(); console.info('[bluetooth_js] bt turning off:' + JSON.stringify(sta2)); break; default: console.info('[bluetooth_js] enable success'); } } beforeAll(function () { console.info('beforeAll called') }) beforeEach(async function (done) { console.info('beforeEach called') await tryToEnableBt() done() }) afterEach(function () { console.info('afterEach called') }) afterAll(function () { console.info('afterAll called') }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0100 * @tc.name test SppListen * @tc.desc Test SppListen api10 * @tc.type Function * @tc.level Level 1 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0100', 0, async function (done) { let SppOptions = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: bluetooth.SppType.SPP_RFCOMM }; let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code01: ' + code); } else { console.log('bluetooth serverSocket Number:' + JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber != -1); } } try { await bluetooth.sppListen('server1', SppOptions, serverSocket); } catch (error) { console.error(`[bluetooth_js]SPPListen error, code is ${error.code},message is ${error.message}`); expect(true).assertEqual(error == null); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0200 * @tc.name testSppAccept * @tc.desc Test SppAccept api10 * @tc.type Function * @tc.level Level 2 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0200', 0, async function (done) { let SppOption = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: bluetooth.SppType.SPP_RFCOMM }; let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code02: ' + code); } else { console.log('bluetooth serverSocket Number02:' + JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber != -1); } } bluetooth.sppListen('server_accept', SppOption, serverSocket); let clientNumber = -1; function acceptClientSocket(code, number) { console.log('bluetooth error code: ' + code.code); if (code.code == 0) { console.log('bluetooth clientSocket Number: ' + number); clientNumber = number; expect(true).assertEqual(clientNumber != -1); } } try { bluetooth.sppAccept(serverNumber, acceptClientSocket); } catch (error) { console.error(`[bluetooth_js]SPPAccept error, code is ${error.code},message is ${error.message}`); expect(error.code).assertEqual('401'); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0300 * @tc.name test SppConnect * @tc.desc Test SppConnect api10 * @tc.type Function * @tc.level Level 1 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0300', 0, async function (done) { let sppOption = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: true, type: 0 }; try { await bluetooth.sppConnect('00:11:22:33:44:55', sppOption, function (code, number) { if (code) { console.info('[bluetooth_js] code is: ' + JSON.stringify(code)); } else { console.log('[bluetooth_js]sppConnect Number:' + JSON.stringify(number)); expect(true).assertEqual(number != null); } }); } catch (error) { console.error(`[bluetooth_js]SPPConnect error, code is ${error.code},message is ${error.message}`); expect(true).assertEqual(error == null); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0400 * @tc.name test sppReadOn * @tc.desc Test On and Off api10 * @tc.type Function * @tc.level Level 2 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0400', 0, async function (done) { let SppOption = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: bluetooth.SppType.SPP_RFCOMM }; let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code01: ' + code); } else { console.log('bluetooth serverSocket Number:' + JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber != -1); } } let clientNumber = -1; function acceptClientSocket(code, number) { console.log('bluetooth error code: ' + code.code); if (code.code == 0) { console.log('bluetooth clientSocket Number: ' + number); clientNumber = number; expect(true).assertEqual(clientNumber != -1); } } function dataRead(dataBuffer) { let data = new Uint8Array(dataBuffer); console.log('bluetooth data is: ' + data[0]); } try { bluetooth.sppListen('server04', SppOption, serverSocket); bluetooth.sppAccept(serverNumber, acceptClientSocket); bluetooth.on('sppRead', clientNumber, dataRead); bluetooth.off('sppRead', clientNumber); } catch (err) { console.error("errCode:" + err.code + ",errMessage:" + err.message); expect(err.code).assertEqual('401'); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0800 * @tc.name test sppReadOn * @tc.desc Test On and Off api10 * @tc.type Function * @tc.level Level 2 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0800', 0, async function (done) { let SppOption = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: bluetooth.SppType.SPP_RFCOMM }; let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code01: ' + code); } else { console.log('bluetooth serverSocket Number:' + JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber != -1); } } let clientNumber = -1; function acceptClientSocket(code, number) { console.log('bluetooth error code: ' + code.code); if (code.code == 0) { console.log('bluetooth clientSocket Number: ' + number); clientNumber = number; expect(true).assertEqual(clientNumber != -1); } } function dataRead(dataBuffer) { let data = new Uint8Array(dataBuffer); console.log('bluetooth data is: ' + data[0]); } try { bluetooth.sppListen('server08', SppOption, serverSocket); bluetooth.sppAccept(serverNumber, acceptClientSocket); bluetooth.on('sppRead', clientNumber, dataRead); bluetooth.off('sppRead', clientNumber); } catch (err) { console.error("errCode:" + err.code + ",errMessage:" + err.message); expect(err.code).assertEqual('401'); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0500 * @tc.name testsppCloseServerSocket * @tc.desc Test sppCloseServerSocket api10 by callback. * @tc.type Function * @tc.level Level 3 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0500', 0, async function (done) { let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code10: ' + JSON.stringify(code)); }else{ console.log('bluetooth serverSocket Number:'+ JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber!=null); } } let SppOption = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: true, type: 0}; await bluetooth.sppListen('server1', SppOption, serverSocket); try { bluetooth.sppCloseServerSocket(serverNumber); } catch (err) { console.error("errCode:" + err.code + ",errMessage:" + err.message); expect(true).assertEqual(error == null); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0600 * @tc.name testsppCloseClientSocket * @tc.desc Test sppCloseClientSocket api10 by callback. * @tc.type Function * @tc.level Level 3 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0600', 0, async function (done) { let SppOption = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: bluetooth.SppType.SPP_RFCOMM }; let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code01: ' + code); } else { console.log('bluetooth serverSocket Number:' + JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber != -1); } } let clientNumber = -1; function acceptClientSocket(code, number) { console.log('bluetooth error code: ' + code.code); if (code.code == 0) { console.log('bluetooth clientSocket Number: ' + number); clientNumber = number; expect(true).assertEqual(clientNumber != -1); } } try { bluetooth.sppListen('server06', SppOption, serverSocket); bluetooth.sppAccept(serverNumber, acceptClientSocket); bluetooth.sppCloseClientSocket(clientNumber); } catch (err) { console.error("errCode:" + err.code + ",errMessage:" + err.message); expect(err.code).assertEqual('401'); } done(); }) /** * @tc.number SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0700 * @tc.name testSppWrite * @tc.desc Test sppWrite api10 * @tc.type Function * @tc.level Level 3 */ it('SUB_COMMUNICATION_BLUETOOTHSOCKET_SPP_0700', 0, async function (done) { let SppOption = { uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: bluetooth.SppType.SPP_RFCOMM }; let serverNumber = -1; function serverSocket(code, number) { if (code) { console.log('bluetooth error code01: ' + code); } else { console.log('bluetooth serverSocket Number:' + JSON.stringify(number)); serverNumber = number; expect(true).assertEqual(serverNumber != -1); } } let clientNumber = -1; function acceptClientSocket(code, number) { console.log('bluetooth error code: ' + code.code); if (code.code == 0) { console.log('bluetooth clientSocket Number: ' + number); clientNumber = number; expect(true).assertEqual(clientNumber != -1); } } let arrayBuffer = new ArrayBuffer(8); let data = new Uint8Array(arrayBuffer); data[0] = 123; try { bluetooth.sppListen('server07', SppOption, serverSocket); bluetooth.sppAccept(serverNumber, acceptClientSocket); bluetooth.sppWrite(clientNumber, arrayBuffer); } catch (err) { console.error("errCode:" + err.code + ",errMessage:" + err.message); expect(err.code).assertEqual('401'); } done(); }) }) }