Here are the primary commands to test all the feature combinations you've defined:
1. cargo test
Default (`no_std` + `no_alloc`)**
This is the most basic test, running with no features enabled.
2. cargo test --features aes-gcm
**`no_std` + `no_alloc` + `aes-gcm`**
* This tests the `no_std` PQC functions *and* the `no_std` (in-place) AES-GCM functions.
3. cargo test --no-default-features --features "alloc,aes-gcm"
**`no_std` + `alloc` + `aes-gcm`**
* This tests the `alloc`-based functions (like the 1MB message test) and the `alloc`-based AES-GCM functions.
4. cargo test --features "std,aes-gcm"
**`std` + `alloc` + `aes-gcm`**
* This runs the full test suite, including `std`-specific tests like concurrency and the automatic nonce generator.
-----
### ✨ Other Useful `cargo test` Flags
Here are other general commands you can use:
* **Run a specific test:**
If you only want to run `test_aes_gcm_round_trip_in_place`, you can filter by name:
```
cargo test test_aes_gcm_round_trip_in_place
```
* **Show `println!` output:**
To see any output from `println!` statements (which are normally hidden), add the `--nocapture` flag.
```
cargo test -- --nocapture
```
* **Run all tests (all features):**
This command activates *all* available features (`std`, `alloc`, and `aes-gcm`) at once.
```
cargo test --all-features
```
* **Compile tests without running:**
This is useful for a quick check to see if your tests compile in a specific configuration.
```
cargo test --no-run --features "std,aes-gcm"
```