[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Behat arguments transformations. 19 * 20 * This methods are used by Behat CLI command. 21 * 22 * @package core 23 * @category test 24 * @copyright 2012 David Monllaó 25 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 26 */ 27 28 // NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php. 29 30 require_once (__DIR__ . '/../../behat/behat_base.php'); 31 32 use Behat\Gherkin\Node\TableNode; 33 34 /** 35 * Transformations to apply to steps arguments. 36 * 37 * This methods are applied to the steps arguments that matches 38 * the regular expressions specified in the @Transform tag. 39 * 40 * @package core 41 * @category test 42 * @copyright 2013 David Monllaó 43 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 44 */ 45 class behat_transformations extends behat_base { 46 47 /** 48 * Removes escaped argument delimiters. 49 * 50 * We use double quotes as arguments delimiters and 51 * to add the " as part of an argument we escape it 52 * with a backslash, this method removes this backslash. 53 * 54 * @Transform /^((.*)"(.*))$/ 55 * @param string $string 56 * @return string The string with the arguments fixed. 57 */ 58 public function arg_replace_slashes($string) { 59 if (!is_scalar($string)) { 60 return $string; 61 } 62 return str_replace('\"', '"', $string); 63 } 64 65 /** 66 * Replaces $NASTYSTRING vars for a nasty string. 67 * 68 * @Transform /^((.*)\$NASTYSTRING(\d)(.*))$/ 69 * @param string $argument The whole argument value. 70 * @return string 71 */ 72 public function arg_replace_nasty_strings($argument) { 73 if (!is_scalar($argument)) { 74 return $argument; 75 } 76 return $this->replace_nasty_strings($argument); 77 } 78 79 /** 80 * Transformations for TableNode arguments. 81 * 82 * Transformations applicable to TableNode arguments should also 83 * be applied, adding them in a different method for Behat API restrictions. 84 * 85 * @Transform table:Surname,My Surname $NASTYSTRING2 86 * @param TableNode $tablenode 87 * @return TableNode The transformed table 88 */ 89 public function prefixed_tablenode_transformations(TableNode $tablenode) { 90 return $this->tablenode_transformations($tablenode); 91 } 92 93 /** 94 * Transformations for TableNode arguments. 95 * 96 * Transformations applicable to TableNode arguments should also 97 * be applied, adding them in a different method for Behat API restrictions. 98 * 99 * @Transform table:Surname,$NASTYSTRING1 100 * @param TableNode $tablenode 101 * @return TableNode The transformed table 102 */ 103 public function tablenode_transformations(TableNode $tablenode) { 104 // Walk through all values including the optional headers. 105 $rows = $tablenode->getRows(); 106 foreach ($rows as $rowkey => $row) { 107 foreach ($row as $colkey => $value) { 108 109 // Transforms vars into nasty strings. 110 if (preg_match('/\$NASTYSTRING(\d)/', $rows[$rowkey][$colkey])) { 111 $rows[$rowkey][$colkey] = $this->replace_nasty_strings($rows[$rowkey][$colkey]); 112 } 113 } 114 } 115 116 // Return the transformed TableNode. 117 unset($tablenode); 118 $tablenode = new TableNode($rows); 119 120 return $tablenode; 121 } 122 123 /** 124 * Replaces $NASTYSTRING vars for a nasty string. 125 * 126 * Method reused by TableNode tranformation. 127 * 128 * @param string $string 129 * @return string 130 */ 131 public function replace_nasty_strings($string) { 132 return preg_replace_callback( 133 '/\$NASTYSTRING(\d)/', 134 function ($matches) { 135 return nasty_strings::get($matches[0]); 136 }, 137 $string 138 ); 139 } 140 141 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |