robb
Version:
Simple type checker in JavaScript.
322 lines (312 loc) • 3.89 kB
JavaScript
// Load ‘Robb.js’
var Robb = require('../src/robb.js');
/**
* Test ‘isEmail’
*
* @param {object} test
*/
exports.isEmail = function(test) {
/**
* List of Domains
*/
var domains = [
'.ac',
'.ad',
'.ae',
'.af',
'.ag',
'.ai',
'.al',
'.am',
'.an',
'.ao',
'.aq',
'.ar',
'.as',
'.at',
'.au',
'.aw',
'.ax',
'.az',
'.ba',
'.bb',
'.bd',
'.be',
'.bf',
'.bg',
'.bh',
'.bi',
'.bj',
'.bm',
'.bn',
'.bo',
'.br',
'.bs',
'.bt',
'.bv',
'.bw',
'.by',
'.bz',
'.ca',
'.cc',
'.cd',
'.cf',
'.cg',
'.ch',
'.ci',
'.ck',
'.cl',
'.cm',
'.cn',
'.co',
'.cr',
'.cs',
'.cu',
'.cv',
'.cx',
'.cy',
'.cz',
'.dd',
'.de',
'.dj',
'.dk',
'.dm',
'.do',
'.dz',
'.ec',
'.ee',
'.eg',
'.er',
'.es',
'.et',
'.eu',
'.fi',
'.fj',
'.fk',
'.fm',
'.fo',
'.fr',
'.ga',
'.gb',
'.gd',
'.ge',
'.gf',
'.gg',
'.gh',
'.gi',
'.gl',
'.gm',
'.gn',
'.gp',
'.gq',
'.gr',
'.gs',
'.gt',
'.gu',
'.gw',
'.gy',
'.hk',
'.hm',
'.hn',
'.hr',
'.ht',
'.hu',
'.id',
'.ie',
'.il',
'.im',
'.in',
'.io',
'.iq',
'.ir',
'.is',
'.it',
'.je',
'.jm',
'.jo',
'.jp',
'.ke',
'.kg',
'.kh',
'.ki',
'.km',
'.kn',
'.kp',
'.kr',
'.kw',
'.ky',
'.kz',
'.la',
'.lb',
'.lc',
'.li',
'.lk',
'.lr',
'.ls',
'.lt',
'.lu',
'.lv',
'.ly',
'.ma',
'.mc',
'.md',
'.me',
'.mg',
'.mh',
'.mk',
'.ml',
'.mm',
'.mn',
'.mo',
'.mp',
'.mq',
'.mr',
'.ms',
'.mt',
'.mu',
'.mv',
'.mw',
'.mx',
'.my',
'.mz',
'.na',
'.nc',
'.ne',
'.nf',
'.ng',
'.ni',
'.nl',
'.no',
'.np',
'.nr',
'.nu',
'.nz',
'.om',
'.pa',
'.pe',
'.pf',
'.pg',
'.ph',
'.pk',
'.pl',
'.pm',
'.pn',
'.pr',
'.ps',
'.pt',
'.pw',
'.py',
'.qa',
'.re',
'.ro',
'.rs',
'.ru',
'.rw',
'.sa',
'.sb',
'.sc',
'.sd',
'.se',
'.sg',
'.sh',
'.si',
'.sj',
'.sk',
'.sl',
'.sm',
'.sn',
'.so',
'.sr',
'.st',
'.su',
'.sv',
'.sy',
'.sz',
'.tc',
'.td',
'.tf',
'.tg',
'.th',
'.tj',
'.tk',
'.tl',
'.tm',
'.tn',
'.to',
'.tp',
'.tr',
'.tt',
'.tv',
'.tw',
'.tz',
'.ua',
'.ug',
'.uk',
'.us',
'.uy',
'.uz',
'.va',
'.vc',
'.ve',
'.vg',
'.vi',
'.vn',
'.vu',
'.wf',
'.ws',
'.ye',
'.yt',
'.za',
'.zm',
'.zw',
'.aero',
'.asia',
'.biz',
'.cat',
'.com',
'.coop',
'.edu',
'.gov',
'.info',
'.int',
'.jobs',
'.mil',
'.mobi',
'.museum',
'.name',
'.net',
'.org',
'.pro',
'.tel',
'.travel',
'.xxx'
];
/**
* List of names
*/
var names = [
'info',
'myEmail',
'myEmail+notifications',
'my.email',
'my_email',
'my-email',
'my.email.my.email'
];
var fails = [
'info mail'
];
domains.forEach(function(domain) {
names.forEach(function(name) {
var res = Robb.isEmail( name + '@' + 'example' + domain );
test.strictEqual( res, true );
});
fails.forEach(function(name) {
var res1 = Robb.isEmail( name + '@' + 'example' + domain );
var res2 = Robb.isEmail( 'info@' + 'example');
test.strictEqual( res1, false );
test.strictEqual( res2, false );
});
});
test.done();
};