summaryrefslogtreecommitdiff
path: root/test/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'test/README.md')
-rw-r--r--test/README.md168
1 files changed, 168 insertions, 0 deletions
diff --git a/test/README.md b/test/README.md
new file mode 100644
index 0000000..3f77c6b
--- /dev/null
+++ b/test/README.md
@@ -0,0 +1,168 @@
+# Framebuffer Graphics Library Testing
+
+This directory contains Docker-based testing setup for your Linux framebuffer graphics library. Test your programs in an isolated environment without affecting your main system.
+
+## Quick Start
+
+1. **Setup** (one-time):
+ ```bash
+ chmod +x test.sh
+ ./test.sh build
+ ```
+
+2. **Run your tests**:
+ ```bash
+ ./test.sh run ./your_program
+ ```
+
+## Prerequisites
+
+- Docker installed and running
+- Your compiled graphics programs in this directory
+
+## Files
+
+- `Dockerfile` - Container configuration with framebuffer support
+- `test.sh` - Management script for Docker operations
+- Your compiled programs and library files
+
+## Usage
+
+### Build Test Environment
+```bash
+./test.sh build
+```
+Creates the Docker image with virtual framebuffer support.
+
+### Run Programs
+```bash
+# Basic usage
+./test.sh run ./my_graphics_test
+
+# With arguments
+./test.sh run ./demo --width 800 --height 600
+
+# Full path
+./test.sh run /app/bin/test_suite
+```
+
+### Management Commands
+```bash
+./test.sh stop # Stop any running test
+./test.sh clean # Remove container and image
+./test.sh rebuild # Clean build from scratch
+./test.sh shell # Interactive debugging shell
+./test.sh help # Show all commands
+```
+
+## How It Works
+
+1. **Virtual Framebuffer**: Uses `xvfb` to create a virtual display
+2. **Isolated Environment**: Your programs run in Ubuntu container
+3. **Live Code**: Your directory is mounted, so code changes are immediate
+4. **No Graphics Hardware**: No GPU drivers or display required
+
+## Directory Structure
+
+```
+your-project/
+├── Dockerfile # Container setup
+├── test.sh # Test runner script
+├── README.md # This file
+├── your_library.so # Your graphics library
+├── test_program1 # Compiled test program
+├── test_program2 # Another test program
+└── src/ # Source code (optional)
+```
+
+## Testing Workflow
+
+1. **Develop**: Write and compile your graphics programs
+2. **Test**: Run `./test.sh run ./program_name`
+3. **Debug**: Use `./test.sh shell` for interactive debugging
+4. **Iterate**: Make changes and test again (no rebuild needed)
+
+## Troubleshooting
+
+### Build Issues
+```bash
+./test.sh rebuild # Clean rebuild
+```
+
+### Permission Problems
+```bash
+chmod +x test.sh # Make script executable
+chmod +x ./your_program # Make test programs executable
+```
+
+### Container Won't Stop
+```bash
+docker kill fb-test-runner # Force stop
+./test.sh clean # Clean everything
+```
+
+### Debug Inside Container
+```bash
+./test.sh shell
+# Now you're inside the container
+ls -la /app
+./your_program --debug
+exit
+```
+
+## Advanced Usage
+
+### Custom Framebuffer Size
+Modify the Dockerfile to set specific display dimensions:
+```dockerfile
+ENV DISPLAY=:99
+ENV XVFB_RES=1920x1080x24
+```
+
+### Capture Screenshots
+Add to your test programs:
+```bash
+# Inside container
+import -window root screenshot.png
+```
+
+### Multiple Test Runs
+```bash
+for test in test_*.exe; do
+ ./test.sh run ./$test
+done
+```
+
+## Performance Notes
+
+- **Fast startup**: Containers start instantly
+- **Low overhead**: Minimal resource usage
+- **Quick iteration**: Code changes don't require rebuilds
+- **Parallel testing**: Can run multiple containers
+
+## Integration with CI/CD
+
+Add to your build pipeline:
+```yaml
+# Example GitHub Actions
+- name: Test Graphics Library
+ run: |
+ chmod +x test.sh
+ ./test.sh build
+ ./test.sh run ./test_suite
+```
+
+## Cleanup
+
+When done testing:
+```bash
+./test.sh clean # Remove everything
+# Or just let Docker clean up automatically
+```
+
+## Tips
+
+- Keep your test programs in the main directory for easy access
+- Use descriptive names for test programs: `test_rendering.exe`, `demo_shapes.exe`
+- The container has full Ubuntu tools available for debugging
+- Virtual framebuffer works with most graphics operations your library performs