--- /dev/null
+<?php
+
+namespace Unish;
+
+/**
+ * Unit tests for xh.drush.inc.
+ *
+ * @group base
+ */
+class xhUnitCase extends UnitUnishTestCase {
+
+ /**
+ * Test various combinations of XHProf flag options.
+ *
+ * @dataProvider xhOptionProvider
+ */
+ public function testFlags($name, $options, $expected) {
+ drush_preflight();
+ foreach ($options as $option_name => $option_value) {
+ drush_set_option($option_name, $option_value);
+ }
+ $this->assertEquals($expected, xh_flags(), $name);
+ }
+
+ /**
+ * Provides drush XHProf options and the results we expect from xh_flags().
+ */
+ public function xhOptionProvider() {
+
+ if (!defined('XHPROF_FLAGS_NO_BUILTINS')) {
+ define('XHPROF_FLAGS_NO_BUILTINS', 1);
+ define('XHPROF_FLAGS_CPU', 2);
+ define('XHPROF_FLAGS_MEMORY', 3);
+ }
+
+ return array(
+ array(
+ 'name' => 'No flag options provided (default)',
+ 'options' => array(),
+ 'expected' => 0,
+ ),
+ array(
+ 'name' => 'Default flag options explicitly provided',
+ 'options' => array(
+ 'xh-profile-builtins' => TRUE,
+ 'xh-profile-cpu' => FALSE,
+ 'xh-profile-memory' => FALSE,
+ ),
+ 'expected' => 0,
+ ),
+ array(
+ 'name' => 'Disable profiling of built-ins',
+ 'options' => array(
+ 'xh-profile-builtins' => FALSE,
+ 'xh-profile-cpu' => FALSE,
+ 'xh-profile-memory' => FALSE,
+ ),
+ 'expected' => XHPROF_FLAGS_NO_BUILTINS,
+ ),
+ array(
+ 'name' => 'Enable profiling of CPU',
+ 'options' => array(
+ 'xh-profile-builtins' => TRUE,
+ 'xh-profile-cpu' => TRUE,
+ 'xh-profile-memory' => FALSE,
+ ),
+ 'expected' => XHPROF_FLAGS_CPU,
+ ),
+ array(
+ 'name' => 'Enable profiling of CPU, without builtins',
+ 'options' => array(
+ 'xh-profile-builtins' => FALSE,
+ 'xh-profile-cpu' => TRUE,
+ 'xh-profile-memory' => FALSE,
+ ),
+ 'expected' => XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU,
+ ),
+ array(
+ 'name' => 'Enable profiling of Memory',
+ 'options' => array(
+ 'xh-profile-builtins' => TRUE,
+ 'xh-profile-cpu' => FALSE,
+ 'xh-profile-memory' => TRUE,
+ ),
+ 'expected' => XHPROF_FLAGS_MEMORY,
+ ),
+ array(
+ 'name' => 'Enable profiling of Memory, without builtins',
+ 'options' => array(
+ 'xh-profile-builtins' => FALSE,
+ 'xh-profile-cpu' => FALSE,
+ 'xh-profile-memory' => TRUE,
+ ),
+ 'expected' => XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_MEMORY,
+ ),
+ array(
+ 'name' => 'Enable profiling of CPU & Memory',
+ 'options' => array(
+ 'xh-profile-builtins' => TRUE,
+ 'xh-profile-cpu' => TRUE,
+ 'xh-profile-memory' => TRUE,
+ ),
+ 'expected' => XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY,
+ ),
+ );
+ }
+
+}