# Trimdown Examples & Test Coverage
This document showcases the capabilities of trimdown through practical examples and comprehensive test validation.
## ๐ Test Coverage Summary
**Total: 95 tests passing** โ
| Unit Tests (lib) | 20 | โ
| Config, helpers, errors, formats |
| Compression Helpers | 5 | โ
| Path generation, validation |
| Compression Tests | 13 | โ
| CLI validation, quality bounds |
| Config Tests | 14 | โ
| Serialization, presets |
| Error Handling | 4 | โ
| Error propagation, messages |
| **Examples Tests** | **10** | โ
| **Real-world workflows** |
| Fixtures Tests | 9 | โ
| File validation, magic bytes |
| Integration Tests | 7 | โ
| File type detection |
| Utils Tests | 6 | โ
| File size formatting |
| Video Tests | 7 | โ
| Concat commands, settings |
## ๐ฏ Example Capabilities
### 1. Video Compression (`examples/video_compression.rs`)
Demonstrates video compression with different quality settings:
```rust
// High Quality (CRF 18)
video_crf: 18,
video_max_width: 1920,
// Balanced (CRF 23, default)
video_crf: 23,
video_max_width: 1920,
// Maximum Compression (CRF 28, 720p)
video_crf: 28,
video_max_width: 720,
```
**Test Validation:**
- โ
`test_example_video_compression_high_quality`
- โ
`test_example_video_compression_balanced`
- โ
`test_example_video_compression_720p`
- โ
`test_example_quality_comparison`
### 2. Video Concatenation (`examples/video_concat.rs`)
Shows two concatenation modes:
```rust
// Fast Mode (stream copy, instant)
concat_videos(&inputs, &output, &cli, false)
// Pros: Instant, no quality loss
// Cons: May have seeking issues
// Re-encode Mode (slower, seekable)
concat_videos(&inputs, &output, &cli, true)
// Pros: Fully seekable, proper keyframes
// Cons: Takes longer, re-encodes video
```
**Test Validation:**
- โ
`test_example_video_concat_fast`
- โ
`test_example_video_concat_reencode`
### 3. PDF Compression (`examples/pdf_compression.rs`)
Demonstrates PDF compression with different quality levels:
```rust
// Screen Quality (smallest)
pdf_quality: PdfQuality::Screen,
// Ebook Quality (balanced)
pdf_quality: PdfQuality::Ebook,
// Printer Quality (high)
pdf_quality: PdfQuality::Printer,
```
**Test Validation:**
- โ
`test_example_pdf_compression_screen`
- โ
`test_example_pdf_compression_ebook`
### 4. Office File Compression (`examples/office_compression.rs`)
Shows PowerPoint and Word document compression:
```rust
// Default Settings
quality: 85,
max_width: 1920,
// High Quality
quality: 95,
max_width: 2560,
// Email Optimized
quality: 70,
max_width: 1280,
```
**Test Validation:**
- โ
`test_example_powerpoint_compression`
- โ
`test_example_word_compression`
## ๐งช Test Fixtures
All examples use real test files:
```
tests/fixtures/
โโโ images/
โ โโโ sample.jpg (827B)
โ โโโ sample.png (287B)
โ โโโ sample.webp (106B)
โ โโโ large.jpg (212KB)
โโโ videos/
โ โโโ sample.mp4 (21KB, 1s @ 320x240)
โ โโโ sample2.mp4 (50KB, 2s @ 640x480)
โโโ pdfs/
โ โโโ sample.pdf (584B)
โโโ office/
โโโ sample.pptx (1.5KB)
โโโ sample.docx (915B)
```
## ๐ Running Examples
```bash
# Run individual examples
cargo run --example video_compression
cargo run --example video_concat
cargo run --example pdf_compression
cargo run --example office_compression
# Run all example tests
cargo test --test examples_test
# Run all tests
cargo test
```
## ๐ Test Results
All 95 tests pass successfully, validating:
1. **Core Functionality**
- Video compression with multiple quality settings
- Video concatenation (fast & re-encode modes)
- PDF compression with different quality levels
- Office file compression (PPTX, DOCX)
2. **Edge Cases**
- File existence validation
- Magic byte verification
- Output path generation
- Error handling and recovery
3. **Integration**
- Real file processing
- FFmpeg integration
- Ghostscript PDF compression
- ZIP archive handling for Office files
## ๐ Key Learnings from Examples
### Video Compression
- **CRF 18**: High quality, larger files
- **CRF 23**: Balanced (default), good quality/size ratio
- **CRF 28**: Maximum compression, smaller files
- Resolution reduction (720p) provides significant size savings
### Video Concatenation
- **Fast mode**: Use for quick merges when seeking isn't critical
- **Re-encode mode**: Use when you need full player compatibility
- Re-encoding allows quality/resolution changes during concat
### PDF Compression
- **Screen**: Best for digital viewing only
- **Ebook**: Balanced for digital reading
- **Printer**: Higher quality for printing
- Auto-detection chooses best compression method
### Office Files
- Compression works by extracting, compressing media, and repacking
- Images and videos within documents are compressed separately
- Parallel processing speeds up batch operations
## โจ Example Output
```
=== Video Compression Example ===
Example 1: High Quality Compression
โ High quality compression complete
Example 2: Balanced Compression
โ Balanced compression complete
Example 3: Maximum Compression (720p)
โ Maximum compression complete
All examples completed! Check examples/output/ for results.
```
## ๐ Notes
- All examples include error handling
- Test fixtures are generated programmatically
- Examples demonstrate real-world use cases
- Integration tests validate actual file processing
- Examples can be run independently or as a suite