const PAGE_PATH = '/pages/API/filemanager/filemanager'


describe('ExtApi-FileManagerTest', () => {

  let page;
  function getData(key = '') {
    return new Promise(async (resolve, reject) => {
      const data = await page.data()
      resolve(key ? data[key] : data)
    })
  }


  beforeAll(async () => {
    page = await program.reLaunch(PAGE_PATH)
    await page.waitFor(600);
  });

  async function isDone() {
    let isDone = await page.waitFor(async () => {
      return await page.data('done')
    })
    await page.setData({done: false})
    return isDone
  }

  it('USER_DATA_PATH test', async () => {
    // 测试 USER_DATA_PATH
    let globalUserDataPath = await getData('globalUserDataPath')

    await page.setData({
      recursiveVal: true,
      copyToBasePath:globalUserDataPath,
      basePath: globalUserDataPath,
      rmDirFile:'a',
      unlinkFile:'a/1.txt'
    })

    // 先清除文件,需要清除全部可能存在的历史测试文件，避免运行失败
    const btnUnLinkFileButton = await page.$('.btn-unlink-file')
    await btnUnLinkFileButton.tap()
    await isDone()

    await page.setData({
      unlinkFile:'a/2.txt'
    })
    await btnUnLinkFileButton.tap()
    await isDone()

    await page.setData({
      unlinkFile:'a/3.txt'
    })
    await btnUnLinkFileButton.tap()
    await isDone()

    // 清除文件夹
    const btnRmDirButton = await page.$('.btn-remove-dir')
    await btnRmDirButton.tap()
    await isDone()
    // 重新创建测试目录
    const btnMkdDirButton = await page.$('.btn-mkdir')
    await btnMkdDirButton.tap()
    await isDone()

    const btnReadDirButton = await page.$('.btn-read-dir')
    await btnReadDirButton.tap()
    await isDone()


    // 期望通过 recursive = true的 文件夹删除，得到一个空的 /a 目录
    let fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual('[]')
    let fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual('[]')

    // 先测试 recursive = false 文件夹创建，期望失败
    await page.setData({
      recursiveVal: false,
      mkdirFile:'a/b/c'
    })


    await btnMkdDirButton.tap()
    await isDone()


    let lastFailError = await getData('lastFailError')
    expect(lastFailError.errCode).toEqual(1300002)
    expect(lastFailError.errMsg).toEqual('no such file or directory:unifile://usr/a/b/c')
    let lastCompleteError = await getData('lastCompleteError')
    expect(lastCompleteError.errCode).toEqual(1300002)
    expect(lastCompleteError.errMsg).toEqual('no such file or directory:unifile://usr/a/b/c')


    // 测试 recursive = true 期望文件夹创建成功
    await page.setData({
      recursiveVal: true
    })
    await btnMkdDirButton.tap()
    await isDone()

    await btnReadDirButton.tap()
    await isDone()

    // 期望通过 recursive = true的 文件夹删除，得到一个空的 /a 目录
    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\"]")

    // 测试写入文件
    const btnWriteFileButton = await page.$('.btn-write-file')
    await btnWriteFileButton.tap()
    await isDone()
    // 检查目录列表数量
    await btnReadDirButton.tap()
    await isDone()
    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\",\"1.txt\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\",\"1.txt\"]")
    // 获取和对比 文件内容
    const btnReadFileButton = await page.$('.btn-read-file')
    await btnReadFileButton.tap()
    await isDone()
    let readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("锄禾日当午，汗滴禾下土，谁知盘中餐，粒粒皆辛苦")

    // 更换文件内容 获取和对比 文件md5和sha1
    await page.setData({
      writeFileContent: "If you were a teardrop;In my eye,For fear of losing you,I would never cry.And if the golden sun,Should cease to shine its light,Just one smile from you,Would make my whole world bright.",
      getFileInfoAlgorithm:"md5"
    })
    await btnWriteFileButton.tap()
    await isDone()

    await btnReadFileButton.tap()
    await isDone()
    readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("If you were a teardrop;In my eye,For fear of losing you,I would never cry.And if the golden sun,Should cease to shine its light,Just one smile from you,Would make my whole world bright.")

    const btnGetFileInfoButton = await page.$('.btn-get-file-info')
    await btnGetFileInfoButton.tap()
    await isDone()

    let getFileInfoSize = await getData('getFileInfoSize')
    expect(getFileInfoSize).toEqual(185)
    let getFileInfoDigest = await getData('getFileInfoDigest')
    expect(getFileInfoDigest).toEqual("29ddd02ed3c38ccebb98884eda082cb1")
    // 切换为 sha1
    await page.setData({
      getFileInfoAlgorithm:"sha1"
    })

    await btnGetFileInfoButton.tap()
    await isDone()

    getFileInfoSize = await getData('getFileInfoSize')
    expect(getFileInfoSize).toEqual(185)
    getFileInfoDigest = await getData('getFileInfoDigest')
    expect(getFileInfoDigest).toEqual("ebef4e75783e0db499fc260d120e695005bead8a")

    // 测试 copyfile
    await page.setData({

      copyFromFile:"a/1.txt",
      copyToFile:"a/2.txt"
    })
    const btnCopyFileButton = await page.$('.btn-copy-file')
    await btnCopyFileButton.tap()
    await isDone()


    await btnReadDirButton.tap()
    await isDone()

    // 1.txt 2.txt 两个文件都存在
    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\",\"1.txt\",\"2.txt\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\",\"1.txt\",\"2.txt\"]")

    // 测试 rename
    await page.setData({
      renameFromFile:"a/2.txt",
      renameToFile:"a/3.txt"
    })

    const btnRenameFileButton = await page.$('.btn-rename-file')
    await btnRenameFileButton.tap()
    await isDone()

    await btnReadDirButton.tap()
    await isDone()

    // 1.txt 3.txt 两个文件都存在
    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\",\"1.txt\",\"3.txt\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\",\"1.txt\",\"3.txt\"]")


  });

  it('TEMP_PATH test', async () => {
    // 测试 TEMP_PATH
    let globalTempPath = await getData('globalTempPath')
    await page.setData({
      recursiveVal: true,
      basePath: globalTempPath,
      copyToBasePath:globalTempPath,
      rmDirFile:'a',
      unlinkFile:'a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name/中文文件.mock'
    })


    // 先清除文件,需要清除全部可能存在的历史测试文件，避免运行失败
    const btnUnLinkFileButton = await page.$('.btn-unlink-file')
    await btnUnLinkFileButton.tap()
    await isDone()

    await page.setData({
      unlinkFile:'a/提前创建的目录/4.txt'
    })
    await btnUnLinkFileButton.tap()
    await isDone()


    // 清除文件夹
    const btnRmDirButton = await page.$('.btn-remove-dir')
    await btnRmDirButton.tap()
    await isDone()

    // 重新创建测试目录
    const btnMkdDirButton = await page.$('.btn-mkdir')
    await btnMkdDirButton.tap()
    await isDone()

    const btnReadDirButton = await page.$('.btn-read-dir')
    await btnReadDirButton.tap()
    await isDone()


    // 期望通过 recursive = true的 文件夹删除，得到一个空的 /a 目录
    let fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\"]")
    let fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\"]")

    // 测试 创建多层级文件目录
    await page.setData({
      recursiveVal: true,
      mkdirFile:'a/b/c/d/e/f/g/h/i/g/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/中文路径/张三/test',
    })

    await btnMkdDirButton.tap()
    await isDone()

    await btnReadDirButton.tap()
    await isDone()

    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\"]")

    // 测试 创建包含中文特殊符号的目录
    await page.setData({
      recursiveVal: true,
      mkdirFile:'a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name',
    })
    await btnMkdDirButton.tap()
    await isDone()

    await btnReadDirButton.tap()
    await isDone()

    // 期望通过 recursive = true的 文件夹删除，得到一个空的 /a 目录
    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\",\"我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\",\"我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,\"]")

    /**
     * 从资源文件中读取图片为base64，测试写入较大文件场景
     * 'static/list-mock/safe.png' 注意，依赖这个资源文件，不能删除
     */
    let globalAppResourcePath = await getData('globalAppResourcePath')
    await page.setData({

      basePath: globalAppResourcePath,
      readFile:'static/list-mock/safe.png',
      readFileEncoding:'base64'
    })


    // 获取和对比 文件内容
    const btnReadFileButton = await page.$('.btn-read-file')
    await btnReadFileButton.tap()
    await isDone()
    let readFileRet = await getData('readFileRet')

    expect(readFileRet.length).toEqual(426128)
    let endStr = readFileRet.substring(readFileRet.length - 10)
    expect(endStr).toEqual("lFTkSuQmCC")

    await page.setData({
      basePath: globalTempPath,
      writeFile:'a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name/中文文件.mock',
      writeFileContent:readFileRet
    })


    const btnWriteFileButton = await page.$('.btn-write-file')
    await btnWriteFileButton.tap()
    await isDone()

    // 获取文件列表，判断是否写入成功，同时置空base64内容 避免影响实时查看状态
    await page.setData({
      readDir:'a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name',
      readFileRet:'',
      writeFileContent:''
    })

    // 检查目录列表数量
    await btnReadDirButton.tap()
    await isDone()
    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"中文文件.mock\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"中文文件.mock\"]")


    // 更换文件内容 获取和对比 文件md5和sha1
    await page.setData({
      getFileInfoFile:'a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name/中文文件.mock',
      getFileInfoAlgorithm:"md5",
    })

    const btnGetFileInfoButton = await page.$('.btn-get-file-info')
    await btnGetFileInfoButton.tap()
    await isDone()

    let getFileInfoSize = await getData('getFileInfoSize')
    expect(getFileInfoSize).toEqual(426128)
    let getFileInfoDigest = await getData('getFileInfoDigest')
    expect(getFileInfoDigest).toEqual("795fd5a20b4f0a63504330e9132dcd30")

    // 切换为 sha1
    await page.setData({
      getFileInfoAlgorithm:"sha1"
    })

    await btnGetFileInfoButton.tap()
    await isDone()

    getFileInfoSize = await getData('getFileInfoSize')
    expect(getFileInfoSize).toEqual(426128)
    getFileInfoDigest = await getData('getFileInfoDigest')
    expect(getFileInfoDigest).toEqual("74877928eddd0351bd8b3b1c677b56f25db682fc")

    // 测试不支持的摘要算法，期望返回错误
    await page.setData({
      getFileInfoAlgorithm:"sha256"
    })

    await btnGetFileInfoButton.tap()
    await isDone()

    let lastFailError = await getData('lastFailError')
    expect(lastFailError.errCode).toEqual(1300022)
    let lastCompleteError = await getData('lastCompleteError')
    expect(lastCompleteError.errCode).toEqual(1300022)


    // rename 到一个没有提前创建过的目录，期望返回错误
    await page.setData({
      renameFromFile:"a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name/中文文件.mock",
      renameToFile:"a/没有提前创建的目录/3.txt"
    })

    const btnRenameFileButton = await page.$('.btn-rename-file')
    await btnRenameFileButton.tap()
    await isDone()

    lastFailError = await getData('lastFailError')
    expect(lastFailError.errCode).toEqual(1300002)
    lastCompleteError = await getData('lastCompleteError')
    expect(lastCompleteError.errCode).toEqual(1300002)

    // 非递归创建一级目录。期望成功
    await page.setData({
      recursiveVal: false,
      mkdirFile:'a/提前创建的目录',
    })

    await btnMkdDirButton.tap()
    await isDone()

    await page.setData({
      readDir:'a',
    })

    await btnReadDirButton.tap()
    await isDone()

    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"b\",\"我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,\",\"提前创建的目录\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"b\",\"我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,\",\"提前创建的目录\"]")


    await page.setData({

      copyFromFile:"a/我们经历了一场兵慌马乱的战争.1@2#3$4%5^6&7*8(9)0+-qwertyuiopasdfghjklzxcvbnm;,/中文路径/张三/name/中文文件.mock",
      copyToFile:"a/提前创建的目录/4.txt"
    })

      const btnCopyFileButton = await page.$('.btn-copy-file')
      await btnCopyFileButton.tap()
      await isDone()

    await page.setData({
      readDir:'a/提前创建的目录',
    })

    await btnReadDirButton.tap()
    await isDone()

    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[\"4.txt\"]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[\"4.txt\"]")

    await page.setData({
      unlinkFile:'a/提前创建的目录/4.txt'
    })
    await btnUnLinkFileButton.tap()
    await isDone()

    await btnReadDirButton.tap()
    await isDone()

    fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual("[]")
    fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual("[]")


  });




  it('CROSS DIR test', async () => {
    /**
     * 跨越用户目录和代码资源目录
     */
    let globalRootPath = await getData('globalRootPath')
    await page.setData({
      recursiveVal: true,
      basePath: globalRootPath,
      readDir:'a',
      rmDirFile:'a',
      mkdirFile:'a',
      accessFile:'a/从代码目录拷贝的资源.png',
      unlinkFile:'a/从代码目录拷贝的资源.png'
    })


    // 先清除文件,需要清除全部可能存在的历史测试文件，避免运行失败
    const btnUnLinkFileButton = await page.$('.btn-unlink-file')
    await btnUnLinkFileButton.tap()
    await isDone()


    // 清除文件夹
    const btnRmDirButton = await page.$('.btn-remove-dir')
    await btnRmDirButton.tap()
    await isDone()

    // 重新创建测试目录，期望通过 recursive = true的 文件夹删除，得到一个空的 /a 目录
    const btnMkdDirButton = await page.$('.btn-mkdir')
    await btnMkdDirButton.tap()
    await isDone()

    const btnReadDirButton = await page.$('.btn-read-dir')
    await btnReadDirButton.tap()
    await isDone()

    let fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual('[]')
    let fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual('[]')


    // 检查资源文件，此时不存在
    const btnAccessFileButton = await page.$('.btn-access-file')
    await btnAccessFileButton.tap()
    await isDone()

    let accessFileRet = await getData("accessFileRet")
    expect(accessFileRet).toEqual('')


    // 准备从资源目录拷贝png
    let globalAppResourcePath = await getData('globalAppResourcePath')
    await page.setData({
      basePath: globalAppResourcePath,
      unlinkFile:'static/list-mock/safe.png',
      accessFile:'static/list-mock/safe.png',
    })
    // 检查资源文件，期望存在
    await btnAccessFileButton.tap()
    await isDone()

    accessFileRet = await getData("accessFileRet")
    expect(accessFileRet).toEqual('access:ok')

    // 尝试删除资源，期望失败
    await btnUnLinkFileButton.tap()
    await isDone()

    await btnAccessFileButton.tap()
    await isDone()

    accessFileRet = await getData("accessFileRet")
    expect(accessFileRet).toEqual('access:ok')
    // 复制资源到 root目录
    await page.setData({
      copyToBasePath:globalRootPath,
      copyFromFile:"static/list-mock/safe.png",
      copyToFile:"a/从代码目录拷贝的资源.png"
    })
    const btnCopyFileButton = await page.$('.btn-copy-file')
    await btnCopyFileButton.tap()
    await isDone()

    // 检查期望 root 目录中图片文件存在
    await page.setData({
      basePath:globalRootPath,
      unlinkFile:'a/从代码目录拷贝的资源.png',
      accessFile:'a/从代码目录拷贝的资源.png',
    })
    await btnAccessFileButton.tap()
    await isDone()

    accessFileRet = await getData("accessFileRet")
    expect(accessFileRet).toEqual('access:ok')

    await btnUnLinkFileButton.tap()
    await isDone()

   await btnAccessFileButton.tap()
   await isDone()

    accessFileRet = await getData("accessFileRet")
    expect(accessFileRet).toEqual('')

  });


  it('write and read', async () => {
    /**
     * 测试writefile readfile 各个参数是否符合预期
     */
    let globalTempPath = await getData('globalTempPath')
    await page.setData({
      recursiveVal: true,
      basePath: globalTempPath,
      readDir:'d',
      rmDirFile:'d',
      mkdirFile:'d',
      writeFileContent:"我爱北京天安门，天安门前太阳升",
      writeFileEncoding:"utf-8",
      readFileEncoding:"utf-8",
      unlinkFile:'d/write.bing',
      writeFile:'d/write.bing',
      readFile:'d/write.bing',
      getFileInfoFile:'d/write.bing',
      getFileInfoAlgorithm:"sha1"
    })

    // 先清除文件,需要清除全部可能存在的历史测试文件，避免运行失败
    const btnUnLinkFileButton = await page.$('.btn-unlink-file')
    await btnUnLinkFileButton.tap()
    await isDone()

    // 清除文件夹
    const btnRmDirButton = await page.$('.btn-remove-dir')
    await btnRmDirButton.tap()
    await isDone()

    // 重新创建测试目录，期望通过 recursive = true的 文件夹删除，得到一个空的 /a 目录
    const btnMkdDirButton = await page.$('.btn-mkdir')
    await btnMkdDirButton.tap()
    await isDone()

    const btnReadDirButton = await page.$('.btn-read-dir')
    await btnReadDirButton.tap()
    await isDone()

    let fileListComplete = await getData('fileListComplete')
    expect(JSON.stringify(fileListComplete)).toEqual('[]')
    let fileListSuccess = await getData('fileListSuccess')
    expect(JSON.stringify(fileListSuccess)).toEqual('[]')

    // 先用utf-8 写入内容
    const btnWriteFileButton = await page.$('.btn-write-file')
    await btnWriteFileButton.tap()
    await isDone()

    const btnReadFileButton = await page.$('.btn-read-file')
    await btnReadFileButton.tap()
    await isDone()
    let readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("我爱北京天安门，天安门前太阳升")

    const btnGetFileInfoButton = await page.$('.btn-get-file-info')
    await btnGetFileInfoButton.tap()
    await isDone()

    let getFileInfoSize = await getData('getFileInfoSize')
    expect(getFileInfoSize).toEqual(45)
    let getFileInfoDigest = await getData('getFileInfoDigest')
    expect(getFileInfoDigest).toEqual("2ae9c7672ff6c1e7c7e6a0bb4e74a6f06b39350b")

    // 尝试读取base64 信息
    await page.setData({
      readFileEncoding:"base64",
    })

    await btnReadFileButton.tap()
    await isDone()
    readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("5oiR54ix5YyX5Lqs5aSp5a6J6Zeo77yM5aSp5a6J6Zeo5YmN5aSq6Ziz5Y2H")
    // 测试ascii，需要特别测试 ascii 写入非法字符的情况，因为微信的常量字符编码和android原生有差异。

    await page.setData({
      writeFileContent:"丙辰中秋，欢饮达旦，大醉，作此篇，兼怀子由。明月几时有？把酒问青天。不知天上宫阙，今夕是何年。我欲乘风归去，又恐琼楼玉宇，高处不胜寒。起舞弄清影，何似在人间",
      writeFileEncoding:"ascii",
      readFileEncoding:"base64",
    })

    await btnWriteFileButton.tap()
    await isDone()

    await btnGetFileInfoButton.tap()
    await isDone()

    getFileInfoSize = await getData('getFileInfoSize')
    expect(getFileInfoSize).toEqual(78)
    getFileInfoDigest = await getData('getFileInfoDigest')
    expect(getFileInfoDigest).toEqual("4ac7a65055628818341c2ad86ddc4205d8503801")

    await btnReadFileButton.tap()
    await isDone()
    readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("GbAtywwibr7mDCeJDFxkxwx8AFAxAg4I4PYJH4pS7lIpAg3lKQqrGQzKFS9VdAIRMljOUrsMyFA8fImHDNgEDdzSAnceBAVxDFU8KLr0")

    // 尝试写入合法ascii
    await page.setData({
      writeFileContent:"hello jack.hello marry.",
      writeFileEncoding:"ascii",
      readFileEncoding:"ascii",
    })

    await btnWriteFileButton.tap()
    await isDone()

    await btnReadFileButton.tap()
    await isDone()
    readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("hello jack.hello marry.")

    // 写入base64 获取 中文
    await page.setData({
      writeFileContent:"5LiZ6L6w5Lit56eL77yM5qyi6aWu6L6+5pem77yM5aSn6YaJ77yM5L2c5q2k56+H77yM5YW85oCA5a2Q55Sx44CC5piO5pyI5Yeg5pe25pyJ77yf5oqK6YWS6Zeu6Z2S5aSp44CC5LiN55+l5aSp5LiK5a6r6ZiZ77yM5LuK5aSV5piv5L2V5bm044CC5oiR5qyy5LmY6aOO5b2S5Y6777yM5Y+I5oGQ55C85qW8546J5a6H77yM6auY5aSE5LiN6IOc5a+S44CC6LW36Iie5byE5riF5b2x77yM5L2V5Ly85Zyo5Lq66Ze0",
      writeFileEncoding:"base64",
      readFileEncoding:"utf-8",
    })

    await btnWriteFileButton.tap()
    await isDone()

    await btnReadFileButton.tap()
    await isDone()
    readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("丙辰中秋，欢饮达旦，大醉，作此篇，兼怀子由。明月几时有？把酒问青天。不知天上宫阙，今夕是何年。我欲乘风归去，又恐琼楼玉宇，高处不胜寒。起舞弄清影，何似在人间")

    await page.setData({
      readFileEncoding:"base64",
    })

    await btnReadFileButton.tap()
    await isDone()
    readFileRet = await getData('readFileRet')
    expect(readFileRet).toEqual("5LiZ6L6w5Lit56eL77yM5qyi6aWu6L6+5pem77yM5aSn6YaJ77yM5L2c5q2k56+H77yM5YW85oCA5a2Q55Sx44CC5piO5pyI5Yeg5pe25pyJ77yf5oqK6YWS6Zeu6Z2S5aSp44CC5LiN55+l5aSp5LiK5a6r6ZiZ77yM5LuK5aSV5piv5L2V5bm044CC5oiR5qyy5LmY6aOO5b2S5Y6777yM5Y+I5oGQ55C85qW8546J5a6H77yM6auY5aSE5LiN6IOc5a+S44CC6LW36Iie5byE5riF5b2x77yM5L2V5Ly85Zyo5Lq66Ze0")

  });

});
