<?php

require( 'wordpress-dev/wp-load.php' );

// An array of "date_query" arrays
$tests = array(

	// Between 8:45 AM and 5:12 PM on weekdays
	array(
		array(
			'hour' => 8,
			'minute' => 45,
			'compare' => '>=',
		),
		array(
			'hour' => 17,
			'minute' => 12,
			'compare' => '<=',
		),
		array(
			'dayofweek' => array( 2, 6 ),
			'compare' => 'BETWEEN',
		),
	),

	// Posted at least 30 minutes after the hour on a Tuesday
	array(
		array(
			'minute' => 30,
			'compare' => '>=',
		),
		array(
			'dayofweek' => 3,
			//'compare' => '=', // Default
		),
	),

	array(
		'column' => 'post_date_gmt',
		'relation' => 'OR',
		array(
			'hour' => array( 2, 12 ),
			'minute' => array( 5, 16 ),
			'compare' => 'BETWEEN',
		),
		array(
			'minute' => array( 45, 55 ),
			'second' => 12,
			'compare' => 'BETWEEN',
		),
		array(
			'dayofweek' => array( 2, 4, 7, 'foobar' ),
			'compare' => 'IN',
		),
	),

	array(
		array(
			'after' => '3 weeks ago',
			'before' => '2 weeks ago',
		),
	),

	array(
		array(
			'before' => array(
				'year' => 2010,
				'month' => 3,
				'day' => 1,
			),
		),
	),

	array(
		'relation' => 'OR',
		array(
			'hour' => 14,
			'dayofweek' => 1,
		),
		array(
			'hour' => 18, // Will be cast to an array
			'dayofweek' => array( 2, 3 ),
			'compare' => 'IN',
		),
	),

	array(
		array(
			'minute' => 0,
		)
	),

	// Non-integer test
	array(
		array(
			'hour' => 'foo',
		),
	),

	// Wrong format test (not an array of arrays)
	array(
		'w' => date( 'W' ),
	),
);


foreach ( $tests as $date_query ) {
	// Dump the "date_query" array
	var_dump( $date_query );
	echo '<hr>';

	// Dump the SQL
	$wp_date_query = new WP_Date_Query( $date_query );
	var_dump( $wp_date_query->get_sql() );
	echo '<hr>';

	/*
	// How many posts did we get?
	$query = new WP_Query( array(
		'date_query' => $date_query,
	) );

	var_dump( count( $query->posts ) );
	echo '<hr>';
	/**/
}

?>