parseTest.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. 'use strict';
  2. // tests are adapted from https://github.com/TooTallNate/node-plist
  3. const assert = require('assert');
  4. const path = require('path');
  5. const bplist = require('../');
  6. describe('bplist-parser', function () {
  7. it('iTunes Small', async function () {
  8. const file = path.join(__dirname, "iTunes-small.bplist");
  9. const startTime1 = new Date();
  10. const [dict] = await bplist.parseFile(file);
  11. const endTime = new Date();
  12. console.log('Parsed "' + file + '" in ' + (endTime - startTime1) + 'ms');
  13. assert.equal(dict['Application Version'], "9.0.3");
  14. assert.equal(dict['Library Persistent ID'], "6F81D37F95101437");
  15. });
  16. it('sample1', async function () {
  17. const file = path.join(__dirname, "sample1.bplist");
  18. const startTime = new Date();
  19. const [dict] = await bplist.parseFile(file);
  20. const endTime = new Date();
  21. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  22. assert.equal(dict['CFBundleIdentifier'], 'com.apple.dictionary.MySample');
  23. });
  24. it('sample2', async function () {
  25. const file = path.join(__dirname, "sample2.bplist");
  26. const startTime = new Date();
  27. const [dict] = await bplist.parseFile(file);
  28. const endTime = new Date();
  29. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  30. assert.equal(dict['PopupMenu'][2]['Key'], "\n #import <Cocoa/Cocoa.h>\n\n#import <MacRuby/MacRuby.h>\n\nint main(int argc, char *argv[])\n{\n return macruby_main(\"rb_main.rb\", argc, argv);\n}\n");
  31. });
  32. it('airplay', async function () {
  33. const file = path.join(__dirname, "airplay.bplist");
  34. const startTime = new Date();
  35. const [dict] = await bplist.parseFile(file);
  36. const endTime = new Date();
  37. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  38. assert.equal(dict['duration'], 5555.0495000000001);
  39. assert.equal(dict['position'], 4.6269989039999997);
  40. });
  41. it('utf16', async function () {
  42. const file = path.join(__dirname, "utf16.bplist");
  43. const startTime = new Date();
  44. const [dict] = await bplist.parseFile(file);
  45. const endTime = new Date();
  46. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  47. assert.equal(dict['CFBundleName'], 'sellStuff');
  48. assert.equal(dict['CFBundleShortVersionString'], '2.6.1');
  49. assert.equal(dict['NSHumanReadableCopyright'], '©2008-2012, sellStuff, Inc.');
  50. });
  51. it('utf16chinese', async function () {
  52. const file = path.join(__dirname, "utf16_chinese.plist");
  53. const startTime = new Date();
  54. const [dict] = await bplist.parseFile(file);
  55. const endTime = new Date();
  56. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  57. assert.equal(dict['CFBundleName'], '天翼阅读');
  58. assert.equal(dict['CFBundleDisplayName'], '天翼阅读');
  59. });
  60. it('uid', async function () {
  61. const file = path.join(__dirname, "uid.bplist");
  62. const startTime = new Date();
  63. const [dict] = await bplist.parseFile(file);
  64. const endTime = new Date();
  65. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  66. assert.deepEqual(dict['$objects'][1]['NS.keys'], [{UID:2}, {UID:3}, {UID:4}]);
  67. assert.deepEqual(dict['$objects'][1]['NS.objects'], [{UID: 5}, {UID:6}, {UID:7}]);
  68. assert.deepEqual(dict['$top']['root'], {UID:1});
  69. });
  70. it('int64', async function () {
  71. const file = path.join(__dirname, "int64.bplist");
  72. const startTime = new Date();
  73. const [dict] = await bplist.parseFile(file);
  74. const endTime = new Date();
  75. console.log('Parsed "' + file + '" in ' + (endTime - startTime) + 'ms');
  76. assert.equal(dict['zero'], '0');
  77. assert.equal(dict['int64item'], '12345678901234567890');
  78. });
  79. });