json.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. 'use strict'
  2. /**
  3. * 测试 JSON 文件的完整性
  4. * @Author https://github.com/modood
  5. * @DateTime 2016-10-10 11:24
  6. */
  7. var assert = require('assert')
  8. var chinaDivision = require('..')
  9. var provinces = chinaDivision.provinces
  10. var cities = chinaDivision.cities
  11. var areas = chinaDivision.areas
  12. var streets = chinaDivision.streets
  13. var address2 = chinaDivision.address2
  14. var address3 = chinaDivision.address3
  15. var address4 = chinaDivision.address4
  16. describe('中华人民共和国行政区划:', function () {
  17. it('省份数据', function () {
  18. var i = findElem(provinces, 'code', '110000')
  19. assert(i !== -1)
  20. assert.equal(provinces[i].name, '北京市')
  21. })
  22. it('城市数据', function () {
  23. var i = findElem(cities, 'code', '140100')
  24. assert(i !== -1)
  25. assert.equal(cities[i].name, '太原市')
  26. assert.equal(cities[i].parent_code, '140000')
  27. })
  28. it('区县数据', function () {
  29. var i = findElem(areas, 'code', '120110')
  30. assert(i !== -1)
  31. assert.equal(areas[i].name, '东丽区')
  32. assert.equal(areas[i].parent_code, '120100')
  33. })
  34. it('乡镇数据', function () {
  35. var i = findElem(streets, 'code', '441881124000')
  36. assert(i !== -1)
  37. assert.equal(streets[i].name, '波罗镇')
  38. assert.equal(streets[i].parent_code, '441881')
  39. })
  40. it('“省份、城市” 二级联动数据', function () {
  41. assert.ok(address2['浙江省'].indexOf('杭州市') !== -1)
  42. for (var p in address2) {
  43. if (['台湾省', '香港特别行政区', '澳门特别行政区'].indexOf(p) === -1 &&
  44. address2[p].length === 0) throw new Error(p + '的城市列表为空')
  45. }
  46. })
  47. it('“省份、城市、区县” 三级联动数据', function () {
  48. assert.ok(address3['云南省']['丽江市'].indexOf('古城区') !== -1)
  49. assert.ok(address3['海南省']['三沙市'].indexOf('南沙群岛') !== -1)
  50. assert.ok(address3['广东省']['中山市'].indexOf('横栏镇') !== -1)
  51. assert.ok(address3['广东省']['东莞市'].indexOf('常平镇') !== -1)
  52. assert.ok(address3['海南省']['儋州市'].indexOf('那大镇') !== -1)
  53. assert.ok(address3['甘肃省']['嘉峪关市'].indexOf('文殊镇') !== -1)
  54. for (var p in address3) {
  55. for (var c in address3[p]) {
  56. if (address3[p][c].length === 0) throw new Error(p + c + '的区县列表为空')
  57. }
  58. }
  59. })
  60. it('“省份、城市、区县、乡镇” 四级联动数据', function () {
  61. assert.ok(address4['广西壮族自治区']['玉林市']['容县'].indexOf('石头镇') !== -1)
  62. assert.ok(address4['海南省']['三沙市']['南沙群岛'].indexOf('永暑岛') !== -1)
  63. assert.ok(address4['广东省']['中山市']['中山市'].indexOf('横栏镇') !== -1)
  64. assert.ok(address4['广东省']['东莞市']['东莞市'].indexOf('常平镇') !== -1)
  65. assert.ok(address4['海南省']['儋州市']['儋州市'].indexOf('那大镇') !== -1)
  66. assert.ok(address4['甘肃省']['嘉峪关市']['嘉峪关市'].indexOf('文殊镇') !== -1)
  67. assert.ok(address4['福建省']['泉州市']['金门县'].indexOf('金门县') !== -1)
  68. for (var p in address4) {
  69. for (var c in address4[p]) {
  70. for (var a in address4[p][c]) {
  71. if (address4[p][c][a].length === 0) throw new Error(p + c + a + '的乡镇列表为空')
  72. }
  73. }
  74. }
  75. })
  76. it('“某省、某市、某县、某镇” 不存在', function () {
  77. assert.throws(() => address4['某省']['某市']['某县'].indexOf('某镇') !== -1)
  78. })
  79. })
  80. function findElem (arrayToSearch, attr, val) {
  81. for (var i = 0; i < arrayToSearch.length; i++) {
  82. if (arrayToSearch[i][attr] === val) {
  83. return i
  84. }
  85. }
  86. return -1
  87. }