ソースを参照

#8 Add tests for ASCII encoded data

Ben Hsieh 8 年 前
コミット
3591b9ff73
共有3 個のファイルを変更した71 個の追加18 個の削除を含む
  1. 1
    1
      test/test-android.js
  2. 68
    15
      test/test-fs.js
  3. 2
    2
      test/test-init.js

+ 1
- 1
test/test-android.js ファイルの表示

@@ -16,7 +16,7 @@ const fs = RNFetchBlob.fs
16 16
 const { Assert, Comparer, Info, prop } = RNTest
17 17
 const describe = RNTest.config({
18 18
   group : 'Android only functions',
19
-  run : true,
19
+  run : Platform.OS === 'android',
20 20
   expand : false,
21 21
 })
22 22
 const { TEST_SERVER_URL, FILENAME, DROPBOX_TOKEN, styles } = prop()

+ 68
- 15
test/test-fs.js ファイルの表示

@@ -100,7 +100,8 @@ describe('create file API test', (report, done) => {
100 100
             key="base64 content test"
101 101
             expect={raw}
102 102
             actual={d}/>)
103
-          testASCII()
103
+          // testASCII()
104
+          done()
104 105
         })
105 106
       })
106 107
       .catch((err) => {
@@ -225,7 +226,6 @@ describe('write stream API test', (report, done) => {
225 226
         d2 += chunk
226 227
       })
227 228
       rs.onEnd(() => {
228
-        console.log(RNFetchBlob.base64.encode(expect),d2)
229 229
         report(
230 230
           <Assert key="file should be overwritten by base64 encoded data"
231 231
             expect={RNFetchBlob.base64.encode(expect)}
@@ -292,23 +292,76 @@ describe('cp API test', {timeout : 10000},(report, done) => {
292 292
   })
293 293
 })
294 294
 
295
-describe('Download file to `download` folder', (report, done) => {
296
-  RNFetchBlob.fs
297
-    .getSystemDirs()
295
+describe('ASCII data test', (report, done) => {
296
+  let p = null
297
+  let expect = 'fetch-blob-'+Date.now()
298
+  fs.getSystemDirs()
298 299
     .then((dirs) => {
299
-      return RNFetchBlob.config({
300
-        path : dirs.DownloadDir + '/download-test.png'
300
+      p = dirs.DocumentDir + '/ASCII-test-' + Date.now()
301
+      return fs.createFile(p, 'utf8')
302
+    })
303
+    .then(() => {
304
+      return fs.writeStream(p, 'ascii', false)
305
+    })
306
+    .then((ofstream) => {
307
+      let qq = []
308
+      for(let i=0;i<expect.length;i++) {
309
+        qq.push(expect[i].charCodeAt(0))
310
+        ofstream.write([expect[i].charCodeAt(0)])
311
+      }
312
+      ofstream.write(['g'.charCodeAt(0), 'g'.charCodeAt(0)])
313
+      return ofstream.close()
314
+    })
315
+    .then(() => {
316
+      let ifstream = fs.readStream(p, 'ascii')
317
+      let res = []
318
+      ifstream.onData((chunk) => {
319
+        res = res.concat(chunk)
301 320
       })
302
-      .fetch('GET', `${TEST_SERVER_URL}/public/github.png`, {
303
-        Authorization : 'Bearer abde123eqweje'
321
+      ifstream.onEnd(() => {
322
+        res = res.map((byte) => {
323
+          return String.fromCharCode(byte)
324
+        }).join('')
325
+        report(
326
+          <Assert key="data written in ASCII format should correct"
327
+            expect={expect + 'gg'}
328
+            actual={res}
329
+          />)
330
+        done()
304 331
       })
305 332
     })
306
-    .then((resp) => {
307
-      report(<Info key="image in download path">
308
-        <Image
309
-          style={styles.image}
310
-          source={{uri : 'file://' + dirs.DownloadDir + '/download-test.png'}}/>
311
-      </Info>)
333
+})
334
+
335
+describe('ASCII file test', (report, done) => {
336
+  let p = ''
337
+  let filename = ''
338
+  let expect = []
339
+  let base64 = RNFetchBlob.base64
340
+  fs.getSystemDirs().then((dirs) => {
341
+    p = dirs.DocumentDir + '/'
342
+    filename = 'ASCII-file-test' + Date.now() + '.txt'
343
+    expect = 'ascii test ' + Date.now()
344
+    return fs.createFile(p + filename, getASCIIArray(expect), 'ascii')
345
+  })
346
+  .then(() => {
347
+    let rs = fs.readStream(p + filename, 'base64')
348
+    let actual = ''
349
+    rs.onData((chunk) => {
350
+      actual += chunk
351
+    })
352
+    rs.onEnd(() => {
353
+      report(<Assert key="written data verify"
354
+        expect={expect}
355
+        actual={base64.decode(actual)}/>)
312 356
       done()
313 357
     })
358
+  })
314 359
 })
360
+
361
+function getASCIIArray(str) {
362
+  let r = []
363
+  for(let i=0;i<str.length;i++) {
364
+    r.push(str[i].charCodeAt(0))
365
+  }
366
+  return r
367
+}

+ 2
- 2
test/test-init.js ファイルの表示

@@ -18,7 +18,7 @@ const { Assert, Comparer, Info, describe, prop } = RNTest
18 18
 // test environment variables
19 19
 
20 20
 prop('FILENAME', `${Platform.OS}-0.5.0-${Date.now()}.png`)
21
-prop('TEST_SERVER_URL', 'http://192.168.40.7:8123')
21
+prop('TEST_SERVER_URL', 'http://192.168.0.14:8123')
22 22
 prop('DROPBOX_TOKEN', 'fsXcpmKPrHgAAAAAAAAAoXZhcXYWdgLpQMan6Tb_bzJ237DXhgQSev12hA-gUXt4')
23 23
 prop('styles', {
24 24
   image : {
@@ -51,7 +51,7 @@ describe('GET image from server', (report, done) => {
51 51
     })
52 52
 })
53 53
 
54
-// require('./test-fs')
54
+require('./test-fs')
55 55
 // require('./test-0.1.x-0.4.x')
56 56
 // require('./test-0.5.x')
57 57
 require('./test-android')