rswarm 0.1.7

A Rust implementation of the Swarm framework
Documentation
# Tests Needed

## 1. Swarm Struct Tests

### 1.1 Initialization Tests
<!-- - **Valid Initialization**  
  Test creating a Swarm instance with valid parameters.  
  Verify that all fields are correctly set.

- **Missing API Key**  
  Test initializing Swarm without an API key.  
  Expect an error (SwarmError::ConfigError).

- **Invalid Configuration**  
  Test initializing Swarm with invalid configurations (e.g., negative timeouts).  
  Expect appropriate error handling. -->

### 1.2 Builder Pattern Tests
<!-- - **Builder Method Combinations**  
  Test all combinations of builder methods (e.g., with_api_key, with_api_url).  
  Verify that the final Swarm instance reflects the configurations.

- **Default Values**  
  Test that default values are set correctly when not specified. -->

## 2. Agent Struct Tests

### 2.1 Initialization Tests
<!-- - **Valid Agent Creation**  
  Test creating an Agent with all required fields.  
  Verify fields like name, model, instructions. -->

<!-- - **Missing Required Fields**  
  Test creating an Agent without a name or model.  
  Expect a panic or error as per implementation. -->

<!-- - **Invalid Model Prefix**  
  Test initializing an Agent with an invalid model prefix.  
  Expect validation errors. -->

### 2.2 Instruction Variants
<!-- - **Text Instructions**  
  Test Instructions::Text variant with valid and empty strings. -->

<!-- - **Function Instructions**  
  Test Instructions::Function variant with valid functions.  
  Verify that functions are callable and return expected results. -->

## 3. Swarm::run() Method Tests

### 3.1 Basic Execution
- **Simple Conversation**  
  Test running a conversation with a valid Agent and a simple message.  
  Verify that a valid Response is returned.

- **Context Variable Substitution**  
  Test that context variables are correctly substituted in messages and instructions.  
  Use placeholders in instructions and verify substitution.

### 3.2 Loop Control
- **Max Iterations Respected**  
  Set max_loop_iterations to a specific number.  
  Verify that the conversation stops after the specified number of iterations.

- **Infinite Loop Prevention**  
  Test scenarios where agents might loop indefinitely.  
  Ensure that max_loop_iterations prevents infinite loops.

### 3.3 Error Handling
- **Invalid Agent**  
  Run Swarm::run() with an agent missing required fields.  
  Expect SwarmError::ValidationError.

- **Empty Messages**  
  Test running with an empty messages vector.  
  Verify expected behavior (e.g., starting a new conversation).

## 4. Function Handling Tests

### 4.1 Function Calls
- **Valid Function Call Handling**  
  Test agents making function calls.  
  Verify that the specified function is called with correct arguments.

- **Function Call Errors**  
  Simulate a function call that results in an error.  
  Ensure the error is propagated and handled gracefully.

### 4.2 Parallel Tool Calls
- **Parallel Execution**  
  Test agents with parallel_tool_calls set to true.  
  Verify that functions are called in parallel and results are correctly handled.

- **Race Conditions**  
  Ensure that shared resources are thread-safe during parallel calls.

## 5. API Interaction Tests

### 5.1 Chat Completion
- **Successful API Call**  
  Mock a successful chat completion API response.  
  Verify that the response is correctly parsed and used.

- **API Error Responses**  
  Simulate API responses with various HTTP status codes (e.g., 400, 500).  
  Verify that SwarmError::ApiError is returned with appropriate messages.

- **Timeout Handling**  
  Simulate a timeout from the API.  
  Ensure the timeout is handled as per request_timeout configuration.

### 5.2 Streaming Chat Completion
- **Successful Streaming**  
  Test streaming responses from the API.  
  Verify that the assembled message matches the expected content.

- **Incomplete Streams**  
  Simulate an incomplete stream (e.g., connection drops).  
  Ensure that the error is handled and appropriate messages are logged or returned.

## 6. Message Struct Tests

### 6.1 Message Variants
- **User Message**  
  Test Message instances with role set to "user".  
  Include tests with and without content.

- **Assistant Message**  
  Test Message instances with role set to "assistant".  
  Verify content and optional fields.

- **Function Message**  
  Test messages representing function calls.  
  Ensure function_call is correctly populated.

### 6.2 Serialization and Deserialization
- **JSON Serialization**  
  Verify that messages serialize to JSON correctly.  
  Test with different combinations of fields.

- **JSON Deserialization**  
  Test deserializing JSON strings back into Message instances.  
  Include malformed JSON to test error handling.

## 7. Context Variables Tests

### 7.1 Variable Management
- **Adding Variables**  
  Test adding new context variables.  
  Verify that they are stored and retrievable.

- **Updating Variables**  
  Test updating existing variables.  
  Ensure that the latest value is used in substitutions.

### 7.2 Variable Substitution
- **Instruction Substitution**  
  Test that placeholders in instructions are replaced with context variable values.  
  Include cases with missing variables to test default behaviors.

- **Message Substitution**  
  Ensure messages sent to the agent have context variables correctly substituted.

## 8. Error Handling Tests

### 8.1 SwarmError Variants
- **Validation Error**  
  Trigger validation errors (e.g., invalid configurations).  
  Verify that SwarmError::ValidationError is returned.

- **API Error**  
  Simulate API failures.  
  Check for SwarmError::ApiError with correct details.

- **Agent Not Found**  
  Attempt to retrieve an agent that does not exist.  
  Expect SwarmError::AgentNotFoundError.

### 8.2 Robust Error Messages
- **Error Details**  
  Ensure error messages provide enough context for debugging.  
  Test error formatting and information content.

## 9. Configuration Tests

### 9.1 SwarmConfig Defaults
- **Default Values**  
  Test that default configurations are set as expected when not specified.

### 9.2 Custom Configurations
- **Custom Timeouts**  
  Set custom request_timeout and connect_timeout.  
  Verify that these values are respected during execution.

- **Invalid Configurations**  
  Test negative timeouts or invalid values.  
  Expect validation errors.

## 10. Concurrency and Parallelism Tests

### 10.1 Thread Safety
- **Concurrent Runs**  
  Run multiple instances of Swarm::run() concurrently.  
  Ensure that there are no race conditions or shared state issues.

- **Shared Resources**  
  Test access to shared resources (if any) across threads.  
  Verify proper synchronization mechanisms are in place.

## 11. Serialization and Deserialization Tests

### 11.1 Agent Serialization
- **Serialize Agents**  
  Test serializing Agent instances to JSON or another format.  
  Verify that all fields are correctly represented.

- **Deserialize Agents**  
  Test deserializing JSON back into Agent instances.  
  Include tests for missing or extra fields.

## 12. Utilities and Helper Functions Tests

### 12.1 Regex Utilities
- **Pattern Matching**  
  Test any regex utilities used for parsing or validation.  
  Include tests for expected matches and non-matches.

### 12.2 Helper Functions
- **Utility Functionality**  
  Test any helper functions for correctness.  
  Ensure edge cases are handled.

## 13. Integration Tests

### 13.1 End-to-End Scenarios
- **Single Agent Conversation**  
  Simulate a complete conversation with an agent, including multiple turns.  
  Verify the flow and final output.

- **Agent Collaboration**  
  If supported, test interactions between multiple agents.  
  Verify that messages are correctly routed and processed.

### 13.2 External Interactions
- **Real API Calls**  
  (Use with caution) Test interactions with the real API to verify integration.  
  Ensure API keys and sensitive data are securely managed.

## 14. Performance Tests

### 14.1 Benchmark Critical Paths
- **Function Execution Time**  
  Measure the execution time of critical functions.  
  Ensure performance is within acceptable limits.

- **Resource Usage**  
  Monitor memory and CPU usage during intensive tasks.

## 15. Edge Case Tests

### 15.1 Empty and Null Inputs
- **Empty Strings**  
  Test functions with empty string inputs.  
  Verify that they handle the inputs gracefully.

- **Null Values**  
  Test optional fields with None values.  
  Ensure defaults are applied or errors are raised as appropriate.

### 15.2 Large Inputs
- **Large Messages**  
  Test handling of very long messages or instructions.  
  Verify that the system does not crash or behave unexpectedly.

- **Maximum Limits**  
  Test inputs at the maximum allowed limit (e.g., token counts).  
  Ensure proper handling and error messaging if limits are exceeded.

## 16. Security Tests

### 16.1 Input Sanitization
- **Injection Attacks**  
  Test for vulnerabilities to injection attacks (e.g., code injection via inputs).  
  Ensure inputs are sanitized properly.

### 16.2 Sensitive Data Handling
- **Error Messages**  
  Verify that error messages do not leak sensitive information.  
  Test with simulated failures to check error output.

## 17. Concurrency Tests

### 17.1 Async/Await Consistency
- **Await Points**  
  Ensure that async functions correctly await and handle asynchronous operations.

- **Deadlocks**  
  Test for potential deadlocks in asynchronous code.

## 18. Documentation Tests

### 18.1 Code Examples
- **Compile Tests**  
  Use doctest to verify that code examples in documentation compile and run correctly.

- **Example Accuracy**  
  Ensure that examples produce the expected results.

## 19. Compatibility Tests

### 19.1 Rust Version Compatibility
- **Stable and Beta Releases**  
  Test the library against different versions of Rust to ensure compatibility.

- **Edition Support**  
  Verify that the code works with the specified Rust edition (e.g., 2018, 2021).

## 20. Mocking External Dependencies

### 20.1 HTTP Responses
- **Various Status Codes**  
  Mock responses with different HTTP status codes to test error handling.

- **Delayed Responses**  
  Simulate network delays to test timeout configurations.

- **Malformed Responses**  
  Provide invalid or corrupted data to test robustness against bad data.
---