| 859 | | |
| | 859 | /** Result set provider for the HYDRATE_SINGLE_SCALAR tests */ |
| | 860 | public static function singleScalarResultSetProvider() { |
| | 861 | return array( |
| | 862 | // valid |
| | 863 | array('name' => 'result1', |
| | 864 | 'resultSet' => array( |
| | 865 | array( |
| | 866 | 'u__name' => 'romanb' |
| | 867 | ) |
| | 868 | )), |
| | 869 | // valid |
| | 870 | array('name' => 'result2', |
| | 871 | 'resultSet' => array( |
| | 872 | array( |
| | 873 | 'u__id' => '1' |
| | 874 | ) |
| | 875 | )), |
| | 876 | // invalid |
| | 877 | array('name' => 'result3', |
| | 878 | 'resultSet' => array( |
| | 879 | array( |
| | 880 | 'u__id' => '1', |
| | 881 | 'u__name' => 'romanb' |
| | 882 | ) |
| | 883 | )), |
| | 884 | // invalid |
| | 885 | array('name' => 'result4', |
| | 886 | 'resultSet' => array( |
| | 887 | array( |
| | 888 | 'u__id' => '1' |
| | 889 | ), |
| | 890 | array( |
| | 891 | 'u__id' => '2' |
| | 892 | ) |
| | 893 | )), |
| | 894 | ); |
| | 895 | } |
| | 896 | |
| | 897 | /** |
| | 898 | * select u.name from CmsUser u where u.id = 1 |
| | 899 | * |
| | 900 | * @dataProvider singleScalarResultSetProvider |
| | 901 | */ |
| | 902 | public function testHydrateSingleScalar($name, $resultSet) |
| | 903 | { |
| | 904 | // Faked query components |
| | 905 | $queryComponents = array( |
| | 906 | 'u' => array( |
| | 907 | 'table' => $this->_em->getClassMetadata('CmsUser'), |
| | 908 | 'mapper' => $this->_em->getEntityPersister('CmsUser'), |
| | 909 | 'parent' => null, |
| | 910 | 'relation' => null, |
| | 911 | 'map' => null |
| | 912 | ) |
| | 913 | ); |
| | 914 | |
| | 915 | // Faked table alias map |
| | 916 | $tableAliasMap = array( |
| | 917 | 'u' => 'u' |
| | 918 | ); |
| | 919 | |
| | 920 | $stmt = new Doctrine_HydratorMockStatement($resultSet); |
| | 921 | $hydrator = new Doctrine_HydratorNew($this->_em); |
| | 922 | |
| | 923 | if ($name == 'result1') { |
| | 924 | $result = $hydrator->hydrateResultSet($this->_createParserResult( |
| | 925 | $stmt, $queryComponents, $tableAliasMap, Doctrine::HYDRATE_SINGLE_SCALAR)); |
| | 926 | $this->assertEquals('romanb', $result); |
| | 927 | } else if ($name == 'result2') { |
| | 928 | $result = $hydrator->hydrateResultSet($this->_createParserResult( |
| | 929 | $stmt, $queryComponents, $tableAliasMap, Doctrine::HYDRATE_SINGLE_SCALAR)); |
| | 930 | $this->assertEquals(1, $result); |
| | 931 | } else if ($name == 'result3' || $name == 'result4') { |
| | 932 | try { |
| | 933 | $result = $hydrator->hydrateResultSet($this->_createParserResult( |
| | 934 | $stmt, $queryComponents, $tableAliasMap, Doctrine::HYDRATE_SINGLE_SCALAR)); |
| | 935 | $this->fail(); |
| | 936 | } catch (Doctrine_Hydrator_Exception $ex) {} |
| | 937 | } |
| | 938 | |
| | 939 | } |