text: /**
  * @license Apache-2.0
  *
  * Copyright (c) 2018 The Stdlib Authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *    http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
  
  'use strict';
  
  // VARIABLES //
  
  var valid;
  var test;
  
  
  // MAIN //
  
  // Create our test cases:
  valid = [];
  
  test = {
  	'code': [
  		'/**',
  		'* Squares a number.',
  		'* ',
  		'* @param {number} x - input number',
  		'* @returns {number} x squared',
  		'*',
  		'* @example',
  		'* var y = square( 2.0 );',
  		'* // returns 4.0',
  		'*/',
  		'function square( x ) {',
  		'  return x*x;',
  		'}'
  	].join( '\n' )
  };
  valid.push( test );
  
  test = {
  	'code': [
  		'/**',
  		'* Returns a pseudo-random number on `[0,1]`.',
  		'* ',
  		'* @returns {number} uniform random number',
  		'*',
  		'* @example',
  		'* var y = rand();',
  		'* // e.g., returns 0.5363925252089496',
  		'*/',
  		'function rand() {',
  		'  return Math.random();',
  		'}'
  	].join( '\n' )
  };
  valid.push( test );
  
  test = {
  	'code': [
  		'/**',
  		'* Returns the number of minutes in a month.',
  		'*',
  		'* @param {(string|Date|integer)} [month] - month',
  		'* @param {integer} [year] - year',
  		'* @throws {TypeError} first argument must be either a string, integer, or `Date` object',
  		'* @throws {Error} must provide a recognized month',
  		'* @throws {RangeError} an integer month argument must be on the interval `[1,12]`',
  		'* @throws {TypeError} second argument must be an integer',
  		'* @returns {integer} minutes in a month',
  		'*',
  		'* @example',
  		'* var num = minutesInMonth();',
  		'* // returns <number>',
  		'*',
  		'* @example',
  		'* var num = minutesInMonth( 2 );',
  		'* // returns <number>',
  		'*',
  		'* @example',
  		'* var num = minutesInMonth( 2, 2016 );',
  		'* // returns 41760',
  		'*',
  		'* @example',
  		'* var num = minutesInMonth( 2, 2017 );',
  		'* // returns 40320',
  		'*/',
  		'function minutesInMonth( month, year ) {',
  		'	var mins;',
  		'	var mon;',
  		'	var yr;',
  		'	var d;',
  		'	if ( arguments.length === 0 ) {',
  		'		// Note: cannot cache as application may cross over into a new year:',
  		'		d = new Date();',
  		'		mon = d.getMonth() + 1; // zero-based',
  		'		yr = d.getFullYear();',
  		'	} else if ( arguments.length === 1 ) {',
  		'		if ( isDateObject( month ) ) {',
  		'			d = month;',
  		'			mon = d.getMonth() + 1; // zero-based',
  		'			yr = d.getFullYear();',
  		'		} else if ( isString( month ) || isInteger( month ) ) {',
  		'			// Note: cannot cache as application may cross over into a new year:',
  		'			yr = ( new Date() ).getFullYear();',
  		'			mon = month;',
  		'		} else {',
  		'			throw new TypeError( \'invalid argument. First argument must be either a string, integer, or `Date` object. Value: `\'+month+\'`.\' );',
  		'		}',
  		'	} else {',
  		'		if ( !isString( month ) && !isInteger( month ) ) {',
  		'			throw new TypeError( \'invalid argument. First argument must be either a string or integer. Value: `\'+month+\'`.\' );',
  		'		}',
  		'		if ( !isInteger( year ) ) {',
  		'			throw new TypeError( \'invalid argument. Second argument must be an integer. Value: `\'+year+\'`.\' );',
  		'		}',
  		'		mon = month;',
  		'		yr = year;',
  		'	}',
  		'	if ( isInteger( mon ) && (mon < 1 || mon > 12) ) {',
  		'		throw new RangeError( \'invalid argument. An integer month value must be on the interval `[1,12]`. Value: `\'+mon+\'`.\' );',
  		'	}',
  		'	mon = lowercase( mon.toString() );',
  		'	mins = MINUTES_IN_MONTH[ mon ];',
  		'	if ( mins === void 0 ) {',
  		'		throw new Error( \'invalid argument. Must provide a recognized month. Value: `\'+mon+\'`.\' );',
  		'	}',
  		'	// Check if February during a leap year...',
  		'	if ( mins === 40320 && isLeapYear( yr ) ) {',
  		'		mins += MINUTES_IN_DAY;',
  		'	}',
  		'	return mins;',
  		'}'
  	].join( '\n' )
  };
  valid.push( test );
  
  test = {
  	'code': [
  		'/**',
  		'* Removes a UTF-8 byte order mark (BOM) from the beginning of a string.',
  		'*',
  		'* ## Notes',
  		'*',
  		'* -   A UTF-8 byte order mark ([BOM][1]) is the byte sequence `0xEF,0xBB,0xBF`.',
  		'* -   To convert a UTF-8 encoded `Buffer` to a `string`, the `Buffer` must be converted to \'[UTF-16][2]. The BOM thus gets converted to the single 16-bit code point `\'\ufeff\'` \'(UTF-16 BOM).',
  		'*',
  		'* [1]: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8',
  		'* [2]: http://es5.github.io/#x4.3.16',
  		'*',
  		'*',
  		'* @param {string} str - input string',
  		'* @throws {TypeError} must provide a string primitive',
  		'* @returns {string} string with BOM removed',
  		'*',
  		'* @example',
  		'* var str = removeUTF8BOM( \'\ufeffbeep\' );',
  		'* // returns \'beep\'',
  		'*/',
  		'function removeUTF8BOM( str ) {',
  		'	if ( !isString( str ) ) {',
  		'		throw new TypeError( \'invalid argument. Must provide a string primitive. Value: `\' + str + \'`.\' );',
  		'	}',
  		'	if ( str.charCodeAt( 0 ) === BOM ) {',
  		'		return str.slice( 1 );',
  		'	}',
  		'	return str;',
  		'}'
  	].join( '\n' )
  };
  valid.push( test );
  
  test = {
  	'code': [
  		'/**',
  		'* @name arcsine',
  		'* @memberof random',
  		'* @readonly',
  		'* @type {Function}',
  		'* @see {@link module:@stdlib/random/base/arcsine}',
  		'*/',
  		'setReadOnly( random, \'arcsine\', require( \'@stdlib/random/base/arcsine\' ) );'
  	].join( '\n' )
  };
  valid.push( test );
  
  test = {
  	'code': [
  		'/**',
  		'* Beep boop.',
  		'*',
  		'* > This is a blockquote.',
  		'*',
  		'* ## Heading',
  		'*',
  		'* -   [ ] item',
  		'*',
  		'* Some code...',
  		'*',
  		'* ```javascript',
  		'* var f = foo();',
  		'* ```',
  		'*',
  		'* Some LaTeX...',
  		'*',
  		'* ```tex',
  		'* \\frac{1}{2}',
  		'* ```',
  		'*',
  		'* ## Notes',
  		'*',
  		'* -   First.',
  		'* -   Second.',
  		'* -   Third.',
  		'*',
  		'* ## References',
  		'*',
  		'* -   Jane Doe. Science. 2017.',
  		'*',
  		'* | x | y |',
  		'* | 1 | 2 |',
  		'* | 2 | 1 |',
  		'*',
  		'*',
  		'* @param {string} str - input value',
  		'* @returns {string} output value',
  		'*',
  		'* @example',
  		'* var out = beep( "boop" );',
  		'* // returns "beepboop"',
  		'*/',
  		'function beep( str ) {',
  		'\treturn "beep" + str;',
  		'}'
  	].join( '\n' )
  };
  valid.push( test );
  
  test = {
  	'code': [
  		'/**',
  		'* Beep ![boop][].',
  		'*',
  		'* [boop]: http://foo.bar/baz.png',
  		'*',
  		'* @param {string} str - input value',
  		'* @returns {string} output value',
  		'*',
  		'* @example',
  		'* var out = beep( "boop" );',
  		'* // returns "beepboop"',
  		'*/',
  		'function beep( str ) {',
  		'    return "beep" + str;',
  		'}'
  	].join( '\n' )
  };
  valid.push( test );
  
  
  // EXPORTS //
  
  module.exports = valid;
  