add test for multisearch
This commit is contained in:
@@ -1403,6 +1403,59 @@ class BibtexbrowserTest extends PHPUnit_Framework_TestCase {
|
||||
$this->assertFalse($entry1->hasPhrase('')); // Empty phrase should not match
|
||||
}
|
||||
|
||||
function testMultiSearchWithSpecialChars() {
|
||||
// Create test entries with C/C++ related content
|
||||
$bibtex = "@article{cpp2023,
|
||||
title={Advances in C/C++ Programming Language},
|
||||
author={Jane Programmer},
|
||||
journal={Journal of Programming Languages},
|
||||
year=2023,
|
||||
keywords={C/C++, programming languages, compilers}
|
||||
}
|
||||
@inproceedings{java2023,
|
||||
title={Java vs Python: Performance Comparison},
|
||||
author={John Coder},
|
||||
booktitle={International Conference on Software Engineering},
|
||||
year=2023,
|
||||
keywords={Java, Python, performance}
|
||||
}";
|
||||
|
||||
$test_data = fopen('php://memory','x+');
|
||||
fwrite($test_data, $bibtex);
|
||||
fseek($test_data, 0);
|
||||
$db = new BibDataBase();
|
||||
$db->update_internal("inline", $test_data);
|
||||
|
||||
// Test searching for C/C++ (which contains special characters / and +)
|
||||
$q = array(Q_SEARCH => 'C/C++');
|
||||
$results = $db->multisearch($q);
|
||||
|
||||
// Should match only the first entry
|
||||
$this->assertEquals(1, count($results));
|
||||
$this->assertEquals('Advances in C/C++ Programming Language', $results[0]->getTitle());
|
||||
|
||||
// Test searching with escaped slashes
|
||||
$q = array(Q_SEARCH => 'C/C\+\+');
|
||||
$results = $db->multisearch($q);
|
||||
$this->assertEquals(1, count($results));
|
||||
|
||||
// Test with partial match
|
||||
$q = array(Q_SEARCH => 'C/C');
|
||||
$results = $db->multisearch($q);
|
||||
$this->assertEquals(1, count($results));
|
||||
|
||||
// Test with keywords field specifically
|
||||
$q = array(Q_TAG => 'C/C++');
|
||||
$results = $db->multisearch($q);
|
||||
$this->assertEquals(1, count($results));
|
||||
|
||||
// Test searching for something that doesn't exist
|
||||
$q = array(Q_SEARCH => 'Rust');
|
||||
$results = $db->multisearch($q);
|
||||
$this->assertEquals(0, count($results));
|
||||
}
|
||||
|
||||
|
||||
} // end class
|
||||
|
||||
// Test implementation that records events
|
||||
|
||||
Reference in New Issue
Block a user