code: function(dataset, testFunction) {
  
  		// check for missing or null argument
  		if (typeof dataset !== 'object' || dataset === null) {
  			throw new Error('First argument must be an object or non-empty array.');
  		}
  
  		/*
  		 * The dataset needs to be normalized so it looks like:
  		 * {
  		 *      "name1": [ "data1", "data2" ],
  		 *      "name2": [ "data3", "data4" ],
  		 * }
  		 */
  		var namedDataset = dataset;
  		if (dataset instanceof Array) {
  
  			// arrays must have at least one item
  			if (dataset.length) {
  				namedDataset = createNamedDataset(dataset);
  			} else {
  				throw new Error('First argument must be an object or non-empty array.');
  			}
  		}
  
  		/*
  		 * For each name, create a new describe() block containing the name.
  		 * This causes the dataset info to be output into the console, making
  		 * it easier to determine which dataset caused a problem when there's an
  		 * error.
  		 */
  		for (var name in namedDataset) {
  			if (namedDataset.hasOwnProperty(name)) {
  				/*eslint-disable no-loop-func*/
  
  				describe('with ' + name, (function(dataName) {
  					return function() {
  
  						var args = namedDataset[dataName];
  
  						if (!(args instanceof Array)) {
  							args = [args];
  						}
  
  						testFunction.apply(this, args);
  					};
  				}(name)));
  
  				/*eslint-enable no-loop-func*/
  			}
  		}
  	}
docs: A data provider for use with Mocha. Use this around a call to it() to run
  the test over a series of data.
  @param {Object|Array} dataset The data to test.
  @param {Function} testFunction The function to call for each piece of data.
  @returns {void}
  @throws {Error} If dataset is missing or an empty array.