trimdown 0.1.5

File compression CLI tool for PowerPoint, PDF, Video, and Word documents
Documentation
# 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** โœ…

| Test Suite | Tests | Status | Coverage |
|------------|-------|--------|----------|
| 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