Skip to content

Commit 8137334

Browse files
committed
add tests, fix a number of correct spellings not looking up properly and handle more misspellings
1 parent 4530b26 commit 8137334

7 files changed

+440
-61
lines changed

.gitignore

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
lib-cov
2+
*.seed
3+
*.log
4+
*.csv
5+
*.dat
6+
*.out
7+
*.pid
8+
*.gz
9+
10+
pids
11+
logs
12+
results
13+
14+
node_modules
15+
npm-debug.log

package.json

+33-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,41 @@
66
"type": "git",
77
"url": "https://github.com/patsplat/javascript-us.git"
88
},
9-
"version": "1.1.1",
9+
"version": "1.2.0",
1010
"main": "us.js",
11+
"scripts": {
12+
"test": "tape test/**/*.js | tap-spec"
13+
},
1114
"engines": {
1215
"node": ">= 0.4.1"
16+
},
17+
"devDependencies": {
18+
"tap-spec": "^4.1.1",
19+
"tape": "^4.6.2"
20+
},
21+
"jshintConfig": {
22+
"globals": {
23+
"define": false
24+
},
25+
"curly": true,
26+
"eqeqeq": true,
27+
"eqnull": true,
28+
"esnext": true,
29+
"forin": true,
30+
"freeze": true,
31+
"futurehostile": true,
32+
"latedef": "nofunc",
33+
"maxdepth": 3,
34+
"maxparams": 4,
35+
"maxstatements": 30,
36+
"noarg": true,
37+
"nocomma": true,
38+
"node": true,
39+
"nonbsp": true,
40+
"nonew": true,
41+
"singleGroups": false,
42+
"strict": "global",
43+
"undef": true,
44+
"unused": true
1345
}
1446
}

test/abbr_lookups.js

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
'use strict';
2+
3+
const test = require('tape');
4+
5+
const LOOKUP_STRINGS = {
6+
'AL': 'Alabama',
7+
'AK': 'Alaska',
8+
'AS': 'American Samoa',
9+
'AZ': 'Arizona',
10+
'AR': 'Arkansas',
11+
'CA': 'California',
12+
'CO': 'Colorado',
13+
'Connecticut': 'CT',
14+
'Delaware': 'DE',
15+
'District of Columbia': 'DC',
16+
'Florida': 'FL',
17+
'Georgia': 'GA',
18+
'Guam': 'GU',
19+
'Hawaii': 'HI',
20+
'Idaho': 'ID',
21+
'Illinois': 'IL',
22+
'Indiana': 'IN',
23+
'Iowa': 'IA',
24+
'Kansas': 'KS',
25+
'Kentucky': 'KY',
26+
'Louisiana': 'LA',
27+
'Maine': 'ME',
28+
'Maryland': 'MD',
29+
'Massachusets': 'MA',
30+
'Michigan': 'MI',
31+
'Minnesota': 'MN',
32+
'Mississippi': 'MS',
33+
'Missouri': 'MO',
34+
'Montana': 'MT',
35+
'Nebraska': 'NE',
36+
'Nevada': 'NV',
37+
'New Hampshire': 'NH',
38+
'New Jersey': 'NJ',
39+
'New Mexico': 'NM',
40+
'New York': 'NY',
41+
'North Carolina': 'NC',
42+
'North Dakota': 'ND',
43+
'Northern Mariana Islands': 'MP',
44+
'Ohio': 'OH',
45+
'Oklahoma': 'OK',
46+
'Oregon': 'OR',
47+
'Pennsylvania': 'PA',
48+
'Puerto Rico': 'PR',
49+
'Rhode Island': 'RI',
50+
'South Carolina': 'SC',
51+
'South Dakota': 'SD',
52+
'Tennessee': 'TN',
53+
'Texas': 'TX',
54+
'Utah': 'UT',
55+
'Vermont': 'VT',
56+
'Virgin Islands': 'VI',
57+
'Virginia': 'VA',
58+
'Washington': 'WA',
59+
'West Virgina': 'WV',
60+
'Wisconsin': 'WI',
61+
'Wyoming': 'WY'
62+
};
63+
64+
test('lookups', t => {
65+
66+
const us = require('../us.js');
67+
68+
Object.keys(LOOKUP_STRINGS).forEach(lookup_key => {
69+
const expected_result = LOOKUP_STRINGS[lookup_key];
70+
const result = us.lookup(lookup_key);
71+
t.equal(result && result.abbr, expected_result, `${ lookup_key } => ${ expected_result }`);
72+
if ( !result || result.abbr !== expected_result ) {
73+
console.log( `${ lookup_key } = metaphone: ${ us._metaphone( lookup_key ) }` );
74+
}
75+
});
76+
77+
t.end();
78+
});

test/basic_lookups.js

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
'use strict';
2+
3+
const test = require('tape');
4+
5+
const LOOKUP_STRINGS = {
6+
'Alabama': 'AL',
7+
'Alaska': 'AK',
8+
'American Samoa': 'AS',
9+
'Arizona': 'AZ',
10+
'Arkansas': 'AR',
11+
'California': 'CA',
12+
'Colorado': 'CO',
13+
'Connecticut': 'CT',
14+
'Delaware': 'DE',
15+
'District of Columbia': 'DC',
16+
'Florida': 'FL',
17+
'Georgia': 'GA',
18+
'Guam': 'GU',
19+
'Hawaii': 'HI',
20+
'Idaho': 'ID',
21+
'Illinois': 'IL',
22+
'Indiana': 'IN',
23+
'Iowa': 'IA',
24+
'Kansas': 'KS',
25+
'Kentucky': 'KY',
26+
'Louisiana': 'LA',
27+
'Maine': 'ME',
28+
'Maryland': 'MD',
29+
'Massachusets': 'MA',
30+
'Michigan': 'MI',
31+
'Minnesota': 'MN',
32+
'Mississippi': 'MS',
33+
'Missouri': 'MO',
34+
'Montana': 'MT',
35+
'Nebraska': 'NE',
36+
'Nevada': 'NV',
37+
'New Hampshire': 'NH',
38+
'New Jersey': 'NJ',
39+
'New Mexico': 'NM',
40+
'New York': 'NY',
41+
'North Carolina': 'NC',
42+
'North Dakota': 'ND',
43+
'Northern Mariana Islands': 'MP',
44+
'Ohio': 'OH',
45+
'Oklahoma': 'OK',
46+
'Oregon': 'OR',
47+
'Pennsylvania': 'PA',
48+
'Puerto Rico': 'PR',
49+
'Rhode Island': 'RI',
50+
'South Carolina': 'SC',
51+
'South Dakota': 'SD',
52+
'Tennessee': 'TN',
53+
'Texas': 'TX',
54+
'Utah': 'UT',
55+
'Vermont': 'VT',
56+
'Virgin Islands': 'VI',
57+
'Virginia': 'VA',
58+
'Washington': 'WA',
59+
'West Virgina': 'WV',
60+
'Wisconsin': 'WI',
61+
'Wyoming': 'WY'
62+
};
63+
64+
test('lookups', t => {
65+
66+
const us = require('../us.js');
67+
68+
Object.keys(LOOKUP_STRINGS).forEach(lookup_key => {
69+
const expected_result = LOOKUP_STRINGS[lookup_key];
70+
const result = us.lookup(lookup_key);
71+
t.equal(result && result.abbr, expected_result, `${ lookup_key } => ${ expected_result }`);
72+
if ( !result || result.abbr !== expected_result ) {
73+
console.log( `${ lookup_key } = metaphone: ${ us._metaphone( lookup_key ) }` );
74+
}
75+
});
76+
77+
t.end();
78+
});

test/common_mispellings.js

+154
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
'use strict';
2+
3+
const test = require('tape');
4+
5+
const LOOKUP_STRINGS = {
6+
'Allabama': 'AL',
7+
'Alabamma': 'AL',
8+
9+
'Alsaka': 'AK',
10+
11+
'Arizonia': 'AZ',
12+
'Arzinoa': 'AZ',
13+
14+
'Califronia': 'CA',
15+
16+
'Calorado': 'CO',
17+
'Colarado': 'CO',
18+
19+
'Connecticutt': 'CT',
20+
'Conneticutt': 'CT',
21+
'Connetticut': 'CT',
22+
'Connetticutt': 'CT',
23+
'Conneticut': 'CT',
24+
25+
'Delawere': 'DE',
26+
27+
'Floridas': 'FL',
28+
'Floryda': 'FL',
29+
'Florda': 'FL',
30+
'Flordia': 'FL',
31+
32+
'Georgeia': 'GA',
33+
'Georgea': 'GA',
34+
35+
'Hawai': 'HI',
36+
'Howaii': 'HI',
37+
'Hawii': 'HI',
38+
'Hawaai': 'HI',
39+
40+
'Idahoe': 'ID',
41+
'Ideho': 'ID',
42+
43+
'Illanoise': 'IL',
44+
45+
'Iowha': 'IA',
46+
'Ioaw': 'IA',
47+
'Iwoa': 'IA',
48+
49+
'Kentuky': 'KY',
50+
'Kentucy': 'KY',
51+
52+
'Louiseiana': 'LA',
53+
54+
'Main': 'ME',
55+
'Miane': 'ME',
56+
57+
'Mary land': 'MD',
58+
'Marryland': 'MD',
59+
60+
'Massachussetts': 'MA',
61+
'Masachusetts': 'MA',
62+
'Masachusets': 'MA',
63+
'Massachussets': 'MA',
64+
65+
'Michgan': 'MI',
66+
'Michagin': 'MI',
67+
'Michagan': 'MI',
68+
69+
'Minesota': 'MN',
70+
71+
'Mississipi': 'MS',
72+
'Missisipi': 'MS',
73+
'Missisippi': 'MS',
74+
75+
'Misouri': 'MO',
76+
'Missoury': 'MO',
77+
78+
'Nebrascka': 'NE',
79+
80+
'Nevadaa': 'NV',
81+
'Newvada': 'NV',
82+
'Navada': 'NV',
83+
84+
'NewHampshire': 'NH',
85+
86+
'NewJersey': 'NJ',
87+
88+
'NewMexico': 'NM',
89+
90+
'NewYork': 'NY',
91+
92+
'North Caroleina': 'NC',
93+
94+
'N.dak': 'ND',
95+
'Northdakota': 'ND',
96+
'Ndak': 'ND',
97+
98+
'Oiho': 'OH',
99+
100+
'Okalahoma': 'OK',
101+
102+
'Orgon': 'OR',
103+
104+
'Pensylvania': 'PA',
105+
106+
'Road Island': 'RI',
107+
'RhodeIsland': 'RI',
108+
'Rode Island': 'RI',
109+
'Rhod Island': 'RI',
110+
111+
'SouthCarolina': 'SC',
112+
'Sout Carolin': 'SC',
113+
'South Carolna': 'SC',
114+
'Souh Carolia': 'SC',
115+
'South Carolina': 'SC',
116+
117+
'SouthDakota': 'SD',
118+
119+
'Tennesee': 'TN',
120+
'Tennisse': 'TN',
121+
'Tennissee': 'TN',
122+
'Tennisee': 'TN',
123+
124+
'Texes': 'TX',
125+
'Texis': 'TX',
126+
127+
'Utes': 'UT',
128+
'Utar': 'UT',
129+
130+
'West Virgina': 'WV',
131+
'West Virgnia': 'WV',
132+
133+
'Whyoming': 'WY',
134+
'Wioming': 'WY',
135+
136+
'Wisconson': 'WI'
137+
138+
};
139+
140+
test('common misspellings', t => {
141+
142+
const us = require('../us.js');
143+
144+
Object.keys(LOOKUP_STRINGS).forEach(lookup_key => {
145+
const expected_result = LOOKUP_STRINGS[lookup_key];
146+
const result = us.lookup(lookup_key);
147+
t.equal(result && result.abbr, expected_result, `${ lookup_key } => ${ expected_result }`);
148+
if (!result || result.abbr !== expected_result) {
149+
console.log(`${ lookup_key } = metaphone: ${ us._metaphone( lookup_key ) }`);
150+
}
151+
});
152+
153+
t.end();
154+
});

test/import.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
3+
const test = require( 'tape' );
4+
5+
test( 'imports correctly', t => {
6+
const us = require( '../us.js' );
7+
t.ok( us, 'imported library' );
8+
t.ok( us && us.states && typeof us.states === 'object', 'exports "states" object' );
9+
t.ok( us && us.STATES && typeof us.STATES === 'object', 'exports "STATES" object' );
10+
t.ok( us && us.STATES_AND_TERRITORIES && typeof us.STATES_AND_TERRITORIES === 'object', 'exports "STATES_AND_TERRITORIES" object' );
11+
t.ok( us && us.lookup && typeof us.lookup === 'function', 'exports "lookup" method' );
12+
t.ok( us && us.mapping && typeof us.mapping === 'function', 'exports "mapping" method' );
13+
t.end();
14+
} );

0 commit comments

Comments
 (0)