public function testMapRedMessageResponse()
 {
     $request = new MapReduceRequest();
     $mapred = '{"inputs":"test", "query":[{"link":{"bucket":"test"}},{"map":{"language":"javascript","name":"Riak.mapValuesJson"}}]}';
     $rpbStream = $this->getMock('Riak\\Client\\Core\\Transport\\Proto\\ProtoStream', [], [], '', false);
     $callback = function ($subject) use($mapred) {
         $this->assertInstanceOf('Riak\\Client\\ProtoBuf\\RpbMapRedReq', $subject);
         $this->assertEquals($mapred, $subject->request);
         return true;
     };
     $request->request = $mapred;
     $this->client->expects($this->once())->method('emit')->willReturn($rpbStream)->with($this->callback($callback), $this->equalTo(RiakMessageCodes::MAPRED_REQ));
     $result = $this->instance->send($request);
     $this->assertInstanceOf('Riak\\Client\\Core\\Message\\MapReduce\\MapReduceResponse', $result);
     $this->assertInstanceOf('Riak\\Client\\Core\\Transport\\Proto\\MapReduce\\ProtoMapReduceResponseIterator', $result->iterator);
 }
 public function testIndexQueryMessageResponse()
 {
     $request = new IndexQueryRequest();
     $rpbStream = $this->getMock('Riak\\Client\\Core\\Transport\\Proto\\ProtoStream', [], [], '', false);
     $callback = function ($subject) {
         $this->assertInstanceOf('Riak\\Client\\ProtoBuf\\RpbIndexReq', $subject);
         $this->assertEquals(IndexQueryType::range, $subject->qtype);
         $this->assertEquals('bucket', $subject->bucket);
         $this->assertEquals('type', $subject->type);
         $this->assertEquals('regex', $subject->term_regex);
         $this->assertEquals('index', $subject->index);
         $this->assertEquals('arg1', $subject->range_min);
         $this->assertEquals('arg2', $subject->range_max);
         $this->assertEquals(999, $subject->max_results);
         $this->assertEquals(true, $subject->return_terms);
         $this->assertEquals(true, $subject->pagination_sort);
         $this->assertEquals('continuation', $subject->continuation);
         return true;
     };
     $request->qtype = 'range';
     $request->rangeMin = 'arg1';
     $request->rangeMax = 'arg2';
     $request->type = 'type';
     $request->index = 'index';
     $request->bucket = 'bucket';
     $request->termRegex = 'regex';
     $request->continuation = 'continuation';
     $request->maxResults = 999;
     $request->returnTerms = true;
     $request->paginationSort = true;
     $this->client->expects($this->once())->method('emit')->willReturn($rpbStream)->with($this->callback($callback), $this->equalTo(RiakMessageCodes::INDEX_REQ));
     $result = $this->instance->send($request);
     $this->assertInstanceOf('Riak\\Client\\Core\\Message\\Index\\IndexQueryResponse', $result);
     $this->assertInstanceOf('Riak\\Client\\Core\\Transport\\Proto\\Index\\ProtoIndexQueryResponseIterator', $result->iterator);
 }