pdftract/crates/pdftract-libpdftract/tests/test_debug.c
jedarden 9b5fbc9b5e feat(pdftract-bf-2y2rp): implement lazy stream decoding for PDF extraction
- Add decode_page_content_streams() function for per-page lazy decode
- Update extract_page_from_dict() to support lazy stream decoding
- Modify extract_pdf() and extract_pdf_ndjson() to enable lazy decoding
- Fix borrow checker issue in LazyPageIter::next()

This ensures content streams are decoded lazily per page and dropped
immediately after processing, keeping peak RSS flat across page count.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 12:30:26 -04:00

86 lines
2.6 KiB
C

#include <stdio.h>
#include <string.h>
#include "../include/pdftract.h"
int main() {
printf("=== Testing libpdftract ===\n\n");
// Test version
const char *version = pdftract_version();
printf("Version: %s\n", version);
// Test ABI version
uint32_t abi = pdftract_abi_version();
printf("ABI Version: 0x%08x\n", abi);
// Test free NULL
pdftract_free(NULL);
printf("free(NULL): OK\n");
// Test hash with nonexistent file
printf("\nTesting nonexistent file:\n");
char *result = pdftract_hash("/nonexistent/file.pdf");
if (result == NULL) {
printf(" Result: NULL\n");
const char *err = pdftract_last_error();
if (err) printf(" Error: %s\n", err);
} else {
printf(" Result: %s\n", result);
pdftract_free(result);
}
// Test with valid PDF
printf("\nTesting valid-minimal.pdf:\n");
result = pdftract_hash("/home/coding/pdftract/tests/fixtures/valid-minimal.pdf");
if (result == NULL) {
printf(" Result: NULL\n");
const char *err = pdftract_last_error();
if (err) printf(" Error: %s\n", err);
} else {
printf(" Result: %s\n", result);
if (strstr(result, "\"error\"") == NULL) {
printf(" SUCCESS: Got valid response\n");
} else {
printf(" Got error response\n");
}
pdftract_free(result);
}
// Test extract_text
printf("\nTesting extract_text:\n");
result = pdftract_extract_text("/home/coding/pdftract/tests/fixtures/valid-minimal.pdf", "{}");
if (result == NULL) {
printf(" Result: NULL\n");
const char *err = pdftract_last_error();
if (err) printf(" Error: %s\n", err);
} else {
printf(" Result: %s\n", result);
pdftract_free(result);
}
// Test classify
printf("\nTesting classify:\n");
result = pdftract_classify("/home/coding/pdftract/tests/fixtures/valid-minimal.pdf");
if (result == NULL) {
printf(" Result: NULL\n");
const char *err = pdftract_last_error();
if (err) printf(" Error: %s\n", err);
} else {
printf(" Result: %s\n", result);
pdftract_free(result);
}
// Test get_metadata
printf("\nTesting get_metadata:\n");
result = pdftract_get_metadata("/home/coding/pdftract/tests/fixtures/valid-minimal.pdf", "{}");
if (result == NULL) {
printf(" Result: NULL\n");
const char *err = pdftract_last_error();
if (err) printf(" Error: %s\n", err);
} else {
printf(" Result: %s\n", result);
pdftract_free(result);
}
return 0;
}