def test_inv_it_0_4(): """Test Indexing Techniques 0-4 """ db = join(FIXTURES_DIR, 'cds.mst') mf = MasterFile(db) #Remove old indexes files for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join(FIXTURES_DIR, 'cds.%s' % ext) if exists(fname): remove(fname) mf.invertdb(fst=join(FIXTURES_DIR, 'it_0-4.fst'), callback=invcb) post = mf.search('ABEYWICKRAMA, B.A.').next() assert post.mfn == 60, 'Failed IT 0' post = mf.search('BOSIAN, G.').next() assert post.mfn == 2, 'Failed IT 0' post = mf.search( 'CENTER FOR NORTHERN EDUCATIONAL RESEARCH, UNIVERSITY OF ALAS').next() assert post.mfn == 89, 'Failed IT 1' post = mf.search('HUMANITIES PRESS').next() assert post.mfn == 143, 'Failed IT 1' post = mf.search('AGRICULTURE').next() assert post.mfn == 17, 'Failed IT 2/3' post = mf.search("CHILDREN'S BOOKS").next() assert post.mfn == 114, 'Failed IT 2/3' post = mf.search('EXPERIMENTAL').next() assert post.mfn == 130, 'Failed IT 4' post = mf.search("MONOLITHS").next() assert post.mfn == 20, 'Failed IT 4'
def test_inv_it_5_8(): """Test Indexing Techniques 5-8""" db = join(FIXTURES_DIR, 'cds.mst') mf = MasterFile(db) #Remove old indexes files for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join(FIXTURES_DIR, 'cds.%s' % ext) if exists(fname): remove(fname) mf.invertdb(fst=join(FIXTURES_DIR, 'it_5-8.fst'), callback=invcb) post = mf.search('AU_CHAPMAN, VALENTINE J.').next() assert post.mfn == 62, 'Failed IT 0 (Prefix)' post = mf.search('AU_HOLLERWOGER, F.').next() assert post.mfn == 47, 'Failed IT 0 (Prefix)' post = mf.search( 'TECHNIQUE TEST 5: CENTER FOR THE ADVANCED STUDY OF EDUCATION').next() assert post.mfn == 113, 'Failed IT 5' post = mf.search('TECHNIQUE TEST 5: LANSING, MICH.').next() assert post.mfn == 138, 'Failed IT 5' post = mf.search('TECHNIQUE TEST 6: BRACKISH WATER').next() assert post.mfn == 48, 'Failed IT 6/7' post = mf.search('TECHNIQUE TEST 6: INFORMATION/LIBRARY FINANCING').next() assert post.mfn == 136, 'Failed IT 6/7' post = mf.search('TECHNIQUE TEST 8: DOCUMENTATION').next() assert post.mfn == 105, 'Failed IT 8' post = mf.search('TECHNIQUE TEST 8: YUGOSLAVIA').next() assert post.mfn == 90, 'Failed IT 8'
def test_update_flags(): """Test update flags (xrf and master files)""" xref_fd = join('fixtures', 'testflag.xrf') db_fd = join('fixtures', 'testflag.mst') if exists(xref_fd): remove(xref_fd) if exists(db_fd): remove(db_fd) dbtest = MasterFile(db_fd) rec = MasterRecord() rec.update(test_data) rec.save(dbtest) xrf_rec = dbtest.xrf[1] assert xrf_rec.status == 'active' assert xrf_rec.status == 'active' assert xrf_rec.new_flag == True assert xrf_rec.modified_flag == False rec = dbtest[1] rec[27] = 'Test new field' rec.save(dbtest) assert xrf_rec.new_flag == False assert xrf_rec.modified_flag == True dbtest.invertdb(expr='70 0 MHU,(V70/)') assert xrf_rec.new_flag == False assert xrf_rec.modified_flag == False
def test_inverting_MAIL(): """Test inverting MAIL database """ db = join('fixtures', 'MAIL.mst') mf = MasterFile(db) #Remove old indexes files for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join('fixtures', 'MAIL.%s' % ext) if exists(fname): remove(fname) mf.invertdb(callback=invcb) post = mf.search('AR1.1').next() assert post.mfn == 63, 'Failed inverting MAIL database'
def test_inverting_ntitle(): """Test inverting ntitle database """ db = join('fixtures', 'ntitle.mst') mf = MasterFile(db) #Remove old indexes files for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join('fixtures', 'ntitle.%s' % ext) if exists(fname): remove(fname) mf.invertdb(callback=invcb) post = mf.search('0000-0019').next() assert post.mfn == 12222, 'Failed inverting ntitle database'
def test_l(): """Test l command""" mf = MasterFile(join("..", "sample", "cds.mst")) #Remove old indexes files for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join("..", "sample", "cds" + ext) if exists(fname): remove(fname) mf.invertdb('mdu,v26') record = mf[2] expr_list = (("l('1966.')", "28"), ("l('PARIS, UNESCO , 1966.')", "28"), ("l('15 JUNE 1976.')", "126"))
def test_update(): """Create a record, modify it and save it and check previous""" clean_start() mf = MasterFile(testmst) r = MasterRecord() r.update(test_data) r.save(mf) mf.invertdb(expr='70 0 MHU,(V70/)') r[90] = "This is a new field" r.save(mf) prev = mf.previous(r) assert prev is not None assert len(prev) + 1 == len(r)
def test_restore_previous(): """Create a record, modify it, save it and restore previous version""" clean_start() mf = MasterFile(testmst) r = MasterRecord() r.update(test_data) r.save(mf) mf.invertdb(expr='70 0 MHU,(V70/)') r[90] = "This is a new field" r.save(mf) prev = mf.previous(r) prev.save(mf) old_r = mf[1] try: old_r[90] assert False, "Field with tag 90 should not exist anymore." except KeyError: pass assert r.status == ACTIVE assert len(old_r) == len(prev)
def test_ref_l_trivial_syntax(): """Test ref and lookup trivial syntax""" mf = MasterFile(join("fixtures", "MAIL.mst")) for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join("fixtures", "MAIL" + ext) if exists(fname): remove(fname) mf.invertdb() record = mf[1] expr_list = ( ("ref->MAIL(mfn,v690)", u'BIREME'), ("ref->MAIL(2,v840)", u'3061-7455 / 3061-7266'), ("l->MAIL('BR1323.1')", u'11'), ("ref->MAIL(l->MAIL('BR1323.1'),v820)", u'Porto Alegre'), ("ref->MAIL(l->MAIL(v805),v840)", u'5576-9835 / 5576-9846/ 5576-9800 / 5576-9839 (Scad) / 5576-9832 (Lilacs) / \n5576-9852 (Secs) / 5576-9854 (Online)' ), ) run_list(expr_list, record)
def test_inv_it_1000_1008(): """Test Indexing Techniques 1000-1008""" db = join(FIXTURES_DIR, 'cds.mst') mf = MasterFile(db) #Remove old indexes files for ext in ('.idx', '.idx.index', '.idx.lock', '.idx.old', '.idx.tmp'): fname = join(FIXTURES_DIR, 'cds.%s' % ext) if exists(fname): remove(fname) mf.invertdb(fst=join(FIXTURES_DIR, 'it_1000-1008.fst'), callback=invcb) post = mf.search('MUELLER-DOMBOIS, D.').next() assert post.mfn == 12, 'Failed IT 1000' post = mf.search('OHYA, MASAHIKO').next() assert post.mfn == 111, 'Failed IT 1000' post = mf.search('SIMMONS, MELVIN K.').next() assert post.mfn == 16, 'Failed IT 1000' post = mf.search('A. PEDONE').next() assert post.mfn == 8, 'Failed IT 1001' post = mf.search('BRUXELLES').next() assert post.mfn == 36, 'Failed IT 1001' post = mf.search('UNIVERSITY OF ZAMBIA').next() assert post.mfn == 29, 'Failed IT 1001' post = mf.search('DEMOCRATIC KAMPUCHEA').next() assert post.mfn == 111, 'Failed IT 1002' post = mf.search('TAIWAN').next() assert post.mfn == 111, 'Failed IT 1002' post = mf.search('ZAMBIA').next() assert post.mfn == 29, 'Failed IT 1002' post = mf.search('ARMAMENTS').next() assert post.mfn == 8, 'Failed IT 1004' post = mf.search('BEHAVIOUR').next() assert post.mfn == 20, 'Failed IT 1004' post = mf.search('COMPARATIVE').next() assert post.mfn == 111, 'Failed IT 1004' post = mf.search('TECHNIQUE TEST 5: 25 JUNE 1976').next() assert post.mfn == 28, 'Failed IT 1005' post = mf.search( 'TECHNIQUE TEST 5: CENTER FOR RESEARCH ON UTILIZATION OF SCIE').next() assert post.mfn == 16, 'Failed IT 1005' post = mf.search('TECHNIQUE TEST 5: GENEVE').next() assert post.mfn == 11, 'Failed IT 1005' post = mf.search('TECHNIQUE TEST 6: DEMOCRATIC KAMPUCHEA').next() assert post.mfn == 111, 'Failed IT 1006' post = mf.search('TECHNIQUE TEST 6: ECONOMY').next() assert post.mfn == 22, 'Failed IT 1006' post = mf.search('TECHNIQUE TEST 6: EDUCATIONAL HISTORY').next() assert post.mfn == 11, 'Failed IT 1006' post = mf.search('TECHNIQUE TEST 8: ALLUVIONS').next() assert post.mfn == 111, 'Failed IT 1008' post = mf.search('TECHNIQUE TEST 8: ANNOTATED').next() assert post.mfn == 17, 'Failed IT 1008' post = mf.search('TECHNIQUE TEST 8: BROADCASTING').next() assert post.mfn == 29, 'Failed IT 1008'
def test_update_flagsFFI(): """Test update flags (xrf and master files - FFI)""" xref_fd = join('fixtures', 'testflag.xrf') db_fd = join('fixtures', 'testflag.mst') ini_fd = join('fixtures', 'testflag.ini') if exists(xref_fd): remove(xref_fd) if exists(db_fd): remove(db_fd) f = open(ini_fd, "w") f.write( "[Engine]\nINPUT_ENCODING = cp850\nOUTPUT_ENCODING = utf-8\n[IsisDB]\nLEADER_XL=True" ) f.write("\nDIR_MASK = iii\nLEADER_MASK_XL = iiHHiiHH") f.close() dbtest = MasterFile(db_fd) rec = MasterRecord() rec.update(test_data) rec.save(dbtest) rec = dbtest[1] xrf_rec = dbtest.xrf[1] assert xrf_rec.status == 'active' assert xrf_rec.new_flag == True assert xrf_rec.modified_flag == False assert rec.mfbwb == 0 assert rec.mfbwp == 0 rec = dbtest[1] rec[27] = 'Test new field' rec.save(dbtest) rec = dbtest[1] xrf_rec = dbtest.xrf[1] assert xrf_rec.new_flag == True assert xrf_rec.modified_flag == False assert rec.mfbwb == 0 assert rec.mfbwp == 0 dbtest.invertdb(expr='70 0 MHU,(V70/)') rec = dbtest[1] xrf_rec = dbtest.xrf[1] assert xrf_rec.new_flag == False assert xrf_rec.modified_flag == False assert rec.mfbwb == 0 assert rec.mfbwp == 0 rec[100] = 'new field 100' rec.save(dbtest) rec = dbtest[1] xrf_rec = dbtest.xrf[1] assert xrf_rec.new_flag == False assert xrf_rec.modified_flag == True assert rec.mfbwb > 0 assert rec.mfbwp > 0 dbtest.invertdb(expr='70 0 MHU,(V70/)') rec = dbtest[1] xrf_rec = dbtest.xrf[1] assert xrf_rec.new_flag == False assert xrf_rec.modified_flag == False assert rec.mfbwb == 0 assert rec.mfbwp == 0