namespace MediaWiki\Tests\Storage;
+use InvalidArgumentException;
use Language;
use MediaWiki\MediaWikiServices;
use MediaWiki\Storage\SqlBlobStore;
[ 'gzip', 'object' ],
'2®Àþ2',
];
+ yield 'T184749 (windows-1252 encoding), string in string out' => [
+ 'windows-1252',
+ iconv( 'utf-8', 'windows-1252', "sammansättningar" ),
+ [],
+ 'sammansättningar',
+ ];
+ yield 'T184749 (windows-1252 encoding), string in string out with gzip' => [
+ 'windows-1252',
+ gzdeflate( iconv( 'utf-8', 'windows-1252', "sammansättningar" ) ),
+ [ 'gzip' ],
+ 'sammansättningar',
+ ];
}
/**
public function provideBlobs() {
yield [ '' ];
yield [ 'someText' ];
+ yield [ "sammansättningar" ];
}
/**
$this->assertSame( $blob, $store->getBlob( $address ) );
}
+ /**
+ * @dataProvider provideBlobs
+ * @covers \MediaWiki\Storage\SqlBlobStore::storeBlob
+ * @covers \MediaWiki\Storage\SqlBlobStore::getBlob
+ */
+ public function testSimpleStoreGetBlobSimpleRoundtripWindowsLegacyEncoding( $blob ) {
+ $store = $this->getBlobStore( 'windows-1252' );
+ $address = $store->storeBlob( $blob );
+ $this->assertSame( $blob, $store->getBlob( $address ) );
+ }
+
+ /**
+ * @dataProvider provideBlobs
+ * @covers \MediaWiki\Storage\SqlBlobStore::storeBlob
+ * @covers \MediaWiki\Storage\SqlBlobStore::getBlob
+ */
+ public function testSimpleStoreGetBlobSimpleRoundtripWindowsLegacyEncodingGzip( $blob ) {
+ $store = $this->getBlobStore( 'windows-1252', true );
+ $address = $store->storeBlob( $blob );
+ $this->assertSame( $blob, $store->getBlob( $address ) );
+ }
+
+ public function provideGetTextIdFromAddress() {
+ yield [ 'tt:17', 17 ];
+ yield [ 'xy:17', null ];
+ yield [ 'xy:xyzzy', null ];
+ }
+
+ /**
+ * @dataProvider provideGetTextIdFromAddress
+ */
+ public function testGetTextIdFromAddress( $address, $textId ) {
+ $store = $this->getBlobStore();
+ $this->assertSame( $textId, $store->getTextIdFromAddress( $address ) );
+ }
+
+ public function provideGetTextIdFromAddressInvalidArgumentException() {
+ yield [ 'tt:-17' ];
+ yield [ 'tt:xy' ];
+ yield [ 'tt:0' ];
+ yield [ 'tt:' ];
+ yield [ 'xy' ];
+ yield [ '' ];
+ }
+
+ /**
+ * @dataProvider provideGetTextIdFromAddressInvalidArgumentException
+ */
+ public function testGetTextIdFromAddressInvalidArgumentException( $address ) {
+ $this->setExpectedException( InvalidArgumentException::class );
+ $store = $this->getBlobStore();
+ $store->getTextIdFromAddress( $address );
+ }
+
+ public function testMakeAddressFromTextId() {
+ $this->assertSame( 'tt:17', SqlBlobStore::makeAddressFromTextId( 17 ) );
+ }
+
}