test.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. 'use strict';
  2. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /**
  3. * address-parse
  4. * MIT License
  5. * By www.asseek.com
  6. */
  7. var _index = require('./parse/index.js');
  8. var _index2 = _interopRequireDefault(_index);
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  10. function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }
  11. /**
  12. * 地址列表解析验证
  13. * @param list {Array} [address, [address, resultCode]]
  14. * @returns {boolean}
  15. */
  16. function addressParseTest() {
  17. var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  18. var isSuccess = true;
  19. var index = 0;
  20. var _iteratorNormalCompletion = true;
  21. var _didIteratorError = false;
  22. var _iteratorError = undefined;
  23. try {
  24. for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  25. var item = _step.value;
  26. index += 1;
  27. var address = Array.isArray(item) ? item[0] : item;
  28. var options = Array.isArray(item) ? item[1] : '';
  29. var code = (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object' ? options.code : options;
  30. var _Parse$parse = _index2.default.parse(address, true),
  31. _Parse$parse2 = _toArray(_Parse$parse),
  32. result = _Parse$parse2[0],
  33. results = _Parse$parse2.slice(1);
  34. var status = code ? result.code === code : result.__parse;
  35. if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
  36. for (var key in options) {
  37. if (result[key] !== options[key]) {
  38. status = false;
  39. break;
  40. }
  41. }
  42. }
  43. if (!status) {
  44. isSuccess = false;
  45. console.log('addressParseTest->fail', address + ' [' + code + '->' + result.code + ']', result, results, options);
  46. }
  47. }
  48. } catch (err) {
  49. _didIteratorError = true;
  50. _iteratorError = err;
  51. } finally {
  52. try {
  53. if (!_iteratorNormalCompletion && _iterator.return) {
  54. _iterator.return();
  55. }
  56. } finally {
  57. if (_didIteratorError) {
  58. throw _iteratorError;
  59. }
  60. }
  61. }
  62. return isSuccess;
  63. }
  64. /**
  65. * 把所有省市区组为测试数组
  66. */
  67. function getAllAreaTestList() {
  68. var cityTestList = [];
  69. var areaTestList = [];
  70. var province_list = _index.AREA.province_list;
  71. for (var provinceCode in province_list) {
  72. var province = province_list[provinceCode];
  73. var city_list = _index.Utils.getTargetAreaListByCode('city', provinceCode);
  74. var _iteratorNormalCompletion2 = true;
  75. var _didIteratorError2 = false;
  76. var _iteratorError2 = undefined;
  77. try {
  78. for (var _iterator2 = city_list[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
  79. var city = _step2.value;
  80. cityTestList.push(['' + province + city.name, city.code]);
  81. var area_list = _index.Utils.getTargetAreaListByCode('area', city.code);
  82. var _iteratorNormalCompletion3 = true;
  83. var _didIteratorError3 = false;
  84. var _iteratorError3 = undefined;
  85. try {
  86. for (var _iterator3 = area_list[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
  87. var area = _step3.value;
  88. areaTestList.push(['' + province + city.name + area.name, area.code]);
  89. }
  90. } catch (err) {
  91. _didIteratorError3 = true;
  92. _iteratorError3 = err;
  93. } finally {
  94. try {
  95. if (!_iteratorNormalCompletion3 && _iterator3.return) {
  96. _iterator3.return();
  97. }
  98. } finally {
  99. if (_didIteratorError3) {
  100. throw _iteratorError3;
  101. }
  102. }
  103. }
  104. }
  105. } catch (err) {
  106. _didIteratorError2 = true;
  107. _iteratorError2 = err;
  108. } finally {
  109. try {
  110. if (!_iteratorNormalCompletion2 && _iterator2.return) {
  111. _iterator2.return();
  112. }
  113. } finally {
  114. if (_didIteratorError2) {
  115. throw _iteratorError2;
  116. }
  117. }
  118. }
  119. }
  120. return {
  121. cityTestList: cityTestList,
  122. areaTestList: areaTestList
  123. };
  124. }
  125. var list = [['福建省福州市福清市石竹街道义明综合楼3F,15000000000,asseek', '350181'], ['福建省福清市石竹街道义明综合楼3F,15000000000,asseek', '350181'], ['福州市福清市石竹街道义明综合楼3F,15000000000,asseek', '350181'], ['福清市石竹街道义明综合楼3F,15000000000,asseek', '350181'], ['浙江省温州市乐清柳市镇', '330382'], ['李xx 13512222322 广西壮族自治区 桂林市 恭城瑶族自治县 恭城镇拱辰东路xx-xx号', '450332'], ['李xx 13512222222 恭城 恭城镇拱辰东路08-88号', '450332'], ['四川成都高新区天府大道中段530号东方希望天祥广场a座4302号北京万商天勤(成都)律师事务所', '510191'], '房pp,18263333333,山东省 德州市 乐陵市 市中街道怡然居小区,253600', ['张y,18802222222,黑龙江省 哈尔滨市 道里区 经纬街道经纬七道街,000000', { name: '张y' }], ['深圳市龙华新区民治街道办民乐新村。陆xg15822222222', { name: '陆xg' }], '张l,15222222222,内蒙古自治区 呼和浩特市 和林格尔县 盛乐经济工业园区内蒙古师范大学盛乐校区十三号楼,011500', ['张l,15222222222,和林格尔 盛乐经济工业园区内蒙古师范大学盛乐校区十三号楼,011500', '150123'], '上海市徐汇区 复兴中路1237号 5楼WeWork 200010 柚子', ['龙湖区黄山路潮华雅居10栋000房 肖小姐', { code: '440507', name: '肖小姐' }], ['西安市雁塔区丈八东路晶城秀府7号楼2单元 李飞', { code: '610113', name: '李飞' }], ['湖北省安陆市西亚小铺,文元13377777788', { code: '420982', name: '文元' }], ['福建宁德福鼎太姥山镇岭后路。 丹', { code: '350982', name: '丹' }], ['南京市雨花区小行路58号名城世家花园', '320114'], ['四川省阆中市', '511381'], ['北京市市辖区东城区嘿嘿 嘿嘿 18031491271', { code: '110101', name: '嘿嘿' }], ['福建省福州市福清市台江公寓', '350181'], ['山东省青岛市平度市南村镇亭兰 张13668888888', { code: '370283', name: '张' }], ['佛山市南海区盐步 穗盐路景裕嘉园1期 13609770999 大旋仔', { name: '大旋仔' }], ['广东省 东莞市 东城街道', { details: '', code: '441916' }], ['山东省青岛平度市南村镇', '370283'], ['重庆市县城口县', '500229'], ['上海 上海市 浦东区 asd,大liu, ', '310115'], ['吐鲁番市吐鲁番宾馆', '650400'], ['新疆伊宁市上海城徐汇苑23号楼5单元401室', '654002'], ['重庆忠县', '500233'], ['湖北神农架太阳村10组', '429021'], ['广东省惠来县惠城镇南门西路209号', '445224'], ['江苏省靖江市江阴经济开发区靖江园区五星村里面的江阴经济开发区', { details: '江阴经济开发区靖江园区五星村里面的江阴经济开发区' }], ['北京市密云区花园小区1楼三单元30115801691123 唐娜明收', { mobile: '15801691123' }], ['重庆市永川区南大街街道重庆文理学院', '500118']];
  126. console.time('测试地址解析耗时');
  127. var result1 = addressParseTest(list);
  128. console.timeEnd('测试地址解析耗时');
  129. console.log('\u6D4B\u8BD5\u5730\u5740\u89E3\u6790\u7ED3\u679C \u5171 ' + list.length + ' \u6761', result1 ? '通过' : '失败');
  130. var _getAllAreaTestList = getAllAreaTestList(),
  131. areaTestList = _getAllAreaTestList.areaTestList,
  132. cityTestList = _getAllAreaTestList.cityTestList;
  133. console.time('全国city测试解析耗时');
  134. var result2 = addressParseTest(cityTestList);
  135. console.timeEnd('全国city测试解析耗时');
  136. console.log('\u5168\u56FDcity\u6D4B\u8BD5\u89E3\u6790\u7ED3\u679C \u5171 ' + cityTestList.length + ' \u6761', result2 ? '通过' : '失败');
  137. console.time('全国area测试解析耗时');
  138. var result3 = addressParseTest(areaTestList);
  139. console.timeEnd('全国area测试解析耗时');
  140. console.log('\u5168\u56FDarea\u6D4B\u8BD5\u89E3\u6790\u7ED3\u679C \u5171 ' + areaTestList.length + ' \u6761', result3 ? '通过' : '失败');
  141. /**
  142. * TODO 山东省青岛平度市南村镇 这个地址的parseByArea有问题,现不影响正确解析结果,留待解决
  143. * 与 https://github.com/akebe/address-parse/issues/14 核心原因一致,靠前的地区先被匹配成功了跳出循环
  144. */