Beispiel #1
0
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'
Beispiel #2
0
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'
Beispiel #3
0
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
Beispiel #4
0
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'
Beispiel #5
0
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'
Beispiel #6
0
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"))
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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'
Beispiel #11
0
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