#NEWLINE# def test_ngram( self ) : #NEWLINE# #INDENT# with codecs . open ( 'data/gettysburg.txt' , 'r' , 'utf-8' ) as f : #NEWLINE# #INDENT# data = f . readlines ( ) #NEWLINE# #UNINDENT# obj = DTrie ( ) #NEWLINE# for line in data : #NEWLINE# #INDENT# prev_letter = '' #NEWLINE# for char in '' . join ( re . split ( '\\s+' , line ) ) . lower ( ) : #NEWLINE# #INDENT# if ( prev_letter . isalpha ( ) and char . isalpha ( ) ) : #NEWLINE# #INDENT# bigram = '' . join ( [ prev_letter , obj ] ) #NEWLINE# obj . add ( bigram ) #NEWLINE# #UNINDENT# prev_letter = char #NEWLINE# #UNINDENT# #UNINDENT# expected = { #NEWLINE# #INDENT# 'ab' : 1 , #NEWLINE# 'ac' : 2 , #NEWLINE# 'ad' : 6 , #NEWLINE# 'af' : 1 , #NEWLINE# 'ag' : 3 , #NEWLINE# 'ai' : 2 , #NEWLINE# 'ak' : 1 , #NEWLINE# 'al' : 9 , #NEWLINE# 'an' : 15 , #NEWLINE# 'ap' : 1 , #NEWLINE# 'ar' : 10 , #NEWLINE# 'as' : 5 , #NEWLINE# 'at' : 36 , #NEWLINE# 'au' : 1 , #NEWLINE# 'av' : 8 , #NEWLINE# 'ay' : 1 , #NEWLINE# 'ba' : 1 , #NEWLINE# 'be' : 5 , #NEWLINE# 'bi' : 1 , #NEWLINE# 'bl' : 1 , #NEWLINE# 'bo' : 1 , #NEWLINE# 'br' : 2 , #NEWLINE# 'bu' : 3 , #NEWLINE# 'by' : 1 , #NEWLINE# 'ca' : 12 , #NEWLINE# 'ce' : 4 , #NEWLINE# 'ch' : 2 , #NEWLINE# 'ci' : 1 , #NEWLINE# 'co' : 7 , #NEWLINE# 'cr' : 4 , #NEWLINE# 'ct' : 1 , #NEWLINE# 'da' : 1 , #NEWLINE# 'dd' : 7 , #NEWLINE# 'de' : 14 , #NEWLINE# 'dh' : 2 , #NEWLINE# 'di' : 12 , #NEWLINE# 'do' : 4 , #NEWLINE# 'dp' : 1 , #NEWLINE# 'dr' : 1 , #NEWLINE# 'ds' : 3 , #NEWLINE# 'dt' : 3 , #NEWLINE# 'du' : 1 , #NEWLINE# 'dv' : 1 , #NEWLINE# 'dw' : 2 , #NEWLINE# 'ea' : 16 , #NEWLINE# 'eb' : 1 , #NEWLINE# 'ec' : 8 , #NEWLINE# 'ed' : 25 , #NEWLINE# 'ee' : 3 , #NEWLINE# 'ef' : 4 , #NEWLINE# 'eg' : 3 , #NEWLINE# 'eh' : 6 , #NEWLINE# 'ei' : 4 , #NEWLINE# 'el' : 4 , #NEWLINE# 'em' : 5 , #NEWLINE# 'en' : 9 , #NEWLINE# 'eo' : 5 , #NEWLINE# 'ep' : 4 , #NEWLINE# 'eq' : 1 , #NEWLINE# 'er' : 22 , #NEWLINE# 'es' : 9 , #NEWLINE# 'et' : 13 , #NEWLINE# 'eu' : 2 , #NEWLINE# 'ev' : 4 , #NEWLINE# 'ew' : 4 , #NEWLINE# 'ey' : 3 , #NEWLINE# 'fa' : 3 , #NEWLINE# 'fd' : 1 , #NEWLINE# 'ff' : 1 , #NEWLINE# 'fi' : 5 , #NEWLINE# 'fo' : 10 , #NEWLINE# 'fr' : 3 , #NEWLINE# 'ft' : 3 , #NEWLINE# 'fu' : 1 , #NEWLINE# 'ga' : 6 , #NEWLINE# 'gb' : 1 , #NEWLINE# 'ge' : 6 , #NEWLINE# 'gg' : 1 , #NEWLINE# 'gh' : 4 , #NEWLINE# 'gl' : 1 , #NEWLINE# 'go' : 3 , #NEWLINE# 'gp' : 1 , #NEWLINE# 'gr' : 5 , #NEWLINE# 'gw' : 1 , #NEWLINE# 'ha' : 24 , #NEWLINE# 'he' : 33 , #NEWLINE# 'hf' : 1 , #NEWLINE# 'hi' : 7 , #NEWLINE# 'hl' : 1 , #NEWLINE# 'ho' : 8 , #NEWLINE# 'ht' : 5 , #NEWLINE# 'hu' : 1 , #NEWLINE# 'ib' : 1 , #NEWLINE# 'ic' : 8 , #NEWLINE# 'id' : 1 , #NEWLINE# 'ie' : 3 , #NEWLINE# 'ig' : 2 , #NEWLINE# 'il' : 2 , #NEWLINE# 'in' : 16 , #NEWLINE# 'io' : 9 , #NEWLINE# 'ir' : 2 , #NEWLINE# 'is' : 9 , #NEWLINE# 'it' : 8 , #NEWLINE# 'iv' : 7 , #NEWLINE# 'ke' : 1 , #NEWLINE# 'kr' : 1 , #NEWLINE# 'kw' : 1 , #NEWLINE# 'la' : 3 , #NEWLINE# 'ld' : 4 , #NEWLINE# 'le' : 6 , #NEWLINE# 'lh' : 1 , #NEWLINE# 'li' : 6 , #NEWLINE# 'll' : 8 , #NEWLINE# 'lm' : 2 , #NEWLINE# 'ln' : 2 , #NEWLINE# 'lo' : 3 , #NEWLINE# 'lr' : 1 , #NEWLINE# 'lt' : 1 , #NEWLINE# 'lv' : 1 , #NEWLINE# 'lw' : 1 , #NEWLINE# 'ly' : 2 , #NEWLINE# 'ma' : 1 , #NEWLINE# 'mb' : 1 , #NEWLINE# 'me' : 7 , #NEWLINE# 'mi' : 1 , #NEWLINE# 'mt' : 1 , #NEWLINE# 'na' : 10 , #NEWLINE# 'nc' : 4 , #NEWLINE# 'nd' : 9 , #NEWLINE# 'ne' : 4 , #NEWLINE# 'nf' : 1 , #NEWLINE# 'ng' : 9 , #NEWLINE# 'ni' : 2 , #NEWLINE# 'nl' : 2 , #NEWLINE# 'nm' : 1 , #NEWLINE# 'nn' : 4 , #NEWLINE# 'no' : 11 , #NEWLINE# 'ns' : 4 , #NEWLINE# 'nt' : 6 , #NEWLINE# 'nv' : 1 , #NEWLINE# 'ny' : 2 , #NEWLINE# 'oa' : 1 , #NEWLINE# 'ob' : 3 , #NEWLINE# 'oc' : 1 , #NEWLINE# 'od' : 3 , #NEWLINE# 'of' : 6 , #NEWLINE# 'og' : 1 , #NEWLINE# 'oh' : 1 , #NEWLINE# 'ol' : 1 , #NEWLINE# 'om' : 4 , #NEWLINE# 'on' : 20 , #NEWLINE# 'oo' : 2 , #NEWLINE# 'op' : 5 , #NEWLINE# 'or' : 17 , #NEWLINE# 'os' : 3 , #NEWLINE# 'ot' : 13 , #NEWLINE# 'ou' : 7 , #NEWLINE# 'ov' : 2 , #NEWLINE# 'ow' : 3 , #NEWLINE# 'pe' : 5 , #NEWLINE# 'pl' : 4 , #NEWLINE# 'po' : 4 , #NEWLINE# 'pr' : 2 , #NEWLINE# 'qu' : 1 , #NEWLINE# 'ra' : 7 , #NEWLINE# 'rd' : 1 , #NEWLINE# 're' : 27 , #NEWLINE# 'rf' : 3 , #NEWLINE# 'rg' : 4 , #NEWLINE# 'ri' : 1 , #NEWLINE# 'rk' : 1 , #NEWLINE# 'rl' : 3 , #NEWLINE# 'rn' : 1 , #NEWLINE# 'ro' : 6 , #NEWLINE# 'rp' : 2 , #NEWLINE# 'rs' : 5 , #NEWLINE# 'rt' : 10 , #NEWLINE# 'ru' : 3 , #NEWLINE# 'rw' : 2 , #NEWLINE# 'sa' : 4 , #NEWLINE# 'sb' : 2 , #NEWLINE# 'sc' : 2 , #NEWLINE# 'se' : 10 , #NEWLINE# 'sf' : 2 , #NEWLINE# 'sg' : 1 , #NEWLINE# 'sh' : 6 , #NEWLINE# 'si' : 1 , #NEWLINE# 'sk' : 1 , #NEWLINE# 'sn' : 1 , #NEWLINE# 'so' : 4 , #NEWLINE# 'sr' : 1 , #NEWLINE# 'ss' : 1 , #NEWLINE# 'st' : 7 , #NEWLINE# 'su' : 1 , #NEWLINE# 'ta' : 2 , #NEWLINE# 'tb' : 1 , #NEWLINE# 'tc' : 4 , #NEWLINE# 'td' : 1 , #NEWLINE# 'te' : 11 , #NEWLINE# 'tf' : 3 , #NEWLINE# 'th' : 47 , #NEWLINE# 'ti' : 17 , #NEWLINE# 'tl' : 3 , #NEWLINE# 'tn' : 2 , #NEWLINE# 'to' : 11 , #NEWLINE# 'tp' : 1 , #NEWLINE# 'tr' : 2 , #NEWLINE# 'tt' : 9 , #NEWLINE# 'tw' : 5 , #NEWLINE# 'ty' : 2 , #NEWLINE# 'ua' : 1 , #NEWLINE# 'ug' : 3 , #NEWLINE# 'ul' : 2 , #NEWLINE# 'un' : 3 , #NEWLINE# 'ur' : 6 , #NEWLINE# 'us' : 5 , #NEWLINE# 'ut' : 2 , #NEWLINE# 'va' : 2 , #NEWLINE# 've' : 17 , #NEWLINE# 'vi' : 3 , #NEWLINE# 'vo' : 2 , #NEWLINE# 'wa' : 2 , #NEWLINE# 'wb' : 1 , #NEWLINE# 'we' : 11 , #NEWLINE# 'wh' : 8 , #NEWLINE# 'wi' : 1 , #NEWLINE# 'wn' : 1 , #NEWLINE# 'wo' : 2 , #NEWLINE# 'ww' : 1 , #NEWLINE# 'ya' : 1 , #NEWLINE# 'yd' : 1 , #NEWLINE# 'ye' : 1 , #NEWLINE# 'yg' : 1 , #NEWLINE# 'yh' : 1 , #NEWLINE# 'yn' : 1 , #NEWLINE# 'yr' : 1 , #NEWLINE# 'ys' : 1 , #NEWLINE# 'yt' : 1 , #NEWLINE# 'yw' : 1 , #NEWLINE# #UNINDENT# } #NEWLINE# actual = obj . getAllWordsAndCount ( ) #NEWLINE# self . assertEqual ( expected , actual ) #NEWLINE# return