public function testSetDataTable()
 {
     $request = new Request();
     $data = new DataTable();
     $data->addColumn(new ColumnDescription('textfield', ValueType::STRING));
     $data->addColumn(new ColumnDescription('intfield', ValueType::NUMBER));
     $response = new Response($request);
     $response->setDataTable($data);
     $getRequest = $response->getRequest();
     $getDataTable = $response->getDataTable();
     $this->assertEquals($request, $getRequest, "Request must match");
     $this->assertEquals($data, $getDataTable, "DataTable must match");
 }
 public function testRequestOutputTypeJsonpAffectsResponse()
 {
     $request = new Request(array(Request::DATASOURCE_REQUEST_PARAMETER => RequestParameters::OUTPUT_TYPE_PARAMETER . ':' . OutputType::JSONP));
     $response = new Response($request);
     $response->setDataTable($this->dataTable);
     $renderer = new JsonRenderer();
     $json_p = $renderer->render($response);
     $prefix = "google.visualization.Query.setResponse(";
     $suffix = ");";
     $this->assertSame($prefix, substr($json_p, 0, strlen($prefix)), "JSONP output must be prefixed with 'callbackFn('");
     $this->assertSame($suffix, substr($json_p, -1 * strlen($suffix)), "JSONP output must be suffixed with ');'");
     $newDateIndex = strpos($json_p, '"v":new Date(');
     // JSONP style date
     $stringDateIndex = strpos($json_p, '"v":"Date(');
     // JSON style date
     $this->assertTrue($newDateIndex > 0, "Expect JSONP date format to be present");
     $this->assertFalse($stringDateIndex, "Expect JSON date format to NOT be found");
 }
 /**
  * @param Response &$response [required] [IN] [OUT]
  */
 protected function executeTrue(Response &$response)
 {
     $request = $response->getRequest();
     // Verify that the user is granted access to the data
     if ($this->isRestrictedAccessMode()) {
         $this->verifyAccessAllowed($request->getOutputType());
     }
     // Populate the data
     $data =& $this->getDataTable($request);
     // Apply query, if any
     $query = Query::constructFromString($request->getQuery());
     if (!$query->isEmpty()) {
         $data =& QueryEngine::execute($query, $data);
     }
     $response->setDataTable($data);
 }