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
|
$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
|
} // end class
|
||||||
|
|
||||||
// Test implementation that records events
|
// Test implementation that records events
|
||||||
|
|||||||
Reference in New Issue
Block a user