MediaTestBase.js 7.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
 * 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 resourceManager from '@ohos.resourceManager';
1
15754133731 已提交
17
import { expect } from 'deccjsunit/index'
18 19
import router from '@system.router'
import mediaLibrary from '@ohos.multimedia.mediaLibrary'
20 21
import fileio from '@ohos.fileio'
import featureAbility from '@ohos.ability.featureAbility'
22
import { UiDriver, BY, PointerMatrix } from '@ohos.UiTest'
23 24

const context = featureAbility.getContext();
25

26 27 28 29 30 31 32 33
export async function getPermission(permissionNames) {
    featureAbility.getContext().requestPermissionsFromUser(permissionNames, 0, async (data) => {
        console.info("case request success" + JSON.stringify(data));
    })
}

export async function driveFn(num) {
    console.info(`case come in driveFn 111`)
1
15754133731 已提交
34 35 36 37 38 39 40 41 42 43 44 45
    try {
        let driver = await UiDriver.create()
        console.info(`case come in driveFn 222`)
        console.info(`driver is ${JSON.stringify(driver)}`)
        await msleepAsync(2000)
        console.info(`UiDriver start`)
        for (let i = 0; i < num; i++) {
            let button = await driver.findComponent(BY.text('允许'))
            console.info(`button is ${JSON.stringify(button)}`)
            await msleepAsync(2000)
            await button.click()
        }
46
        await msleepAsync(2000)
1
15754133731 已提交
47 48 49
    } catch (err) {
        console.info('err is ' + err);
        return;
50 51 52
    }
}

53
// File operation
54
export async function getFileDescriptor(fileName) {
55
    let fileDescriptor = undefined;
56 57
    await resourceManager.getResourceManager().then(async (mgr) => {
        await mgr.getRawFileDescriptor(fileName).then(value => {
1
15754133731 已提交
58
            fileDescriptor = { fd: value.fd, offset: value.offset, length: value.length };
59
            console.log('case getRawFileDescriptor success fileName: ' + fileName);
60 61 62 63 64 65 66 67 68
        }).catch(error => {
            console.log('case getRawFileDescriptor err: ' + error);
        });
    });
    return fileDescriptor;
}

export async function closeFileDescriptor(fileName) {
    await resourceManager.getResourceManager().then(async (mgr) => {
1
15754133731 已提交
69
        await mgr.closeRawFileDescriptor(fileName).then(() => {
70
            console.log('case closeRawFileDescriptor ' + fileName);
71 72 73 74 75
        }).catch(error => {
            console.log('case closeRawFileDescriptor err: ' + error);
        });
    });
}
76 77 78 79 80 81 82

export function isFileOpen(fileDescriptor, done) {
    if (fileDescriptor == undefined) {
        expect().assertFail();
        console.info('case error fileDescriptor undefined, open file fail');
        done();
    }
83 84
}

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
export async function getFdRead(pathName, done) {
    let fdReturn;
    await context.getFilesDir().then((fileDir) => {
        console.info("case file dir is" + JSON.stringify(fileDir));
        pathName = fileDir + '/' + pathName;
        console.info("case pathName is" + pathName);
    });
    await fileio.open(pathName).then((fdNumber) => {
        isFileOpen(fdNumber, done)
        fdReturn = fdNumber;
        console.info('[fileio]case open fd success, fd is ' + fdReturn);
    })
    return fdReturn;
}

100 101 102 103
export async function closeFdNumber(fdNumber) {
    await fileio.close(fdNumber);
}

104 105
// wait synchronously 
export function msleep(time) {
1
15754133731 已提交
106
    for (let t = Date.now(); Date.now() - t <= time;);
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
}

// wait asynchronously
export async function msleepAsync(ms) {
    return new Promise((resolve) => setTimeout(resolve, ms));
}

export function printError(error, done) {
    expect().assertFail();
    console.info(`case error called,errMessage is ${error.message}`);
    done();
}

// callback function for promise call back error
export function failureCallback(error) {
    expect().assertFail();
    console.info(`case error called,errMessage is ${error.message}`);
}

// callback function for promise catch error
export function catchCallback(error) {
    expect().assertFail();
    console.info(`case error called,errMessage is ${error.message}`);
}

132 133 134
export function checkDescription(actualDescription, descriptionKey, descriptionValue) {
    for (let i = 0; i < descriptionKey.length; i++) {
        let property = actualDescription[descriptionKey[i]];
1
15754133731 已提交
135 136 137
        console.info('case key is  ' + descriptionKey[i]);
        console.info('case actual value is  ' + property);
        console.info('case hope value is  ' + descriptionValue[i]);
138 139 140 141
        expect(property).assertEqual(descriptionValue[i]);
    }
}

1
15754133731 已提交
142 143 144
export function printDescription(obj) {
    let description = "";
    for (let i in obj) {
145
        let property = obj[i];
1
15754133731 已提交
146 147 148 149
        console.info('case key is  ' + i);
        console.info('case value is  ' + property);
        description += i + " = " + property + "\n";
    }
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
}

export async function toNewPage(pagePath1, pagePath2, page) {
    let path = '';
    if (page == 0) {
        path = pagePath1;
    } else {
        path = pagePath2;
    }
    let options = {
        uri: path,
    }
    try {
        await router.push(options);
    } catch {
        console.info('case route failed');
    }
}

export async function clearRouter() {
    await router.clear();
}

export async function getFd(pathName) {
    let fdObject = {
1
15754133731 已提交
175 176
        fileAsset: null,
        fdNumber: null
177 178 179 180 181 182 183 184 185 186
    }
    let displayName = pathName;
    const mediaTest = mediaLibrary.getMediaLibrary();
    let fileKeyObj = mediaLibrary.FileKey;
    let mediaType = mediaLibrary.MediaType.VIDEO;
    let publicPath = await mediaTest.getPublicDirectory(mediaLibrary.DirectoryType.DIR_VIDEO);
    let dataUri = await mediaTest.createAsset(mediaType, displayName, publicPath);
    if (dataUri != undefined) {
        let args = dataUri.id.toString();
        let fetchOp = {
1
15754133731 已提交
187 188
            selections: fileKeyObj.ID + "=?",
            selectionArgs: [args],
189 190 191
        }
        let fetchFileResult = await mediaTest.getFileAssets(fetchOp);
        fdObject.fileAsset = await fetchFileResult.getAllObject();
192
        fdObject.fdNumber = await fdObject.fileAsset[0].open('rw');
193 194 195 196 197
        console.info('case getFd number is: ' + fdObject.fdNumber);
    }
    return fdObject;
}

198 199
export async function getAudioFd(pathName) {
    let fdObject = {
1
15754133731 已提交
200 201
        fileAsset: null,
        fdNumber: null
202 203 204 205 206 207 208 209 210 211
    }
    let displayName = pathName;
    const mediaTest = mediaLibrary.getMediaLibrary();
    let fileKeyObj = mediaLibrary.FileKey;
    let mediaType = mediaLibrary.MediaType.AUDIO;
    let publicPath = await mediaTest.getPublicDirectory(mediaLibrary.DirectoryType.DIR_AUDIO);
    let dataUri = await mediaTest.createAsset(mediaType, displayName, publicPath);
    if (dataUri != undefined) {
        let args = dataUri.id.toString();
        let fetchOp = {
1
15754133731 已提交
212 213
            selections: fileKeyObj.ID + "=?",
            selectionArgs: [args],
214 215 216 217 218 219 220 221 222
        }
        let fetchFileResult = await mediaTest.getFileAssets(fetchOp);
        fdObject.fileAsset = await fetchFileResult.getAllObject();
        fdObject.fdNumber = await fdObject.fileAsset[0].open('rw');
        console.info('case getFd number is: ' + fdObject.fdNumber);
    }
    return fdObject;
}

223 224 225 226 227 228 229 230 231 232 233
export async function closeFd(fileAsset, fdNumber) {
    if (fileAsset != null) {
        await fileAsset[0].close(fdNumber).then(() => {
            console.info('[mediaLibrary] case close fd success');
        }).catch((err) => {
            console.info('[mediaLibrary] case close fd failed');
        });
    } else {
        console.info('[mediaLibrary] case fileAsset is null');
    }
}