public function has( $key, $maxAge = 0.0 ) {
if ( !is_int( $key ) && !is_string( $key ) ) {
throw new UnexpectedValueException(
- __METHOD__ . ' called with invalid key. Must be string or integer.' );
+ __METHOD__ . ': invalid key; must be string or integer.' );
}
if ( !array_key_exists( $key, $this->cache ) ) {
$this->set( $key, [], $initRank );
}
+ if ( !is_int( $field ) && !is_string( $field ) ) {
+ throw new UnexpectedValueException(
+ __METHOD__ . ": invalid field for '$key'; must be string or integer." );
+ }
+
if ( !is_array( $this->cache[$key] ) ) {
throw new UnexpectedValueException( "The value of '$key' is not an array." );
}
*/
public function hasField( $key, $field, $maxAge = 0.0 ) {
$value = $this->get( $key );
+
+ if ( !is_int( $field ) && !is_string( $field ) ) {
+ throw new UnexpectedValueException(
+ __METHOD__ . ": invalid field for '$key'; must be string or integer." );
+ }
+
if ( !is_array( $value ) || !array_key_exists( $field, $value ) ) {
return false;
}
$this->assertEquals( 1983, $cache->getField( 'MPs', 'Edwina Currie' ) );
$this->assertEquals( 1970, $cache->getField( 'MPs', 'Neil Kinnock' ) );
}
+
+ /**
+ * @covers MapCacheLRU::has()
+ * @covers MapCacheLRU::get()
+ * @covers MapCacheLRU::set()
+ * @covers MapCacheLRU::hasField()
+ * @covers MapCacheLRU::getField()
+ * @covers MapCacheLRU::setField()
+ */
+ public function testInvalidKeys() {
+ $cache = MapCacheLRU::newFromArray( [], 3 );
+
+ try {
+ $cache->has( 3.4 );
+ $this->fail( "No exception" );
+ } catch ( UnexpectedValueException $e ) {
+ $this->assertRegExp( '/must be string or integer/', $e->getMessage() );
+ }
+ try {
+ $cache->get( false );
+ $this->fail( "No exception" );
+ } catch ( UnexpectedValueException $e ) {
+ $this->assertRegExp( '/must be string or integer/', $e->getMessage() );
+ }
+ try {
+ $cache->set( 3.4, 'x' );
+ $this->fail( "No exception" );
+ } catch ( UnexpectedValueException $e ) {
+ $this->assertRegExp( '/must be string or integer/', $e->getMessage() );
+ }
+
+ try {
+ $cache->hasField( 'x', 3.4 );
+ $this->fail( "No exception" );
+ } catch ( UnexpectedValueException $e ) {
+ $this->assertRegExp( '/must be string or integer/', $e->getMessage() );
+ }
+ try {
+ $cache->getField( 'x', false );
+ $this->fail( "No exception" );
+ } catch ( UnexpectedValueException $e ) {
+ $this->assertRegExp( '/must be string or integer/', $e->getMessage() );
+ }
+ try {
+ $cache->setField( 'x', 3.4, 'x' );
+ $this->fail( "No exception" );
+ } catch ( UnexpectedValueException $e ) {
+ $this->assertRegExp( '/must be string or integer/', $e->getMessage() );
+ }
+ }
}