1*5153720fSfkaag71<?php 2*5153720fSfkaag71require_once('strataquerytest.inc.php'); 3*5153720fSfkaag71 4*5153720fSfkaag71/** 5*5153720fSfkaag71 * Tests queries - sorting. 6*5153720fSfkaag71 * 7*5153720fSfkaag71 * @group plugin_strata 8*5153720fSfkaag71 * @group plugins 9*5153720fSfkaag71 */ 10*5153720fSfkaag71class query_sort_test extends Strata_Query_UnitTestCase { 11*5153720fSfkaag71 12*5153720fSfkaag71 function setup() { 13*5153720fSfkaag71 parent::setup(); 14*5153720fSfkaag71 } 15*5153720fSfkaag71 16*5153720fSfkaag71 function testNumericSort() { 17*5153720fSfkaag71 $query = array ( 18*5153720fSfkaag71 'type' => 'select', 19*5153720fSfkaag71 'grouping'=>array(), 20*5153720fSfkaag71 'group' => array ( 21*5153720fSfkaag71 'type' => 'triple', 22*5153720fSfkaag71 'subject' => array ( 23*5153720fSfkaag71 'type' => 'variable', 24*5153720fSfkaag71 'text' => 'p' 25*5153720fSfkaag71 ), 26*5153720fSfkaag71 'predicate' => array ( 27*5153720fSfkaag71 'type' => 'literal', 28*5153720fSfkaag71 'text' => 'is rated' 29*5153720fSfkaag71 ), 30*5153720fSfkaag71 'object' => array ( 31*5153720fSfkaag71 'type' => 'variable', 32*5153720fSfkaag71 'text' => 'rating' 33*5153720fSfkaag71 ) 34*5153720fSfkaag71 ), 35*5153720fSfkaag71 'projection' => array ( 36*5153720fSfkaag71 'p', 37*5153720fSfkaag71 'rating' 38*5153720fSfkaag71 ), 39*5153720fSfkaag71 'ordering' => array ( 40*5153720fSfkaag71 array ( 41*5153720fSfkaag71 'variable' => 'rating', 42*5153720fSfkaag71 'direction' => 'asc' 43*5153720fSfkaag71 ) 44*5153720fSfkaag71 ) 45*5153720fSfkaag71 ); 46*5153720fSfkaag71 47*5153720fSfkaag71 $expected = array ( 48*5153720fSfkaag71 array ( 49*5153720fSfkaag71 'p' => array('person:carol'), 50*5153720fSfkaag71 'rating' => array('1') 51*5153720fSfkaag71 ), 52*5153720fSfkaag71 array ( 53*5153720fSfkaag71 'p' => array('person:bob'), 54*5153720fSfkaag71 'rating' => array('8') 55*5153720fSfkaag71 ), 56*5153720fSfkaag71 array ( 57*5153720fSfkaag71 'p' => array('person:alice'), 58*5153720fSfkaag71 'rating' => array('10') 59*5153720fSfkaag71 ) 60*5153720fSfkaag71 ); 61*5153720fSfkaag71 62*5153720fSfkaag71 $this->assertQueryResult($query, $expected); 63*5153720fSfkaag71 } 64*5153720fSfkaag71 65*5153720fSfkaag71 function testPartiallyNumericSort() { 66*5153720fSfkaag71 $query = array ( 67*5153720fSfkaag71 'type' => 'select', 68*5153720fSfkaag71 'grouping'=>array(), 69*5153720fSfkaag71 'group' => array ( 70*5153720fSfkaag71 'type' => 'triple', 71*5153720fSfkaag71 'subject' => array ( 72*5153720fSfkaag71 'type' => 'variable', 73*5153720fSfkaag71 'text' => 'p' 74*5153720fSfkaag71 ), 75*5153720fSfkaag71 'predicate' => array ( 76*5153720fSfkaag71 'type' => 'literal', 77*5153720fSfkaag71 'text' => 'tax rate' 78*5153720fSfkaag71 ), 79*5153720fSfkaag71 'object' => array ( 80*5153720fSfkaag71 'type' => 'variable', 81*5153720fSfkaag71 'text' => 'tax' 82*5153720fSfkaag71 ) 83*5153720fSfkaag71 ), 84*5153720fSfkaag71 'projection' => array ( 85*5153720fSfkaag71 'p', 86*5153720fSfkaag71 'tax' 87*5153720fSfkaag71 ), 88*5153720fSfkaag71 'ordering' => array ( 89*5153720fSfkaag71 array ( 90*5153720fSfkaag71 'variable' => 'tax', 91*5153720fSfkaag71 'direction' => 'asc' 92*5153720fSfkaag71 ) 93*5153720fSfkaag71 ) 94*5153720fSfkaag71 ); 95*5153720fSfkaag71 96*5153720fSfkaag71 // Result might vary depending on database backed, only require that it does not fail 97*5153720fSfkaag71 $this->assertTrue($this->_triples->queryRelations($query)); 98*5153720fSfkaag71 } 99*5153720fSfkaag71 100*5153720fSfkaag71} 101