getMockBuilder( DatabaseSqlite::class ) ->disableOriginalConstructor() ->setMethods( null ) ->getMock(); } public function provideBuildSubstring() { yield [ 'someField', 1, 2, 'SUBSTR(someField,1,2)' ]; yield [ 'someField', 1, null, 'SUBSTR(someField,1)' ]; } /** * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring * @dataProvider provideBuildSubstring */ public function testBuildSubstring( $input, $start, $length, $expected ) { $dbMock = $this->getMockDb(); $output = $dbMock->buildSubstring( $input, $start, $length ); $this->assertSame( $expected, $output ); } public function provideBuildSubstring_invalidParams() { yield [ -1, 1 ]; yield [ 1, -1 ]; yield [ 1, 'foo' ]; yield [ 'foo', 1 ]; yield [ null, 1 ]; yield [ 0, 1 ]; } /** * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring * @dataProvider provideBuildSubstring_invalidParams */ public function testBuildSubstring_invalidParams( $start, $length ) { $dbMock = $this->getMockDb(); $this->setExpectedException( InvalidArgumentException::class ); $dbMock->buildSubstring( 'foo', $start, $length ); } }