PageRenderTime 56ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/OData Producer for PHP/Tests/IDSQP2/IDSQP2_WordPress/IDSQP2Test_WordPressMySQL.php

#
PHP | 853 lines | 683 code | 45 blank | 125 comment | 1 complexity | 6013f853a4b17329ad4b1964723d1acf MD5 | raw file
  1. <?php
  2. use ODataProducer\UriProcessor\QueryProcessor\ExpandProjectionParser\ProjectionNode;
  3. use ODataProducer\UriProcessor\QueryProcessor\ExpandProjectionParser\ExpandedProjectionNode;
  4. use ODataProducer\UriProcessor\QueryProcessor\ExpandProjectionParser\RootProjectionNode;
  5. use ODataProducer\UriProcessor\QueryProcessor\AnonymousFunction;
  6. use ODataProducer\UriProcessor\QueryProcessor\OrderByParser\OrderBySubPathSegment;
  7. use ODataProducer\UriProcessor\QueryProcessor\OrderByParser\OrderByPathSegment;
  8. use ODataProducer\UriProcessor\QueryProcessor\SkipTokenParser\InternalSkipTokenInfo;
  9. use ODataProducer\UriProcessor\QueryProcessor\SkipTokenParser\SkipTokenInfo;
  10. use ODataProducer\UriProcessor\QueryProcessor\ExpressionParser\InternalFilterInfo;
  11. use ODataProducer\UriProcessor\QueryProcessor\OrderByParser\InternalOrderByInfo;
  12. use ODataProducer\UriProcessor\RequestCountOption;
  13. use ODataProducer\Configuration\DataServiceProtocolVersion;
  14. use ODataProducer\UriProcessor\ResourcePathProcessor\SegmentParser\RequestTargetKind;
  15. use ODataProducer\UriProcessor\ResourcePathProcessor\SegmentParser\RequestTargetSource;
  16. use ODataProducer\Providers\Metadata\Type\Int32;
  17. use ODataProducer\Providers\Metadata\Type\DateTime;
  18. use ODataProducer\Common\Url;
  19. use ODataProducer\Common\Version;
  20. use ODataProducer\Common\ODataException;
  21. use ODataProducer\Common\NotImplementedException;
  22. require_once 'PHPUnit\Framework\Assert.php';
  23. require_once 'PHPUnit\Framework\test.php';
  24. require_once 'PHPUnit\Framework\SelfDescribing.php';
  25. require_once 'PHPUnit\Framework\testCase.php';
  26. require_once 'PHPUnit\Framework\testSuite.php';
  27. require_once 'ODataProducer\Common\ClassAutoLoader.php';
  28. ODataProducer\Common\ClassAutoLoader::register();
  29. require_once (dirname(__FILE__) . "\.\..\..\Resources\WordPress2\WordPressMetadata.php");
  30. require_once (dirname(__FILE__) . "\.\..\..\Resources\WordPress2\WordPressDataService.php");
  31. require_once (dirname(__FILE__) . "\.\..\..\Resources\WordPress2\DataServiceHost5.php");
  32. class testIDSQP2_WordPress extends PHPUnit_Framework_testCase
  33. {
  34. protected function setUp()
  35. {
  36. }
  37. /**
  38. * test the generated string comaprsion expression in sql server
  39. */
  40. function testStringCompareMySQL()
  41. {
  42. $host = null;
  43. try {
  44. $exceptionThrown = false;
  45. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  46. $resourcePath = 'Posts';
  47. $requestUri = $serviceUri . $resourcePath;
  48. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  49. 'AbsoluteRequestUri' => new Url($requestUri),
  50. 'QueryString' => '$filter=Title eq \'OData PHP Producer\'',
  51. 'DataServiceVersion' => new Version(3, 0),
  52. 'MaxDataServiceVersion' => new Version(3, 0));
  53. $host = new DataServiceHost5($hostInfo);
  54. $dataService = new WordPressDataService();
  55. $dataService->setHost($host);
  56. $uriProcessor = $dataService->handleRequest();
  57. $check = !is_null($uriProcessor);
  58. $this->assertTrue($check);
  59. $requestDescription = $uriProcessor->getRequestDescription();
  60. $check = !is_null($requestDescription);
  61. $this->assertTrue($check);
  62. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  63. $check = !is_null($internalFilterInfo);
  64. $this->assertTrue($check);
  65. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  66. // print_r("'" . $mysqlexpression . "'");
  67. $this->AssertEquals("(STRCMP(post_title, 'OData PHP Producer') = 0)", $mysqlexpression);
  68. $host->getWebOperationContext()->resetWebContextInternal();
  69. } catch (\Exception $exception) {
  70. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  71. $host->getWebOperationContext()->resetWebContextInternal();
  72. }
  73. }
  74. /**
  75. * test the generated function-call expression in sql server
  76. */
  77. function testFunctionCallMySQL()
  78. {
  79. try {
  80. $exceptionThrown = false;
  81. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  82. $resourcePath = 'Posts';
  83. $requestUri = $serviceUri . $resourcePath;
  84. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  85. 'AbsoluteRequestUri' => new Url($requestUri),
  86. 'QueryString' => '$filter=replace(Title, \'PHP\', \'Java\') eq \'OData Java Producer\'',
  87. 'DataServiceVersion' => new Version(3, 0),
  88. 'MaxDataServiceVersion' => new Version(3, 0));
  89. $host = new DataServiceHost5($hostInfo);
  90. $dataService = new WordPressDataService();
  91. $dataService->setHost($host);
  92. $uriProcessor = $dataService->handleRequest();
  93. $check = !is_null($uriProcessor);
  94. $this->assertTrue($check);
  95. $requestDescription = $uriProcessor->getRequestDescription();
  96. $check = !is_null($requestDescription);
  97. $this->assertTrue($check);
  98. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  99. $check = !is_null($internalFilterInfo);
  100. $this->assertTrue($check);
  101. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  102. // print_r("'" . $mysqlexpression . "'");
  103. $this->AssertEquals("(STRCMP(REPLACE(post_title,'PHP','Java'), 'OData Java Producer') = 0)", $mysqlexpression);
  104. $host->getWebOperationContext()->resetWebContextInternal();
  105. } catch (\Exception $exception) {
  106. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  107. $host->getWebOperationContext()->resetWebContextInternal();
  108. }
  109. }
  110. /**
  111. * test the generated expression for nullability check in sql server
  112. */
  113. function testNullabilityCheckMySQL()
  114. {
  115. try {
  116. $exceptionThrown = false;
  117. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  118. $resourcePath = 'Posts';
  119. $requestUri = $serviceUri . $resourcePath;
  120. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  121. 'AbsoluteRequestUri' => new Url($requestUri),
  122. 'QueryString' => '$filter=PostID eq null',
  123. 'DataServiceVersion' => new Version(3, 0),
  124. 'MaxDataServiceVersion' => new Version(3, 0));
  125. $host = new DataServiceHost5($hostInfo);
  126. $dataService = new WordPressDataService();
  127. $dataService->setHost($host);
  128. $uriProcessor = $dataService->handleRequest();
  129. $check = !is_null($uriProcessor);
  130. $this->assertTrue($check);
  131. $requestDescription = $uriProcessor->getRequestDescription();
  132. $check = !is_null($requestDescription);
  133. $this->assertTrue($check);
  134. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  135. $check = !is_null($internalFilterInfo);
  136. $this->assertTrue($check);
  137. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  138. // print_r("'" . $mysqlexpression . "'");
  139. $this->AssertEquals("(ID = NULL)", $mysqlexpression);
  140. $host->getWebOperationContext()->resetWebContextInternal();
  141. } catch (\Exception $exception) {
  142. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  143. $host->getWebOperationContext()->resetWebContextInternal();
  144. }
  145. }
  146. /**
  147. * test the generated expression for negation in sql server
  148. */
  149. function testNegationMySQL()
  150. {
  151. try {
  152. $exceptionThrown = false;
  153. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  154. $resourcePath = 'Posts';
  155. $requestUri = $serviceUri . $resourcePath;
  156. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  157. 'AbsoluteRequestUri' => new Url($requestUri),
  158. 'QueryString' => '$filter=-PostID eq -1',
  159. 'DataServiceVersion' => new Version(3, 0),
  160. 'MaxDataServiceVersion' => new Version(3, 0));
  161. $host = new DataServiceHost5($hostInfo);
  162. $dataService = new WordPressDataService();
  163. $dataService->setHost($host);
  164. $uriProcessor = $dataService->handleRequest();
  165. $check = !is_null($uriProcessor);
  166. $this->assertTrue($check);
  167. $requestDescription = $uriProcessor->getRequestDescription();
  168. $check = !is_null($requestDescription);
  169. $this->assertTrue($check);
  170. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  171. $check = !is_null($internalFilterInfo);
  172. $this->assertTrue($check);
  173. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  174. // echo "\n";
  175. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  176. // echo "\n";
  177. $this->AssertEquals("(-(ID) = -1)", $mysqlexpression);
  178. $host->getWebOperationContext()->resetWebContextInternal();
  179. } catch (\Exception $exception) {
  180. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  181. $host->getWebOperationContext()->resetWebContextInternal();
  182. }
  183. }
  184. /**
  185. * test the generated expression for datetime comaprsion in sql server
  186. */
  187. function testDateTimeComparisionMySQL()
  188. {
  189. try {
  190. $exceptionThrown = false;
  191. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  192. $resourcePath = 'Posts';
  193. $requestUri = $serviceUri . $resourcePath;
  194. $requestUri = $serviceUri . $resourcePath;
  195. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  196. 'AbsoluteRequestUri' => new Url($requestUri),
  197. 'QueryString' => '$filter=Date eq datetime\'2011-12-24 19:54:00\'',
  198. 'DataServiceVersion' => new Version(3, 0),
  199. 'MaxDataServiceVersion' => new Version(3, 0));
  200. $host = new DataServiceHost5($hostInfo);
  201. $dataService = new WordPressDataService();
  202. $dataService->setHost($host);
  203. $uriProcessor = $dataService->handleRequest();
  204. $check = !is_null($uriProcessor);
  205. $this->assertTrue($check);
  206. $requestDescription = $uriProcessor->getRequestDescription();
  207. $check = !is_null($requestDescription);
  208. $this->assertTrue($check);
  209. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  210. $check = !is_null($internalFilterInfo);
  211. $this->assertTrue($check);
  212. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  213. // echo "\n";
  214. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  215. // echo "\n";
  216. $this->AssertEquals("((post_date = '2011-12-24 19:54:00'))", $mysqlexpression);
  217. $host->getWebOperationContext()->resetWebContextInternal();
  218. } catch (\Exception $exception) {
  219. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  220. $host->getWebOperationContext()->resetWebContextInternal();
  221. }
  222. }
  223. /**
  224. * test the generated expression for YEAR function call in sql server
  225. */
  226. function testYearFunctionCallMySQL()
  227. {
  228. try {
  229. $exceptionThrown = false;
  230. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  231. $resourcePath = 'Posts';
  232. $requestUri = $serviceUri . $resourcePath;
  233. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  234. 'AbsoluteRequestUri' => new Url($requestUri),
  235. 'QueryString' => '$filter=year(Date) eq year(datetime\'1996-07-09\')',
  236. 'DataServiceVersion' => new Version(3, 0),
  237. 'MaxDataServiceVersion' => new Version(3, 0));
  238. $host = new DataServiceHost5($hostInfo);
  239. $dataService = new WordPressDataService();
  240. $dataService->setHost($host);
  241. $uriProcessor = $dataService->handleRequest();
  242. $check = !is_null($uriProcessor);
  243. $this->assertTrue($check);
  244. $requestDescription = $uriProcessor->getRequestDescription();
  245. $check = !is_null($requestDescription);
  246. $this->assertTrue($check);
  247. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  248. $check = !is_null($internalFilterInfo);
  249. $this->assertTrue($check);
  250. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  251. // echo "\n";
  252. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  253. // echo "\n";
  254. $this->AssertEquals("(EXTRACT(YEAR from post_date) = EXTRACT(YEAR from '1996-07-09'))", $mysqlexpression);
  255. $host->getWebOperationContext()->resetWebContextInternal();
  256. } catch (\Exception $exception) {
  257. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  258. $host->getWebOperationContext()->resetWebContextInternal();
  259. }
  260. }
  261. /**
  262. * test the generated expression for YEAR function call with aritmetic and equality sql server
  263. */
  264. function testYearFunctionCallWtihAriRelMySQL()
  265. {
  266. try {
  267. $exceptionThrown = false;
  268. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  269. $resourcePath = 'Posts';
  270. $requestUri = $serviceUri . $resourcePath;
  271. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  272. 'AbsoluteRequestUri' => new Url($requestUri),
  273. 'QueryString' => '$filter=year(Date) add 2 eq 2013',
  274. 'DataServiceVersion' => new Version(3, 0),
  275. 'MaxDataServiceVersion' => new Version(3, 0));
  276. $host = new DataServiceHost5($hostInfo);
  277. $dataService = new WordPressDataService();
  278. $dataService->setHost($host);
  279. $uriProcessor = $dataService->handleRequest();
  280. $check = !is_null($uriProcessor);
  281. $this->assertTrue($check);
  282. $requestDescription = $uriProcessor->getRequestDescription();
  283. $check = !is_null($requestDescription);
  284. $this->assertTrue($check);
  285. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  286. $check = !is_null($internalFilterInfo);
  287. $this->assertTrue($check);
  288. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  289. // echo "\n";
  290. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  291. // echo "\n";
  292. $this->AssertEquals("((EXTRACT(YEAR from post_date) + 2) = 2013)", $mysqlexpression);
  293. $host->getWebOperationContext()->resetWebContextInternal();
  294. } catch (\Exception $exception) {
  295. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  296. $host->getWebOperationContext()->resetWebContextInternal();
  297. }
  298. }
  299. /**
  300. * test the generated expression for ceil and floor sql server
  301. */
  302. function testCeilFloorFunctionCallMySQL()
  303. {
  304. try {
  305. $exceptionThrown = false;
  306. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  307. $resourcePath = 'Posts';
  308. $requestUri = $serviceUri . $resourcePath;
  309. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  310. 'AbsoluteRequestUri' => new Url($requestUri),
  311. 'QueryString' => '$filter=ceiling(floor(PostID)) eq 2',
  312. 'DataServiceVersion' => new Version(3, 0),
  313. 'MaxDataServiceVersion' => new Version(3, 0));
  314. $host = new DataServiceHost5($hostInfo);
  315. $dataService = new WordPressDataService();
  316. $dataService->setHost($host);
  317. $uriProcessor = $dataService->handleRequest();
  318. $check = !is_null($uriProcessor);
  319. $this->assertTrue($check);
  320. $requestDescription = $uriProcessor->getRequestDescription();
  321. $check = !is_null($requestDescription);
  322. $this->assertTrue($check);
  323. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  324. $check = !is_null($internalFilterInfo);
  325. $this->assertTrue($check);
  326. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  327. // echo "\n";
  328. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  329. // echo "\n";
  330. $this->AssertEquals("(CEIL(FLOOR(ID)) = 2)", $mysqlexpression);
  331. $host->getWebOperationContext()->resetWebContextInternal();
  332. } catch (\Exception $exception) {
  333. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  334. $host->getWebOperationContext()->resetWebContextInternal();
  335. }
  336. }
  337. /**
  338. * test the generated expression for round function-call for sql server
  339. */
  340. function testRoundFunctionCallMySQL()
  341. {
  342. try {
  343. $exceptionThrown = false;
  344. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  345. $resourcePath = 'Posts';
  346. $requestUri = $serviceUri . $resourcePath;
  347. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  348. 'AbsoluteRequestUri' => new Url($requestUri),
  349. 'QueryString' => '$filter=round(PostID) eq 1',
  350. 'DataServiceVersion' => new Version(3, 0),
  351. 'MaxDataServiceVersion' => new Version(3, 0));
  352. $host = new DataServiceHost5($hostInfo);
  353. $dataService = new WordPressDataService();
  354. $dataService->setHost($host);
  355. $uriProcessor = $dataService->handleRequest();
  356. $check = !is_null($uriProcessor);
  357. $this->assertTrue($check);
  358. $requestDescription = $uriProcessor->getRequestDescription();
  359. $check = !is_null($requestDescription);
  360. $this->assertTrue($check);
  361. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  362. $check = !is_null($internalFilterInfo);
  363. $this->assertTrue($check);
  364. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  365. // print_r("'" . $mysqlexpression . "'");
  366. $this->AssertEquals("(ROUND(ID) = 1)", $mysqlexpression);
  367. $host->getWebOperationContext()->resetWebContextInternal();
  368. } catch (\Exception $exception) {
  369. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  370. $host->getWebOperationContext()->resetWebContextInternal();
  371. }
  372. }
  373. /**
  374. * test the generated expression for mod operator sql server
  375. */
  376. function testModOperatorMySQL()
  377. {
  378. try {
  379. $exceptionThrown = false;
  380. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  381. $resourcePath = 'Posts';
  382. $requestUri = $serviceUri . $resourcePath;
  383. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  384. 'AbsoluteRequestUri' => new Url($requestUri),
  385. 'QueryString' => '$filter=PostID mod 5 eq 4',
  386. 'DataServiceVersion' => new Version(3, 0),
  387. 'MaxDataServiceVersion' => new Version(3, 0));
  388. $host = new DataServiceHost5($hostInfo);
  389. $dataService = new WordPressDataService();
  390. $dataService->setHost($host);
  391. $uriProcessor = $dataService->handleRequest();
  392. $check = !is_null($uriProcessor);
  393. $this->assertTrue($check);
  394. $requestDescription = $uriProcessor->getRequestDescription();
  395. $check = !is_null($requestDescription);
  396. $this->assertTrue($check);
  397. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  398. $check = !is_null($internalFilterInfo);
  399. $this->assertTrue($check);
  400. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  401. // print_r("'" . $mysqlexpression . "'");
  402. $this->AssertEquals("((ID % 5) = 4)", $mysqlexpression);
  403. $host->getWebOperationContext()->resetWebContextInternal();
  404. } catch (\Exception $exception) {
  405. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  406. $host->getWebOperationContext()->resetWebContextInternal();
  407. }
  408. }
  409. /**
  410. * test the generated expression 2 param version of sub-string in sql server
  411. */
  412. function testSubString2ParamMySQL()
  413. {
  414. try {
  415. $exceptionThrown = false;
  416. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  417. $resourcePath = 'Posts';
  418. $requestUri = $serviceUri . $resourcePath;
  419. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  420. 'AbsoluteRequestUri' => new Url($requestUri),
  421. 'QueryString' => '$filter=substring(Title, 1) eq \'Data PHP Producer\'',
  422. 'DataServiceVersion' => new Version(3, 0),
  423. 'MaxDataServiceVersion' => new Version(3, 0));
  424. $host = new DataServiceHost5($hostInfo);
  425. $dataService = new WordPressDataService();
  426. $dataService->setHost($host);
  427. $uriProcessor = $dataService->handleRequest();
  428. $check = !is_null($uriProcessor);
  429. $this->assertTrue($check);
  430. $requestDescription = $uriProcessor->getRequestDescription();
  431. $check = !is_null($requestDescription);
  432. $this->assertTrue($check);
  433. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  434. $check = !is_null($internalFilterInfo);
  435. $this->assertTrue($check);
  436. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  437. // echo "\n";
  438. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  439. // echo "\n";
  440. $this->AssertEquals("(STRCMP(SUBSTRING(post_title, 1 + 1), 'Data PHP Producer') = 0)", $mysqlexpression);
  441. $host->getWebOperationContext()->resetWebContextInternal();
  442. } catch (\Exception $exception) {
  443. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  444. $host->getWebOperationContext()->resetWebContextInternal();
  445. }
  446. }
  447. /**
  448. * test the generated expression 3 param version of sub-string in sql server
  449. */
  450. function testSubString3ParamMySQL()
  451. {
  452. try {
  453. $exceptionThrown = false;
  454. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  455. $resourcePath = 'Posts';
  456. $requestUri = $serviceUri . $resourcePath;
  457. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  458. 'AbsoluteRequestUri' => new Url($requestUri),
  459. 'QueryString' => '$filter=substring(Title, 1, 6) eq \'Data P\'',
  460. 'DataServiceVersion' => new Version(3, 0),
  461. 'MaxDataServiceVersion' => new Version(3, 0));
  462. $host = new DataServiceHost5($hostInfo);
  463. $dataService = new WordPressDataService();
  464. $dataService->setHost($host);
  465. $uriProcessor = $dataService->handleRequest();
  466. $check = !is_null($uriProcessor);
  467. $this->assertTrue($check);
  468. $requestDescription = $uriProcessor->getRequestDescription();
  469. $check = !is_null($requestDescription);
  470. $this->assertTrue($check);
  471. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  472. $check = !is_null($internalFilterInfo);
  473. $this->assertTrue($check);
  474. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  475. // print_r("'" . $mysqlexpression . "'");
  476. $this->AssertEquals("(STRCMP(SUBSTRING(post_title, 1 + 1, 6), 'Data P') = 0)", $mysqlexpression);
  477. $host->getWebOperationContext()->resetWebContextInternal();
  478. } catch (\Exception $exception) {
  479. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  480. $host->getWebOperationContext()->resetWebContextInternal();
  481. }
  482. }
  483. /**
  484. * test the generated expression trim in sql server
  485. */
  486. function testSubStringTrimMySQL()
  487. {
  488. try {
  489. $exceptionThrown = false;
  490. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  491. $resourcePath = 'Posts';
  492. $requestUri = $serviceUri . $resourcePath;
  493. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  494. 'AbsoluteRequestUri' => new Url($requestUri),
  495. 'QueryString' => '$filter=trim(\' OData PHP Producer \') eq Title',
  496. 'DataServiceVersion' => new Version(3, 0),
  497. 'MaxDataServiceVersion' => new Version(3, 0));
  498. $host = new DataServiceHost5($hostInfo);
  499. $dataService = new WordPressDataService();
  500. $dataService->setHost($host);
  501. $uriProcessor = $dataService->handleRequest();
  502. $check = !is_null($uriProcessor);
  503. $this->assertTrue($check);
  504. $requestDescription = $uriProcessor->getRequestDescription();
  505. $check = !is_null($requestDescription);
  506. $this->assertTrue($check);
  507. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  508. $check = !is_null($internalFilterInfo);
  509. $this->assertTrue($check);
  510. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  511. // echo "\n";
  512. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  513. // echo "\n";
  514. $this->AssertEquals("(STRCMP(TRIM(' OData PHP Producer '), post_title) = 0)", $mysqlexpression);
  515. $host->getWebOperationContext()->resetWebContextInternal();
  516. } catch (\Exception $exception) {
  517. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  518. $host->getWebOperationContext()->resetWebContextInternal();
  519. }
  520. }
  521. /**
  522. * test the generated expression endswith function-call in sql server
  523. */
  524. function testEndsWithMySQL()
  525. {
  526. try {
  527. $exceptionThrown = false;
  528. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  529. $resourcePath = 'Posts';
  530. $requestUri = $serviceUri . $resourcePath;
  531. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  532. 'AbsoluteRequestUri' => new Url($requestUri),
  533. 'QueryString' => '$filter=endswith(Title, \'umer\')',
  534. 'DataServiceVersion' => new Version(3, 0),
  535. 'MaxDataServiceVersion' => new Version(3, 0));
  536. $host = new DataServiceHost5($hostInfo);
  537. $dataService = new WordPressDataService();
  538. $dataService->setHost($host);
  539. $uriProcessor = $dataService->handleRequest();
  540. $check = !is_null($uriProcessor);
  541. $this->assertTrue($check);
  542. $requestDescription = $uriProcessor->getRequestDescription();
  543. $check = !is_null($requestDescription);
  544. $this->assertTrue($check);
  545. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  546. $check = !is_null($internalFilterInfo);
  547. $this->assertTrue($check);
  548. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  549. // print_r("'" . $mysqlexpression . "'");
  550. $this->AssertEquals("(STRCMP('umer',RIGHT(post_title,LENGTH('umer'))) = 0)", $mysqlexpression);
  551. $host->getWebOperationContext()->resetWebContextInternal();
  552. } catch (\Exception $exception) {
  553. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  554. $host->getWebOperationContext()->resetWebContextInternal();
  555. }
  556. }
  557. /**
  558. * test the generated expression startswith function-call in sql server
  559. */
  560. function testStartsWithMySQL()
  561. {
  562. try {
  563. $exceptionThrown = false;
  564. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  565. $resourcePath = 'Posts';
  566. $requestUri = $serviceUri . $resourcePath;
  567. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  568. 'AbsoluteRequestUri' => new Url($requestUri),
  569. 'QueryString' => '$filter=startswith(Title, \'OData\')',
  570. 'DataServiceVersion' => new Version(3, 0),
  571. 'MaxDataServiceVersion' => new Version(3, 0));
  572. $host = new DataServiceHost5($hostInfo);
  573. $dataService = new WordPressDataService();
  574. $dataService->setHost($host);
  575. $uriProcessor = $dataService->handleRequest();
  576. $check = !is_null($uriProcessor);
  577. $this->assertTrue($check);
  578. $requestDescription = $uriProcessor->getRequestDescription();
  579. $check = !is_null($requestDescription);
  580. $this->assertTrue($check);
  581. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  582. $check = !is_null($internalFilterInfo);
  583. $this->assertTrue($check);
  584. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  585. // print_r("'" . $mysqlexpression . "'");
  586. $this->AssertEquals("(STRCMP('OData',LEFT(post_title,LENGTH('OData'))) = 0)", $mysqlexpression);
  587. $host->getWebOperationContext()->resetWebContextInternal();
  588. } catch (\Exception $exception) {
  589. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  590. $host->getWebOperationContext()->resetWebContextInternal();
  591. }
  592. }
  593. /**
  594. * test the generated expression indexof function-call in sql server
  595. */
  596. function testIndexOfMySQL()
  597. {
  598. try {
  599. $exceptionThrown = false;
  600. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  601. $resourcePath = 'Posts';
  602. $requestUri = $serviceUri . $resourcePath;
  603. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  604. 'AbsoluteRequestUri' => new Url($requestUri),
  605. 'QueryString' => '$filter=indexof(Title, \'ata\') eq 2',
  606. 'DataServiceVersion' => new Version(3, 0),
  607. 'MaxDataServiceVersion' => new Version(3, 0));
  608. $host = new DataServiceHost5($hostInfo);
  609. $dataService = new WordPressDataService();
  610. $dataService->setHost($host);
  611. $uriProcessor = $dataService->handleRequest();
  612. $check = !is_null($uriProcessor);
  613. $this->assertTrue($check);
  614. $requestDescription = $uriProcessor->getRequestDescription();
  615. $check = !is_null($requestDescription);
  616. $this->assertTrue($check);
  617. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  618. $check = !is_null($internalFilterInfo);
  619. $this->assertTrue($check);
  620. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  621. // print_r("'" . $mysqlexpression . "'");
  622. $this->AssertEquals("(INSTR(post_title, 'ata') - 1 = 2)", $mysqlexpression);
  623. $host->getWebOperationContext()->resetWebContextInternal();
  624. } catch (\Exception $exception) {
  625. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  626. $host->getWebOperationContext()->resetWebContextInternal();
  627. }
  628. }
  629. /**
  630. * test the generated expression replace function-call in sql server
  631. */
  632. function testReplaceMySQL()
  633. {
  634. try {
  635. $exceptionThrown = false;
  636. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  637. $resourcePath = 'Posts';
  638. $requestUri = $serviceUri . $resourcePath;
  639. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  640. 'AbsoluteRequestUri' => new Url($requestUri),
  641. 'QueryString' => '$filter=replace(Title, \' \', \'\') eq \'ODataPHPProducer\'',
  642. 'DataServiceVersion' => new Version(3, 0),
  643. 'MaxDataServiceVersion' => new Version(3, 0));
  644. $host = new DataServiceHost5($hostInfo);
  645. $dataService = new WordPressDataService();
  646. $dataService->setHost($host);
  647. $uriProcessor = $dataService->handleRequest();
  648. $check = !is_null($uriProcessor);
  649. $this->assertTrue($check);
  650. $requestDescription = $uriProcessor->getRequestDescription();
  651. $check = !is_null($requestDescription);
  652. $this->assertTrue($check);
  653. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  654. $check = !is_null($internalFilterInfo);
  655. $this->assertTrue($check);
  656. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  657. // print_r("'" . $mysqlexpression . "'");
  658. $this->AssertEquals("(STRCMP(REPLACE(post_title,' ',''), 'ODataPHPProducer') = 0)", $mysqlexpression);
  659. $host->getWebOperationContext()->resetWebContextInternal();
  660. } catch (\Exception $exception) {
  661. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  662. $host->getWebOperationContext()->resetWebContextInternal();
  663. }
  664. }
  665. /**
  666. * test the generated expression substringof function-call in sql server
  667. */
  668. function testSubStringOfMySQL()
  669. {
  670. try {
  671. $exceptionThrown = false;
  672. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  673. $resourcePath = 'Posts';
  674. $requestUri = $serviceUri . $resourcePath;
  675. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  676. 'AbsoluteRequestUri' => new Url($requestUri),
  677. 'QueryString' => '$filter=substringof(\'Producer\', Title)',
  678. 'DataServiceVersion' => new Version(3, 0),
  679. 'MaxDataServiceVersion' => new Version(3, 0));
  680. $host = new DataServiceHost5($hostInfo);
  681. $dataService = new WordPressDataService();
  682. $dataService->setHost($host);
  683. $uriProcessor = $dataService->handleRequest();
  684. $check = !is_null($uriProcessor);
  685. $this->assertTrue($check);
  686. $requestDescription = $uriProcessor->getRequestDescription();
  687. $check = !is_null($requestDescription);
  688. $this->assertTrue($check);
  689. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  690. $check = !is_null($internalFilterInfo);
  691. $this->assertTrue($check);
  692. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  693. // print_r("'" . $mysqlexpression . "'");
  694. $this->AssertEquals("(LOCATE('Producer', post_title) > 0)", $mysqlexpression);
  695. $host->getWebOperationContext()->resetWebContextInternal();
  696. } catch (\Exception $exception) {
  697. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  698. $host->getWebOperationContext()->resetWebContextInternal();
  699. }
  700. }
  701. /**
  702. * test the generated expression substringof and indexof function-call in sql server
  703. */
  704. function testSubStringOfIndexOfMySQL()
  705. {
  706. try {
  707. $exceptionThrown = false;
  708. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  709. $resourcePath = 'Posts';
  710. $requestUri = $serviceUri . $resourcePath;
  711. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  712. 'AbsoluteRequestUri' => new Url($requestUri),
  713. 'QueryString' => '$filter=substringof(\'Producer\', Title) and indexof(Title, \'Producer\') eq 11',
  714. 'DataServiceVersion' => new Version(3, 0),
  715. 'MaxDataServiceVersion' => new Version(3, 0));
  716. $host = new DataServiceHost5($hostInfo);
  717. $dataService = new WordPressDataService();
  718. $dataService->setHost($host);
  719. $uriProcessor = $dataService->handleRequest();
  720. $check = !is_null($uriProcessor);
  721. $this->assertTrue($check);
  722. $requestDescription = $uriProcessor->getRequestDescription();
  723. $check = !is_null($requestDescription);
  724. $this->assertTrue($check);
  725. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  726. $check = !is_null($internalFilterInfo);
  727. $this->assertTrue($check);
  728. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  729. // echo "\n";
  730. // print_r("\n\n'" . $mysqlexpression . "'\n\n");
  731. // echo "\n";
  732. $this->AssertEquals("((LOCATE('Producer', post_title) > 0) && (INSTR(post_title, 'Producer') - 1 = 11))", $mysqlexpression);
  733. $host->getWebOperationContext()->resetWebContextInternal();
  734. } catch (\Exception $exception) {
  735. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  736. $host->getWebOperationContext()->resetWebContextInternal();
  737. }
  738. }
  739. /**
  740. * test the generated expression concat function-call in sql server
  741. */
  742. function testSubConcatMySQL()
  743. {
  744. try {
  745. $exceptionThrown = false;
  746. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  747. $resourcePath = 'Posts';
  748. $requestUri = $serviceUri . $resourcePath;
  749. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  750. 'AbsoluteRequestUri' => new Url($requestUri),
  751. 'QueryString' => '$filter=concat(concat(Title, \', \'), \'Open source now\') eq \'OData .NET Producer, Open source now\'',
  752. 'DataServiceVersion' => new Version(3, 0),
  753. 'MaxDataServiceVersion' => new Version(3, 0));
  754. $host = new DataServiceHost5($hostInfo);
  755. $dataService = new WordPressDataService();
  756. $dataService->setHost($host);
  757. $uriProcessor = $dataService->handleRequest();
  758. $check = !is_null($uriProcessor);
  759. $this->assertTrue($check);
  760. $requestDescription = $uriProcessor->getRequestDescription();
  761. $check = !is_null($requestDescription);
  762. $this->assertTrue($check);
  763. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  764. $check = !is_null($internalFilterInfo);
  765. $this->assertTrue($check);
  766. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  767. // echo "\n";
  768. // print_r("'" . $mysqlexpression . "'");
  769. // echo "\n";
  770. $this->AssertEquals("(STRCMP(CONCAT(CONCAT(post_title,', '),'Open source now'), 'OData .NET Producer, Open source now') = 0)", $mysqlexpression);
  771. $host->getWebOperationContext()->resetWebContextInternal();
  772. } catch (\Exception $exception) {
  773. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  774. $host->getWebOperationContext()->resetWebContextInternal();
  775. }
  776. }
  777. protected function tearDown()
  778. {
  779. }
  780. }
  781. /**
  782. try {
  783. $serviceUri = 'http://localhost:8083/WordPressDataService.svc/';
  784. $resourcePath = 'Posts';
  785. $requestUri = $serviceUri . $resourcePath;
  786. $hostInfo = array('AbsoluteServiceUri' => new Url($serviceUri),
  787. 'AbsoluteRequestUri' => new Url($requestUri),
  788. 'QueryString' => '$filter=concat(concat(Title, \', \'), \'Open source now\') eq \'OData .NET Producer, Open source now\'',
  789. 'DataServiceVersion' => new Version(3, 0),
  790. 'MaxDataServiceVersion' => new Version(3, 0));
  791. $host = new DataServiceHost5($hostInfo);
  792. $dataService = new WordPressDataService();
  793. $dataService->setHost($host);
  794. $uriProcessor = $dataService->handleRequest();
  795. $requestDescription = $uriProcessor->getRequestDescription();
  796. $internalFilterInfo = $requestDescription->getInternalFilterInfo();
  797. $mysqlexpression = $internalFilterInfo->getExpressionAsString();
  798. // TODO Assert that exp is (STRCMP(REPLACE(post_title,' ',''), 'ODataPHPProducer') = 0)
  799. $host->getWebOperationContext()->resetWebContextInternal();
  800. echo $mysqlexpression;
  801. } catch (\Exception $exception) {
  802. $this->fail('An unexpected Exception has been raised . ' . $exception->getMessage());
  803. }
  804. **/
  805. //
  806. ?>