#[ cfg( feature = "rate_limiting" ) ]
mod rate_limiting_execution_tests
{
use api_gemini::client::Client;
#[ tokio::test ]
async fn test_rate_limiting_configuration_builder()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.rate_limit_requests_per_second( 1.0 )
.rate_limit_bucket_size( 10 )
.enable_rate_limiting_metrics( true )
.build()
.expect( "Failed to build client" );
assert!( true, "Client with rate limiting configuration built successfully" );
}
#[ tokio::test ]
async fn test_rate_limiting_metrics_configuration()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.rate_limit_requests_per_second( 1.67 )
.enable_rate_limiting_metrics( true )
.build()
.expect( "Failed to build client" );
assert!( true, "Client with rate limiting metrics configuration built successfully" );
}
#[ tokio::test ]
async fn test_requests_per_second_configuration()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.rate_limit_requests_per_second( 2.0 )
.build()
.expect( "Failed to build client" );
assert!( true, "Client with requests per second configuration built successfully" );
}
#[ tokio::test ]
async fn test_bucket_size_configuration()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.rate_limit_requests_per_second( 1.0 )
.rate_limit_bucket_size( 5 )
.build()
.expect( "Failed to build client" );
assert!( true, "Client with bucket size configuration built successfully" );
}
#[ tokio::test ]
async fn test_algorithm_configuration()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.rate_limit_requests_per_second( 1.0 )
.rate_limit_algorithm( "token_bucket" )
.build()
.expect( "Failed to build client" );
assert!( true, "Client with algorithm configuration built successfully" );
}
#[ tokio::test ]
async fn test_comprehensive_rate_limiting_configuration()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.rate_limit_requests_per_second( 5.0 )
.rate_limit_bucket_size( 20 )
.rate_limit_algorithm( "token_bucket" )
.enable_rate_limiting_metrics( true )
.build()
.expect( "Failed to build client" );
assert!( true, "Client with comprehensive rate limiting configuration built successfully" );
}
}
#[ cfg( not( feature = "rate_limiting" ) ) ]
mod rate_limiting_disabled_tests
{
use api_gemini::client::Client;
#[ tokio::test ]
async fn test_no_rate_limiting_logic_when_feature_disabled()
{
let _client = Client::builder()
.api_key( "test-key".to_string() )
.build()
.expect( "Failed to build client" );
assert!( true, "Client built successfully without rate limiting feature" );
}
}