#!/usr/bin/env python
# -*- coding: utf-8 -*-

import unittest

from mutations.replace import replace
from mutations.keyboard import keyboard
from mutations.adictions import adictions
from mutations.countries import countries
from mutations.subdomains import subdomains
from mutations.change_tld import change_tld
from mutations.repetition import repetition
from mutations.subtraction import subtraction
from mutations.integration import integration
from mutations.distance import distance_levenshtein


class TestTypoDetect(unittest.TestCase):
    maxDiff = None

    def setUp(self):
        self.base = ''
        self.possibilities = []

    def test_countries(self):
        base = ['elevenpaths.com', 'elevenpaths.co', 'elevenpaths.tech.bs']
        possibilities = []
        result = [['elevenpaths.com.ac', 'elevenpaths.com.ad',
                   'elevenpaths.com.ae', 'elevenpaths.com.af',
                   'elevenpaths.com.ag', 'elevenpaths.com.ai',
                   'elevenpaths.com.al', 'elevenpaths.com.am',
                   'elevenpaths.com.ao', 'elevenpaths.com.aq',
                   'elevenpaths.com.ar', 'elevenpaths.com.as',
                   'elevenpaths.com.at', 'elevenpaths.com.au',
                   'elevenpaths.com.aw', 'elevenpaths.com.ax',
                   'elevenpaths.com.az', 'elevenpaths.com.ba',
                   'elevenpaths.com.bb', 'elevenpaths.com.bd',
                   'elevenpaths.com.be', 'elevenpaths.com.bf',
                   'elevenpaths.com.bg', 'elevenpaths.com.bh',
                   'elevenpaths.com.bi', 'elevenpaths.com.bj',
                   'elevenpaths.com.bm', 'elevenpaths.com.bn',
                   'elevenpaths.com.bo', 'elevenpaths.com.bq',
                   'elevenpaths.com.br', 'elevenpaths.com.bs',
                   'elevenpaths.com.bt', 'elevenpaths.com.bw',
                   'elevenpaths.com.by', 'elevenpaths.com.bz',
                   'elevenpaths.com.ca', 'elevenpaths.com.cc',
                   'elevenpaths.com.cd', 'elevenpaths.com.cf',
                   'elevenpaths.com.cg', 'elevenpaths.com.ch',
                   'elevenpaths.com.ci', 'elevenpaths.com.ck',
                   'elevenpaths.com.cl', 'elevenpaths.com.cm',
                   'elevenpaths.com.cn', 'elevenpaths.com.co',
                   'elevenpaths.com.cr', 'elevenpaths.com.cu',
                   'elevenpaths.com.cv', 'elevenpaths.com.cw',
                   'elevenpaths.com.cx', 'elevenpaths.com.cy',
                   'elevenpaths.com.cz', 'elevenpaths.com.de',
                   'elevenpaths.com.dj', 'elevenpaths.com.dk',
                   'elevenpaths.com.dm', 'elevenpaths.com.do',
                   'elevenpaths.com.dz', 'elevenpaths.com.ec',
                   'elevenpaths.com.ee', 'elevenpaths.com.eg',
                   'elevenpaths.com.er', 'elevenpaths.com.es',
                   'elevenpaths.com.et', 'elevenpaths.com.eu',
                   'elevenpaths.com.fi', 'elevenpaths.com.fj',
                   'elevenpaths.com.fk', 'elevenpaths.com.fm',
                   'elevenpaths.com.fo', 'elevenpaths.com.fr',
                   'elevenpaths.com.ga', 'elevenpaths.com.gd',
                   'elevenpaths.com.ge', 'elevenpaths.com.gf',
                   'elevenpaths.com.gg', 'elevenpaths.com.gh',
                   'elevenpaths.com.gi', 'elevenpaths.com.gl',
                   'elevenpaths.com.gm', 'elevenpaths.com.gn',
                   'elevenpaths.com.gp', 'elevenpaths.com.gq',
                   'elevenpaths.com.gr', 'elevenpaths.com.gs',
                   'elevenpaths.com.gt', 'elevenpaths.com.gu',
                   'elevenpaths.com.gw', 'elevenpaths.com.gy',
                   'elevenpaths.com.hk', 'elevenpaths.com.hm',
                   'elevenpaths.com.hn', 'elevenpaths.com.hr',
                   'elevenpaths.com.ht', 'elevenpaths.com.hu',
                   'elevenpaths.com.id', 'elevenpaths.com.ie'],
                  ['elevenpaths.ac', 'elevenpaths.ad',
                   'elevenpaths.ae', 'elevenpaths.af',
                   'elevenpaths.ag', 'elevenpaths.ai',
                   'elevenpaths.al', 'elevenpaths.am',
                   'elevenpaths.ao', 'elevenpaths.aq',
                   'elevenpaths.ar', 'elevenpaths.as',
                   'elevenpaths.at', 'elevenpaths.au',
                   'elevenpaths.aw', 'elevenpaths.ax',
                   'elevenpaths.az', 'elevenpaths.ba',
                   'elevenpaths.bb', 'elevenpaths.bd',
                   'elevenpaths.be', 'elevenpaths.bf',
                   'elevenpaths.bg', 'elevenpaths.bh',
                   'elevenpaths.bi', 'elevenpaths.bj',
                   'elevenpaths.bm', 'elevenpaths.bn',
                   'elevenpaths.bo', 'elevenpaths.bq',
                   'elevenpaths.br', 'elevenpaths.bs',
                   'elevenpaths.bt', 'elevenpaths.bw',
                   'elevenpaths.by', 'elevenpaths.bz',
                   'elevenpaths.ca', 'elevenpaths.cc',
                   'elevenpaths.cd', 'elevenpaths.cf',
                   'elevenpaths.cg', 'elevenpaths.ch',
                   'elevenpaths.ci', 'elevenpaths.ck',
                   'elevenpaths.cl', 'elevenpaths.cm',
                   'elevenpaths.cn', 'elevenpaths.co',
                   'elevenpaths.cr', 'elevenpaths.cu',
                   'elevenpaths.cv', 'elevenpaths.cw',
                   'elevenpaths.cx', 'elevenpaths.cy',
                   'elevenpaths.cz', 'elevenpaths.de',
                   'elevenpaths.dj', 'elevenpaths.dk',
                   'elevenpaths.dm', 'elevenpaths.do',
                   'elevenpaths.dz', 'elevenpaths.ec',
                   'elevenpaths.ee', 'elevenpaths.eg',
                   'elevenpaths.er', 'elevenpaths.es',
                   'elevenpaths.et', 'elevenpaths.eu',
                   'elevenpaths.fi', 'elevenpaths.fj',
                   'elevenpaths.fk', 'elevenpaths.fm',
                   'elevenpaths.fo', 'elevenpaths.fr',
                   'elevenpaths.ga', 'elevenpaths.gd',
                   'elevenpaths.ge', 'elevenpaths.gf',
                   'elevenpaths.gg', 'elevenpaths.gh',
                   'elevenpaths.gi', 'elevenpaths.gl',
                   'elevenpaths.gm', 'elevenpaths.gn',
                   'elevenpaths.gp', 'elevenpaths.gq',
                   'elevenpaths.gr', 'elevenpaths.gs',
                   'elevenpaths.gt', 'elevenpaths.gu',
                   'elevenpaths.gw', 'elevenpaths.gy',
                   'elevenpaths.hk', 'elevenpaths.hm',
                   'elevenpaths.hn', 'elevenpaths.hr',
                   'elevenpaths.ht', 'elevenpaths.hu',
                   'elevenpaths.id', 'elevenpaths.ie'],
                  ['elevenpaths.tech.ac', 'elevenpaths.tech.ad',
                   'elevenpaths.tech.ae', 'elevenpaths.tech.af',
                   'elevenpaths.tech.ag', 'elevenpaths.tech.ai',
                   'elevenpaths.tech.al', 'elevenpaths.tech.am',
                   'elevenpaths.tech.ao', 'elevenpaths.tech.aq',
                   'elevenpaths.tech.ar', 'elevenpaths.tech.as',
                   'elevenpaths.tech.at', 'elevenpaths.tech.au',
                   'elevenpaths.tech.aw', 'elevenpaths.tech.ax',
                   'elevenpaths.tech.az', 'elevenpaths.tech.ba',
                   'elevenpaths.tech.bb', 'elevenpaths.tech.bd',
                   'elevenpaths.tech.be', 'elevenpaths.tech.bf',
                   'elevenpaths.tech.bg', 'elevenpaths.tech.bh',
                   'elevenpaths.tech.bi', 'elevenpaths.tech.bj',
                   'elevenpaths.tech.bm', 'elevenpaths.tech.bn',
                   'elevenpaths.tech.bo', 'elevenpaths.tech.bq',
                   'elevenpaths.tech.br', 'elevenpaths.tech.bs',
                   'elevenpaths.tech.bt', 'elevenpaths.tech.bw',
                   'elevenpaths.tech.by', 'elevenpaths.tech.bz',
                   'elevenpaths.tech.ca', 'elevenpaths.tech.cc',
                   'elevenpaths.tech.cd', 'elevenpaths.tech.cf',
                   'elevenpaths.tech.cg', 'elevenpaths.tech.ch',
                   'elevenpaths.tech.ci', 'elevenpaths.tech.ck',
                   'elevenpaths.tech.cl', 'elevenpaths.tech.cm',
                   'elevenpaths.tech.cn', 'elevenpaths.tech.co',
                   'elevenpaths.tech.cr', 'elevenpaths.tech.cu',
                   'elevenpaths.tech.cv', 'elevenpaths.tech.cw',
                   'elevenpaths.tech.cx', 'elevenpaths.tech.cy',
                   'elevenpaths.tech.cz', 'elevenpaths.tech.de',
                   'elevenpaths.tech.dj', 'elevenpaths.tech.dk',
                   'elevenpaths.tech.dm', 'elevenpaths.tech.do',
                   'elevenpaths.tech.dz', 'elevenpaths.tech.ec',
                   'elevenpaths.tech.ee', 'elevenpaths.tech.eg',
                   'elevenpaths.tech.er', 'elevenpaths.tech.es',
                   'elevenpaths.tech.et', 'elevenpaths.tech.eu',
                   'elevenpaths.tech.fi', 'elevenpaths.tech.fj',
                   'elevenpaths.tech.fk', 'elevenpaths.tech.fm',
                   'elevenpaths.tech.fo', 'elevenpaths.tech.fr',
                   'elevenpaths.tech.ga', 'elevenpaths.tech.gd',
                   'elevenpaths.tech.ge', 'elevenpaths.tech.gf',
                   'elevenpaths.tech.gg', 'elevenpaths.tech.gh',
                   'elevenpaths.tech.gi', 'elevenpaths.tech.gl',
                   'elevenpaths.tech.gm', 'elevenpaths.tech.gn',
                   'elevenpaths.tech.gp', 'elevenpaths.tech.gq',
                   'elevenpaths.tech.gr', 'elevenpaths.tech.gs',
                   'elevenpaths.tech.gt', 'elevenpaths.tech.gu',
                   'elevenpaths.tech.gw', 'elevenpaths.tech.gy',
                   'elevenpaths.tech.hk', 'elevenpaths.tech.hm',
                   'elevenpaths.tech.hn', 'elevenpaths.tech.hr',
                   'elevenpaths.tech.ht', 'elevenpaths.tech.hu',
                   'elevenpaths.tech.id', 'elevenpaths.tech.ie']
                  ]

        for b in base:
            self.assertEqual(countries(b, possibilities)[0:100],
                             result[base.index(b)])
            possibilities = []

    def test_integrartion(self):
        base = ['elevenpaths.com', 'elevenpaths.tech.bs']
        possibilities = []
        result = [['elevenpathscom.com', 'elevenpathscom.com.ac',
                  'elevenpathscom.com.ad', 'elevenpathscom.com.ae',
                   'elevenpathscom.com.af', 'elevenpathscom.com.ag',
                   'elevenpathscom.com.ai', 'elevenpathscom.com.al',
                   'elevenpathscom.com.am', 'elevenpathscom.com.ao',
                   'elevenpathscom.com.aq', 'elevenpathscom.com.ar',
                   'elevenpathscom.com.as', 'elevenpathscom.com.at',
                   'elevenpathscom.com.au', 'elevenpathscom.com.aw',
                   'elevenpathscom.com.ax', 'elevenpathscom.com.az',
                   'elevenpathscom.com.ba', 'elevenpathscom.com.bb',
                   'elevenpathscom.com.bd', 'elevenpathscom.com.be',
                   'elevenpathscom.com.bf', 'elevenpathscom.com.bg',
                   'elevenpathscom.com.bh', 'elevenpathscom.com.bi',
                   'elevenpathscom.com.bj', 'elevenpathscom.com.bm',
                   'elevenpathscom.com.bn', 'elevenpathscom.com.bo',
                   'elevenpathscom.com.bq', 'elevenpathscom.com.br',
                   'elevenpathscom.com.bs', 'elevenpathscom.com.bt',
                   'elevenpathscom.com.bw', 'elevenpathscom.com.by',
                   'elevenpathscom.com.bz', 'elevenpathscom.com.ca',
                   'elevenpathscom.com.cc', 'elevenpathscom.com.cd',
                   'elevenpathscom.com.cf', 'elevenpathscom.com.cg',
                   'elevenpathscom.com.ch', 'elevenpathscom.com.ci',
                   'elevenpathscom.com.ck', 'elevenpathscom.com.cl',
                   'elevenpathscom.com.cm', 'elevenpathscom.com.cn',
                   'elevenpathscom.com.co', 'elevenpathscom.com.cr',
                   'elevenpathscom.com.cu', 'elevenpathscom.com.cv',
                   'elevenpathscom.com.cw', 'elevenpathscom.com.cx',
                   'elevenpathscom.com.cy', 'elevenpathscom.com.cz',
                   'elevenpathscom.com.de', 'elevenpathscom.com.dj',
                   'elevenpathscom.com.dk', 'elevenpathscom.com.dm',
                   'elevenpathscom.com.do', 'elevenpathscom.com.dz',
                   'elevenpathscom.com.ec', 'elevenpathscom.com.ee',
                   'elevenpathscom.com.eg', 'elevenpathscom.com.er',
                   'elevenpathscom.com.es', 'elevenpathscom.com.et',
                   'elevenpathscom.com.eu', 'elevenpathscom.com.fi',
                   'elevenpathscom.com.fj', 'elevenpathscom.com.fk',
                   'elevenpathscom.com.fm', 'elevenpathscom.com.fo',
                   'elevenpathscom.com.fr', 'elevenpathscom.com.ga',
                   'elevenpathscom.com.gd', 'elevenpathscom.com.ge',
                   'elevenpathscom.com.gf', 'elevenpathscom.com.gg',
                   'elevenpathscom.com.gh', 'elevenpathscom.com.gi',
                   'elevenpathscom.com.gl', 'elevenpathscom.com.gm',
                   'elevenpathscom.com.gn', 'elevenpathscom.com.gp',
                   'elevenpathscom.com.gq', 'elevenpathscom.com.gr',
                   'elevenpathscom.com.gs', 'elevenpathscom.com.gt',
                   'elevenpathscom.com.gu', 'elevenpathscom.com.gw',
                   'elevenpathscom.com.gy', 'elevenpathscom.com.hk',
                   'elevenpathscom.com.hm', 'elevenpathscom.com.hn',
                   'elevenpathscom.com.hr', 'elevenpathscom.com.ht',
                   'elevenpathscom.com.hu', 'elevenpathscom.com.id'],
                  ['elevenpathstechbs.com', 'elevenpathstechbs.com.ac',
                   'elevenpathstechbs.com.ad', 'elevenpathstechbs.com.ae',
                   'elevenpathstechbs.com.af', 'elevenpathstechbs.com.ag',
                   'elevenpathstechbs.com.ai', 'elevenpathstechbs.com.al',
                   'elevenpathstechbs.com.am', 'elevenpathstechbs.com.ao',
                   'elevenpathstechbs.com.aq', 'elevenpathstechbs.com.ar',
                   'elevenpathstechbs.com.as', 'elevenpathstechbs.com.at',
                   'elevenpathstechbs.com.au', 'elevenpathstechbs.com.aw',
                   'elevenpathstechbs.com.ax', 'elevenpathstechbs.com.az',
                   'elevenpathstechbs.com.ba', 'elevenpathstechbs.com.bb',
                   'elevenpathstechbs.com.bd', 'elevenpathstechbs.com.be',
                   'elevenpathstechbs.com.bf', 'elevenpathstechbs.com.bg',
                   'elevenpathstechbs.com.bh', 'elevenpathstechbs.com.bi',
                   'elevenpathstechbs.com.bj', 'elevenpathstechbs.com.bm',
                   'elevenpathstechbs.com.bn', 'elevenpathstechbs.com.bo',
                   'elevenpathstechbs.com.bq', 'elevenpathstechbs.com.br',
                   'elevenpathstechbs.com.bs', 'elevenpathstechbs.com.bt',
                   'elevenpathstechbs.com.bw', 'elevenpathstechbs.com.by',
                   'elevenpathstechbs.com.bz', 'elevenpathstechbs.com.ca',
                   'elevenpathstechbs.com.cc', 'elevenpathstechbs.com.cd',
                   'elevenpathstechbs.com.cf', 'elevenpathstechbs.com.cg',
                   'elevenpathstechbs.com.ch', 'elevenpathstechbs.com.ci',
                   'elevenpathstechbs.com.ck', 'elevenpathstechbs.com.cl',
                   'elevenpathstechbs.com.cm', 'elevenpathstechbs.com.cn',
                   'elevenpathstechbs.com.co', 'elevenpathstechbs.com.cr',
                   'elevenpathstechbs.com.cu', 'elevenpathstechbs.com.cv',
                   'elevenpathstechbs.com.cw', 'elevenpathstechbs.com.cx',
                   'elevenpathstechbs.com.cy', 'elevenpathstechbs.com.cz',
                   'elevenpathstechbs.com.de', 'elevenpathstechbs.com.dj',
                   'elevenpathstechbs.com.dk', 'elevenpathstechbs.com.dm',
                   'elevenpathstechbs.com.do', 'elevenpathstechbs.com.dz',
                   'elevenpathstechbs.com.ec', 'elevenpathstechbs.com.ee',
                   'elevenpathstechbs.com.eg', 'elevenpathstechbs.com.er',
                   'elevenpathstechbs.com.es', 'elevenpathstechbs.com.et',
                   'elevenpathstechbs.com.eu', 'elevenpathstechbs.com.fi',
                   'elevenpathstechbs.com.fj', 'elevenpathstechbs.com.fk',
                   'elevenpathstechbs.com.fm', 'elevenpathstechbs.com.fo',
                   'elevenpathstechbs.com.fr', 'elevenpathstechbs.com.ga',
                   'elevenpathstechbs.com.gd', 'elevenpathstechbs.com.ge',
                   'elevenpathstechbs.com.gf', 'elevenpathstechbs.com.gg',
                   'elevenpathstechbs.com.gh', 'elevenpathstechbs.com.gi',
                   'elevenpathstechbs.com.gl', 'elevenpathstechbs.com.gm',
                   'elevenpathstechbs.com.gn', 'elevenpathstechbs.com.gp',
                   'elevenpathstechbs.com.gq', 'elevenpathstechbs.com.gr',
                   'elevenpathstechbs.com.gs', 'elevenpathstechbs.com.gt',
                   'elevenpathstechbs.com.gu', 'elevenpathstechbs.com.gw',
                   'elevenpathstechbs.com.gy', 'elevenpathstechbs.com.hk',
                   'elevenpathstechbs.com.hm', 'elevenpathstechbs.com.hn',
                   'elevenpathstechbs.com.hr', 'elevenpathstechbs.com.ht',
                   'elevenpathstechbs.com.hu', 'elevenpathstechbs.com.id']]

        for b in base:
            self.assertEqual(integration(b, possibilities)[0:100],
                             result[base.index(b)])
            possibilities = []

    def test_subdomains(self):
        base = 'elevenpaths'
        tlds = 'com'
        result = ['.elevenpaths.com', '.elevenpaths.com', '.elevenpaths.com',
                  '-elevenpaths.com', '.elevenpaths.com.ac',
                  '-elevenpaths.com.ac', '.elevenpaths.com.ad',
                  '-elevenpaths.com.ad', '.elevenpaths.com.ae',
                  '-elevenpaths.com.ae', '.elevenpaths.com.af',
                  '-elevenpaths.com.af', '.elevenpaths.com.ag',
                  '-elevenpaths.com.ag', '.elevenpaths.com.ai',
                  '-elevenpaths.com.ai', '.elevenpaths.com.al',
                  '-elevenpaths.com.al', '.elevenpaths.com.am',
                  '-elevenpaths.com.am', '.elevenpaths.com.ao',
                  '-elevenpaths.com.ao', '.elevenpaths.com.aq',
                  '-elevenpaths.com.aq', '.elevenpaths.com.ar',
                  '-elevenpaths.com.ar', '.elevenpaths.com.as',
                  '-elevenpaths.com.as', '.elevenpaths.com.at',
                  '-elevenpaths.com.at', '.elevenpaths.com.au',
                  '-elevenpaths.com.au', '.elevenpaths.com.aw',
                  '-elevenpaths.com.aw', '.elevenpaths.com.ax',
                  '-elevenpaths.com.ax', '.elevenpaths.com.az',
                  '-elevenpaths.com.az', '.elevenpaths.com.ba',
                  '-elevenpaths.com.ba', '.elevenpaths.com.bb',
                  '-elevenpaths.com.bb', '.elevenpaths.com.bd',
                  '-elevenpaths.com.bd', '.elevenpaths.com.be',
                  '-elevenpaths.com.be', '.elevenpaths.com.bf',
                  '-elevenpaths.com.bf', '.elevenpaths.com.bg',
                  '-elevenpaths.com.bg', '.elevenpaths.com.bh',
                  '-elevenpaths.com.bh', '.elevenpaths.com.bi',
                  '-elevenpaths.com.bi', '.elevenpaths.com.bj',
                  '-elevenpaths.com.bj', '.elevenpaths.com.bm',
                  '-elevenpaths.com.bm', '.elevenpaths.com.bn',
                  '-elevenpaths.com.bn', '.elevenpaths.com.bo',
                  '-elevenpaths.com.bo', '.elevenpaths.com.bq',
                  '-elevenpaths.com.bq', '.elevenpaths.com.br',
                  '-elevenpaths.com.br', '.elevenpaths.com.bs',
                  '-elevenpaths.com.bs', '.elevenpaths.com.bt',
                  '-elevenpaths.com.bt', '.elevenpaths.com.bw',
                  '-elevenpaths.com.bw', '.elevenpaths.com.by',
                  '-elevenpaths.com.by', '.elevenpaths.com.bz',
                  '-elevenpaths.com.bz', '.elevenpaths.com.ca',
                  '-elevenpaths.com.ca', '.elevenpaths.com.cc',
                  '-elevenpaths.com.cc', '.elevenpaths.com.cd',
                  '-elevenpaths.com.cd', '.elevenpaths.com.cf',
                  '-elevenpaths.com.cf', '.elevenpaths.com.cg',
                  '-elevenpaths.com.cg', '.elevenpaths.com.ch',
                  '-elevenpaths.com.ch', '.elevenpaths.com.ci',
                  '-elevenpaths.com.ci', '.elevenpaths.com.ck',
                  '-elevenpaths.com.ck', '.elevenpaths.com.cl',
                  '-elevenpaths.com.cl', '.elevenpaths.com.cm',
                  '-elevenpaths.com.cm', '.elevenpaths.com.cn',
                  '-elevenpaths.com.cn', '.elevenpaths.com.co',
                  '-elevenpaths.com.co']

        self.assertEqual(subdomains(base, tlds, self.possibilities)[0:100],
                         result)

    def test_change_tld(self):
        base = 'elevenpaths'
        result = ['elevenpaths.com', 'elevenpaths.com.ac',
                  'elevenpaths.com.ad', 'elevenpaths.com.ae',
                  'elevenpaths.com.af', 'elevenpaths.com.ag',
                  'elevenpaths.com.ai', 'elevenpaths.com.al',
                  'elevenpaths.com.am', 'elevenpaths.com.ao',
                  'elevenpaths.com.aq', 'elevenpaths.com.ar',
                  'elevenpaths.com.as', 'elevenpaths.com.at',
                  'elevenpaths.com.au', 'elevenpaths.com.aw',
                  'elevenpaths.com.ax', 'elevenpaths.com.az',
                  'elevenpaths.com.ba', 'elevenpaths.com.bb',
                  'elevenpaths.com.bd', 'elevenpaths.com.be',
                  'elevenpaths.com.bf', 'elevenpaths.com.bg',
                  'elevenpaths.com.bh', 'elevenpaths.com.bi',
                  'elevenpaths.com.bj', 'elevenpaths.com.bm',
                  'elevenpaths.com.bn', 'elevenpaths.com.bo',
                  'elevenpaths.com.bq', 'elevenpaths.com.br',
                  'elevenpaths.com.bs', 'elevenpaths.com.bt',
                  'elevenpaths.com.bw', 'elevenpaths.com.by',
                  'elevenpaths.com.bz', 'elevenpaths.com.ca',
                  'elevenpaths.com.cc', 'elevenpaths.com.cd',
                  'elevenpaths.com.cf', 'elevenpaths.com.cg',
                  'elevenpaths.com.ch', 'elevenpaths.com.ci',
                  'elevenpaths.com.ck', 'elevenpaths.com.cl',
                  'elevenpaths.com.cm', 'elevenpaths.com.cn',
                  'elevenpaths.com.co', 'elevenpaths.com.cr',
                  'elevenpaths.com.cu', 'elevenpaths.com.cv',
                  'elevenpaths.com.cw', 'elevenpaths.com.cx',
                  'elevenpaths.com.cy', 'elevenpaths.com.cz',
                  'elevenpaths.com.de', 'elevenpaths.com.dj',
                  'elevenpaths.com.dk', 'elevenpaths.com.dm',
                  'elevenpaths.com.do', 'elevenpaths.com.dz',
                  'elevenpaths.com.ec', 'elevenpaths.com.ee',
                  'elevenpaths.com.eg', 'elevenpaths.com.er',
                  'elevenpaths.com.es', 'elevenpaths.com.et',
                  'elevenpaths.com.eu', 'elevenpaths.com.fi',
                  'elevenpaths.com.fj', 'elevenpaths.com.fk',
                  'elevenpaths.com.fm', 'elevenpaths.com.fo',
                  'elevenpaths.com.fr', 'elevenpaths.com.ga',
                  'elevenpaths.com.gd', 'elevenpaths.com.ge',
                  'elevenpaths.com.gf', 'elevenpaths.com.gg',
                  'elevenpaths.com.gh', 'elevenpaths.com.gi',
                  'elevenpaths.com.gl', 'elevenpaths.com.gm',
                  'elevenpaths.com.gn', 'elevenpaths.com.gp',
                  'elevenpaths.com.gq', 'elevenpaths.com.gr',
                  'elevenpaths.com.gs', 'elevenpaths.com.gt',
                  'elevenpaths.com.gu', 'elevenpaths.com.gw',
                  'elevenpaths.com.gy', 'elevenpaths.com.hk',
                  'elevenpaths.com.hm', 'elevenpaths.com.hn',
                  'elevenpaths.com.hr', 'elevenpaths.com.ht',
                  'elevenpaths.com.hu', 'elevenpaths.com.id']

        self.assertEqual(change_tld(base, self.possibilities)[0:100], result)

    def test_subtraction(self):
        base = 'elevenpaths'
        tlds = 'com'
        result = ['levenpaths.com', 'levenpaths.com', 'levenpaths.com.ac',
                  'levenpaths.com.ad', 'levenpaths.com.ae',
                  'levenpaths.com.af', 'levenpaths.com.ag',
                  'levenpaths.com.ai', 'levenpaths.com.al',
                  'levenpaths.com.am', 'levenpaths.com.ao',
                  'levenpaths.com.aq', 'levenpaths.com.ar',
                  'levenpaths.com.as', 'levenpaths.com.at',
                  'levenpaths.com.au', 'levenpaths.com.aw',
                  'levenpaths.com.ax', 'levenpaths.com.az',
                  'levenpaths.com.ba', 'levenpaths.com.bb',
                  'levenpaths.com.bd', 'levenpaths.com.be',
                  'levenpaths.com.bf', 'levenpaths.com.bg',
                  'levenpaths.com.bh', 'levenpaths.com.bi',
                  'levenpaths.com.bj', 'levenpaths.com.bm',
                  'levenpaths.com.bn', 'levenpaths.com.bo',
                  'levenpaths.com.bq', 'levenpaths.com.br',
                  'levenpaths.com.bs', 'levenpaths.com.bt',
                  'levenpaths.com.bw', 'levenpaths.com.by',
                  'levenpaths.com.bz', 'levenpaths.com.ca',
                  'levenpaths.com.cc', 'levenpaths.com.cd',
                  'levenpaths.com.cf', 'levenpaths.com.cg',
                  'levenpaths.com.ch', 'levenpaths.com.ci',
                  'levenpaths.com.ck', 'levenpaths.com.cl',
                  'levenpaths.com.cm', 'levenpaths.com.cn',
                  'levenpaths.com.co', 'levenpaths.com.cr',
                  'levenpaths.com.cu', 'levenpaths.com.cv',
                  'levenpaths.com.cw', 'levenpaths.com.cx',
                  'levenpaths.com.cy', 'levenpaths.com.cz',
                  'levenpaths.com.de', 'levenpaths.com.dj',
                  'levenpaths.com.dk', 'levenpaths.com.dm',
                  'levenpaths.com.do', 'levenpaths.com.dz',
                  'levenpaths.com.ec', 'levenpaths.com.ee',
                  'levenpaths.com.eg', 'levenpaths.com.er',
                  'levenpaths.com.es', 'levenpaths.com.et',
                  'levenpaths.com.eu', 'levenpaths.com.fi',
                  'levenpaths.com.fj', 'levenpaths.com.fk',
                  'levenpaths.com.fm', 'levenpaths.com.fo',
                  'levenpaths.com.fr', 'levenpaths.com.ga',
                  'levenpaths.com.gd', 'levenpaths.com.ge',
                  'levenpaths.com.gf', 'levenpaths.com.gg',
                  'levenpaths.com.gh', 'levenpaths.com.gi',
                  'levenpaths.com.gl', 'levenpaths.com.gm',
                  'levenpaths.com.gn', 'levenpaths.com.gp',
                  'levenpaths.com.gq', 'levenpaths.com.gr',
                  'levenpaths.com.gs', 'levenpaths.com.gt',
                  'levenpaths.com.gu', 'levenpaths.com.gw',
                  'levenpaths.com.gy', 'levenpaths.com.hk',
                  'levenpaths.com.hm', 'levenpaths.com.hn',
                  'levenpaths.com.hr', 'levenpaths.com.ht',
                  'levenpaths.com.hu']

        self.assertEqual(subtraction(base, tlds, self.possibilities)[0:100],
                         result)

    def test_adictions(self):
        base = 'elevenpaths'
        tlds = 'com.co'
        result = ['www-elevenpaths.com', 'www-elevenpaths-com.com',
                  'www-elevenpaths-com.com', 'www-elevenpaths-com.org',
                  'www-elevenpaths-com.net', 'www-elevenpaths-com.int',
                  'www-elevenpaths-com.edu', 'www-elevenpaths-com.gov',
                  'www-elevenpaths-com.mil', 'www-elevenpaths-com.arpa',
                  'www-elevenpaths-com.ac', 'www-elevenpaths-com.ad',
                  'www-elevenpaths-com.ae', 'www-elevenpaths-com.af',
                  'www-elevenpaths-com.ag', 'www-elevenpaths-com.ai',
                  'www-elevenpaths-com.al', 'www-elevenpaths-com.am',
                  'www-elevenpaths-com.ao', 'www-elevenpaths-com.aq',
                  'www-elevenpaths-com.ar', 'www-elevenpaths-com.as',
                  'www-elevenpaths-com.at', 'www-elevenpaths-com.au',
                  'www-elevenpaths-com.aw', 'www-elevenpaths-com.ax',
                  'www-elevenpaths-com.az', 'www-elevenpaths-com.ba',
                  'www-elevenpaths-com.bb', 'www-elevenpaths-com.bd',
                  'www-elevenpaths-com.be', 'www-elevenpaths-com.bf',
                  'www-elevenpaths-com.bg', 'www-elevenpaths-com.bh',
                  'www-elevenpaths-com.bi', 'www-elevenpaths-com.bj',
                  'www-elevenpaths-com.bm', 'www-elevenpaths-com.bn',
                  'www-elevenpaths-com.bo', 'www-elevenpaths-com.bq',
                  'www-elevenpaths-com.br', 'www-elevenpaths-com.bs',
                  'www-elevenpaths-com.bt', 'www-elevenpaths-com.bw',
                  'www-elevenpaths-com.by', 'www-elevenpaths-com.bz',
                  'www-elevenpaths-com.ca', 'www-elevenpaths-com.cc',
                  'www-elevenpaths-com.cd', 'www-elevenpaths-com.cf',
                  'www-elevenpaths-com.cg', 'www-elevenpaths-com.ch',
                  'www-elevenpaths-com.ci', 'www-elevenpaths-com.ck',
                  'www-elevenpaths-com.cl', 'www-elevenpaths-com.cm',
                  'www-elevenpaths-com.cn', 'www-elevenpaths-com.co',
                  'www-elevenpaths-com.cr', 'www-elevenpaths-com.cu',
                  'www-elevenpaths-com.cv', 'www-elevenpaths-com.cw',
                  'www-elevenpaths-com.cx', 'www-elevenpaths-com.cy',
                  'www-elevenpaths-com.cz', 'www-elevenpaths-com.de',
                  'www-elevenpaths-com.dj', 'www-elevenpaths-com.dk',
                  'www-elevenpaths-com.dm', 'www-elevenpaths-com.do',
                  'www-elevenpaths-com.dz', 'www-elevenpaths-com.ec',
                  'www-elevenpaths-com.ee', 'www-elevenpaths-com.eg',
                  'www-elevenpaths-com.er', 'www-elevenpaths-com.es',
                  'www-elevenpaths-com.et', 'www-elevenpaths-com.eu',
                  'www-elevenpaths-com.fi', 'www-elevenpaths-com.fj',
                  'www-elevenpaths-com.fk', 'www-elevenpaths-com.fm',
                  'www-elevenpaths-com.fo', 'www-elevenpaths-com.fr',
                  'www-elevenpaths-com.ga', 'www-elevenpaths-com.gd',
                  'www-elevenpaths-com.ge', 'www-elevenpaths-com.gf',
                  'www-elevenpaths-com.gg', 'www-elevenpaths-com.gh',
                  'www-elevenpaths-com.gi', 'www-elevenpaths-com.gl',
                  'www-elevenpaths-com.gm', 'www-elevenpaths-com.gn',
                  'www-elevenpaths-com.gp', 'www-elevenpaths-com.gq',
                  'www-elevenpaths-com.gr', 'www-elevenpaths-com.gs',
                  'www-elevenpaths-com.gt', 'www-elevenpaths-com.gu']

        self.assertEqual(adictions(base, tlds, self.possibilities)[0:100],
                         result)

    def test_repetition(self):
        base = 'elevenpaths'
        tlds = 'com'
        result = ['eelevenpaths.com', 'eelevenpaths.com',
                  'eelevenpaths.com.ac', 'eelevenpaths.com.ad',
                  'eelevenpaths.com.ae', 'eelevenpaths.com.af',
                  'eelevenpaths.com.ag', 'eelevenpaths.com.ai',
                  'eelevenpaths.com.al', 'eelevenpaths.com.am',
                  'eelevenpaths.com.ao', 'eelevenpaths.com.aq',
                  'eelevenpaths.com.ar', 'eelevenpaths.com.as',
                  'eelevenpaths.com.at', 'eelevenpaths.com.au',
                  'eelevenpaths.com.aw', 'eelevenpaths.com.ax',
                  'eelevenpaths.com.az', 'eelevenpaths.com.ba',
                  'eelevenpaths.com.bb', 'eelevenpaths.com.bd',
                  'eelevenpaths.com.be', 'eelevenpaths.com.bf',
                  'eelevenpaths.com.bg', 'eelevenpaths.com.bh',
                  'eelevenpaths.com.bi', 'eelevenpaths.com.bj',
                  'eelevenpaths.com.bm', 'eelevenpaths.com.bn',
                  'eelevenpaths.com.bo', 'eelevenpaths.com.bq',
                  'eelevenpaths.com.br', 'eelevenpaths.com.bs',
                  'eelevenpaths.com.bt', 'eelevenpaths.com.bw',
                  'eelevenpaths.com.by', 'eelevenpaths.com.bz',
                  'eelevenpaths.com.ca', 'eelevenpaths.com.cc',
                  'eelevenpaths.com.cd', 'eelevenpaths.com.cf',
                  'eelevenpaths.com.cg', 'eelevenpaths.com.ch',
                  'eelevenpaths.com.ci', 'eelevenpaths.com.ck',
                  'eelevenpaths.com.cl', 'eelevenpaths.com.cm',
                  'eelevenpaths.com.cn', 'eelevenpaths.com.co',
                  'eelevenpaths.com.cr', 'eelevenpaths.com.cu',
                  'eelevenpaths.com.cv', 'eelevenpaths.com.cw',
                  'eelevenpaths.com.cx', 'eelevenpaths.com.cy',
                  'eelevenpaths.com.cz', 'eelevenpaths.com.de',
                  'eelevenpaths.com.dj', 'eelevenpaths.com.dk',
                  'eelevenpaths.com.dm', 'eelevenpaths.com.do',
                  'eelevenpaths.com.dz', 'eelevenpaths.com.ec',
                  'eelevenpaths.com.ee', 'eelevenpaths.com.eg',
                  'eelevenpaths.com.er', 'eelevenpaths.com.es',
                  'eelevenpaths.com.et', 'eelevenpaths.com.eu',
                  'eelevenpaths.com.fi', 'eelevenpaths.com.fj',
                  'eelevenpaths.com.fk', 'eelevenpaths.com.fm',
                  'eelevenpaths.com.fo', 'eelevenpaths.com.fr',
                  'eelevenpaths.com.ga', 'eelevenpaths.com.gd',
                  'eelevenpaths.com.ge', 'eelevenpaths.com.gf',
                  'eelevenpaths.com.gg', 'eelevenpaths.com.gh',
                  'eelevenpaths.com.gi', 'eelevenpaths.com.gl',
                  'eelevenpaths.com.gm', 'eelevenpaths.com.gn',
                  'eelevenpaths.com.gp', 'eelevenpaths.com.gq',
                  'eelevenpaths.com.gr', 'eelevenpaths.com.gs',
                  'eelevenpaths.com.gt', 'eelevenpaths.com.gu',
                  'eelevenpaths.com.gw', 'eelevenpaths.com.gy',
                  'eelevenpaths.com.hk', 'eelevenpaths.com.hm',
                  'eelevenpaths.com.hn', 'eelevenpaths.com.hr',
                  'eelevenpaths.com.ht', 'eelevenpaths.com.hu']

        self.assertEqual(repetition(base, tlds, self.possibilities)[0:100],
                         result)

    def test_keyboard(self):
        base = 'elevenpaths'
        tlds = 'com'
        result = ['4elevenpaths.com', 'e4levenpaths.com', '4levenpaths.com',
                  '4elevenpaths.com', 'e4levenpaths.com', '4levenpaths.com',
                  '4elevenpaths.com.ac', 'e4levenpaths.com.ac',
                  '4levenpaths.com.ac', '4elevenpaths.com.ad',
                  'e4levenpaths.com.ad', '4levenpaths.com.ad',
                  '4elevenpaths.com.ae', 'e4levenpaths.com.ae',
                  '4levenpaths.com.ae', '4elevenpaths.com.af',
                  'e4levenpaths.com.af', '4levenpaths.com.af',
                  '4elevenpaths.com.ag', 'e4levenpaths.com.ag',
                  '4levenpaths.com.ag', '4elevenpaths.com.ai',
                  'e4levenpaths.com.ai', '4levenpaths.com.ai',
                  '4elevenpaths.com.al', 'e4levenpaths.com.al',
                  '4levenpaths.com.al', '4elevenpaths.com.am',
                  'e4levenpaths.com.am', '4levenpaths.com.am',
                  '4elevenpaths.com.ao', 'e4levenpaths.com.ao',
                  '4levenpaths.com.ao', '4elevenpaths.com.aq',
                  'e4levenpaths.com.aq', '4levenpaths.com.aq',
                  '4elevenpaths.com.ar', 'e4levenpaths.com.ar',
                  '4levenpaths.com.ar', '4elevenpaths.com.as',
                  'e4levenpaths.com.as', '4levenpaths.com.as',
                  '4elevenpaths.com.at', 'e4levenpaths.com.at',
                  '4levenpaths.com.at', '4elevenpaths.com.au',
                  'e4levenpaths.com.au', '4levenpaths.com.au',
                  '4elevenpaths.com.aw', 'e4levenpaths.com.aw',
                  '4levenpaths.com.aw', '4elevenpaths.com.ax',
                  'e4levenpaths.com.ax', '4levenpaths.com.ax',
                  '4elevenpaths.com.az', 'e4levenpaths.com.az',
                  '4levenpaths.com.az', '4elevenpaths.com.ba',
                  'e4levenpaths.com.ba', '4levenpaths.com.ba',
                  '4elevenpaths.com.bb', 'e4levenpaths.com.bb',
                  '4levenpaths.com.bb', '4elevenpaths.com.bd',
                  'e4levenpaths.com.bd', '4levenpaths.com.bd',
                  '4elevenpaths.com.be', 'e4levenpaths.com.be',
                  '4levenpaths.com.be', '4elevenpaths.com.bf',
                  'e4levenpaths.com.bf', '4levenpaths.com.bf',
                  '4elevenpaths.com.bg', 'e4levenpaths.com.bg',
                  '4levenpaths.com.bg', '4elevenpaths.com.bh',
                  'e4levenpaths.com.bh', '4levenpaths.com.bh',
                  '4elevenpaths.com.bi', 'e4levenpaths.com.bi',
                  '4levenpaths.com.bi', '4elevenpaths.com.bj',
                  'e4levenpaths.com.bj', '4levenpaths.com.bj',
                  '4elevenpaths.com.bm', 'e4levenpaths.com.bm',
                  '4levenpaths.com.bm', '4elevenpaths.com.bn',
                  'e4levenpaths.com.bn', '4levenpaths.com.bn',
                  '4elevenpaths.com.bo', 'e4levenpaths.com.bo',
                  '4levenpaths.com.bo', '4elevenpaths.com.bq',
                  'e4levenpaths.com.bq', '4levenpaths.com.bq',
                  '4elevenpaths.com.br', 'e4levenpaths.com.br',
                  '4levenpaths.com.br', '4elevenpaths.com.bs']

        self.assertEqual(keyboard(base, tlds, self.possibilities)[0:100],
                         result)

    def test_replace(self):
        base = 'elevenpaths'
        tlds = 'com'
        result = ['clevenpaths.com', 'clevenpaths.com', 'clevenpaths.com.ac',
                  'clevenpaths.com.ad', 'clevenpaths.com.ae',
                  'clevenpaths.com.af', 'clevenpaths.com.ag',
                  'clevenpaths.com.ai', 'clevenpaths.com.al',
                  'clevenpaths.com.am', 'clevenpaths.com.ao',
                  'clevenpaths.com.aq', 'clevenpaths.com.ar',
                  'clevenpaths.com.as', 'clevenpaths.com.at',
                  'clevenpaths.com.au', 'clevenpaths.com.aw',
                  'clevenpaths.com.ax', 'clevenpaths.com.az',
                  'clevenpaths.com.ba', 'clevenpaths.com.bb',
                  'clevenpaths.com.bd', 'clevenpaths.com.be',
                  'clevenpaths.com.bf', 'clevenpaths.com.bg',
                  'clevenpaths.com.bh', 'clevenpaths.com.bi',
                  'clevenpaths.com.bj', 'clevenpaths.com.bm',
                  'clevenpaths.com.bn', 'clevenpaths.com.bo',
                  'clevenpaths.com.bq', 'clevenpaths.com.br',
                  'clevenpaths.com.bs', 'clevenpaths.com.bt',
                  'clevenpaths.com.bw', 'clevenpaths.com.by',
                  'clevenpaths.com.bz', 'clevenpaths.com.ca',
                  'clevenpaths.com.cc', 'clevenpaths.com.cd',
                  'clevenpaths.com.cf', 'clevenpaths.com.cg',
                  'clevenpaths.com.ch', 'clevenpaths.com.ci',
                  'clevenpaths.com.ck', 'clevenpaths.com.cl',
                  'clevenpaths.com.cm', 'clevenpaths.com.cn',
                  'clevenpaths.com.co', 'clevenpaths.com.cr',
                  'clevenpaths.com.cu', 'clevenpaths.com.cv',
                  'clevenpaths.com.cw', 'clevenpaths.com.cx',
                  'clevenpaths.com.cy', 'clevenpaths.com.cz',
                  'clevenpaths.com.de', 'clevenpaths.com.dj',
                  'clevenpaths.com.dk', 'clevenpaths.com.dm',
                  'clevenpaths.com.do', 'clevenpaths.com.dz',
                  'clevenpaths.com.ec', 'clevenpaths.com.ee',
                  'clevenpaths.com.eg', 'clevenpaths.com.er',
                  'clevenpaths.com.es', 'clevenpaths.com.et',
                  'clevenpaths.com.eu', 'clevenpaths.com.fi',
                  'clevenpaths.com.fj', 'clevenpaths.com.fk',
                  'clevenpaths.com.fm', 'clevenpaths.com.fo',
                  'clevenpaths.com.fr', 'clevenpaths.com.ga',
                  'clevenpaths.com.gd', 'clevenpaths.com.ge',
                  'clevenpaths.com.gf', 'clevenpaths.com.gg',
                  'clevenpaths.com.gh', 'clevenpaths.com.gi',
                  'clevenpaths.com.gl', 'clevenpaths.com.gm',
                  'clevenpaths.com.gn', 'clevenpaths.com.gp',
                  'clevenpaths.com.gq', 'clevenpaths.com.gr',
                  'clevenpaths.com.gs', 'clevenpaths.com.gt',
                  'clevenpaths.com.gu', 'clevenpaths.com.gw',
                  'clevenpaths.com.gy', 'clevenpaths.com.hk',
                  'clevenpaths.com.hm', 'clevenpaths.com.hn',
                  'clevenpaths.com.hr', 'clevenpaths.com.ht',
                  'clevenpaths.com.hu']

        self.assertEqual(replace(base, tlds, self.possibilities)[0:100],
                         result)

    def test_levenshtein(self):
        base = 'elevenpaths'
        tlds = 'com'
        result = ['alevenpaths.com', 'blevenpaths.com', 'clevenpaths.com',
                  'dlevenpaths.com', 'flevenpaths.com', 'glevenpaths.com',
                  'hlevenpaths.com', 'ilevenpaths.com', 'jlevenpaths.com',
                  'klevenpaths.com', 'llevenpaths.com', 'mlevenpaths.com',
                  'nlevenpaths.com', 'olevenpaths.com', 'plevenpaths.com',
                  'qlevenpaths.com', 'rlevenpaths.com', 'slevenpaths.com',
                  'tlevenpaths.com', 'ulevenpaths.com', 'vlevenpaths.com',
                  'wlevenpaths.com', 'xlevenpaths.com', 'ylevenpaths.com',
                  'zlevenpaths.com', 'eaevenpaths.com', 'ebevenpaths.com',
                  'ecevenpaths.com', 'edevenpaths.com', 'eeevenpaths.com',
                  'efevenpaths.com', 'egevenpaths.com', 'ehevenpaths.com',
                  'eievenpaths.com', 'ejevenpaths.com', 'ekevenpaths.com',
                  'emevenpaths.com', 'enevenpaths.com', 'eoevenpaths.com',
                  'epevenpaths.com', 'eqevenpaths.com', 'erevenpaths.com',
                  'esevenpaths.com', 'etevenpaths.com', 'euevenpaths.com',
                  'evevenpaths.com', 'ewevenpaths.com', 'exevenpaths.com',
                  'eyevenpaths.com', 'ezevenpaths.com', 'elavenpaths.com',
                  'elbvenpaths.com', 'elcvenpaths.com', 'eldvenpaths.com',
                  'elfvenpaths.com', 'elgvenpaths.com', 'elhvenpaths.com',
                  'elivenpaths.com', 'eljvenpaths.com', 'elkvenpaths.com',
                  'ellvenpaths.com', 'elmvenpaths.com', 'elnvenpaths.com',
                  'elovenpaths.com', 'elpvenpaths.com', 'elqvenpaths.com',
                  'elrvenpaths.com', 'elsvenpaths.com', 'eltvenpaths.com',
                  'eluvenpaths.com', 'elvvenpaths.com', 'elwvenpaths.com',
                  'elxvenpaths.com', 'elyvenpaths.com', 'elzvenpaths.com',
                  'eleaenpaths.com', 'elebenpaths.com', 'elecenpaths.com',
                  'eledenpaths.com', 'eleeenpaths.com', 'elefenpaths.com',
                  'elegenpaths.com', 'elehenpaths.com', 'eleienpaths.com',
                  'elejenpaths.com', 'elekenpaths.com', 'elelenpaths.com',
                  'elemenpaths.com', 'elenenpaths.com', 'eleoenpaths.com',
                  'elepenpaths.com', 'eleqenpaths.com', 'elerenpaths.com',
                  'elesenpaths.com', 'eletenpaths.com', 'eleuenpaths.com',
                  'elewenpaths.com', 'elexenpaths.com', 'eleyenpaths.com',
                  'elezenpaths.com']

        self.assertEqual(distance_levenshtein(base, tlds, self.possibilities)[0:100],
                         result)


if __name__ == "__main__":
    unittest.main()
