mirror of
https://github.com/duhanbalci/dreport.git
synced 2026-07-01 18:39:16 +00:00
0.2.0
This commit is contained in:
21
layout-engine/tests/common/mod.rs
Normal file
21
layout-engine/tests/common/mod.rs
Normal file
@@ -0,0 +1,21 @@
|
||||
use dreport_layout::FontData;
|
||||
|
||||
pub fn load_test_fonts() -> Vec<FontData> {
|
||||
let font_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
.join("backend/fonts");
|
||||
|
||||
let mut fonts = Vec::new();
|
||||
for entry in std::fs::read_dir(&font_dir).expect("backend/fonts directory not found") {
|
||||
let entry = entry.unwrap();
|
||||
let path = entry.path();
|
||||
if path.extension().is_some_and(|e| e == "ttf") {
|
||||
let data = std::fs::read(&path).unwrap();
|
||||
if let Some(fd) = FontData::from_bytes(data) {
|
||||
fonts.push(fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
fonts
|
||||
}
|
||||
@@ -8,27 +8,10 @@
|
||||
#![cfg(not(target_arch = "wasm32"))]
|
||||
|
||||
use dreport_core::models::*;
|
||||
use dreport_layout::{compute_layout, FontData, LayoutResult, ResolvedContent};
|
||||
use dreport_layout::{compute_layout, LayoutResult, ResolvedContent};
|
||||
|
||||
fn load_test_fonts() -> Vec<FontData> {
|
||||
let font_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
.join("backend/fonts");
|
||||
|
||||
let mut fonts = Vec::new();
|
||||
for entry in std::fs::read_dir(&font_dir).expect("backend/fonts directory not found") {
|
||||
let entry = entry.unwrap();
|
||||
let path = entry.path();
|
||||
if path.extension().is_some_and(|e| e == "ttf") {
|
||||
let data = std::fs::read(&path).unwrap();
|
||||
if let Some(fd) = FontData::from_bytes(data) {
|
||||
fonts.push(fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
fonts
|
||||
}
|
||||
mod common;
|
||||
use common::load_test_fonts;
|
||||
|
||||
fn base_template() -> Template {
|
||||
Template {
|
||||
|
||||
@@ -1,27 +1,10 @@
|
||||
//! Integration tests for the layout engine's compute_layout() public API.
|
||||
|
||||
use dreport_core::models::*;
|
||||
use dreport_layout::{compute_layout, FontData, LayoutResult};
|
||||
use dreport_layout::{compute_layout, LayoutResult};
|
||||
|
||||
fn load_test_fonts() -> Vec<FontData> {
|
||||
let font_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
.join("backend/fonts");
|
||||
|
||||
let mut fonts = Vec::new();
|
||||
for entry in std::fs::read_dir(&font_dir).expect("backend/fonts directory not found") {
|
||||
let entry = entry.unwrap();
|
||||
let path = entry.path();
|
||||
if path.extension().is_some_and(|e| e == "ttf") {
|
||||
let data = std::fs::read(&path).unwrap();
|
||||
if let Some(fd) = FontData::from_bytes(data) {
|
||||
fonts.push(fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
fonts
|
||||
}
|
||||
mod common;
|
||||
use common::load_test_fonts;
|
||||
|
||||
fn simple_template() -> Template {
|
||||
Template {
|
||||
|
||||
@@ -4,27 +4,10 @@
|
||||
#![cfg(not(target_arch = "wasm32"))]
|
||||
|
||||
use dreport_core::models::*;
|
||||
use dreport_layout::{compute_layout, FontData};
|
||||
use dreport_layout::compute_layout;
|
||||
|
||||
fn load_test_fonts() -> Vec<FontData> {
|
||||
let font_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
.join("backend/fonts");
|
||||
|
||||
let mut fonts = Vec::new();
|
||||
for entry in std::fs::read_dir(&font_dir).expect("backend/fonts directory not found") {
|
||||
let entry = entry.unwrap();
|
||||
let path = entry.path();
|
||||
if path.extension().is_some_and(|e| e == "ttf") {
|
||||
let data = std::fs::read(&path).unwrap();
|
||||
if let Some(fd) = FontData::from_bytes(data) {
|
||||
fonts.push(fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
fonts
|
||||
}
|
||||
mod common;
|
||||
use common::load_test_fonts;
|
||||
|
||||
fn simple_template() -> Template {
|
||||
Template {
|
||||
@@ -320,10 +303,8 @@ fn test_page_break_produces_multiple_pages() {
|
||||
let pdf_bytes = dreport_layout::pdf_render::render_pdf(&layout, &fonts).unwrap();
|
||||
assert!(pdf_bytes.starts_with(b"%PDF"));
|
||||
|
||||
// Write PDF for manual inspection
|
||||
let out_path = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent().unwrap()
|
||||
.join("test_page_break.pdf");
|
||||
// Write PDF to temp dir for manual inspection
|
||||
let out_path = std::env::temp_dir().join("dreport_test_page_break.pdf");
|
||||
std::fs::write(&out_path, &pdf_bytes).unwrap();
|
||||
println!("Wrote: {}", out_path.display());
|
||||
}
|
||||
|
||||
@@ -7,15 +7,19 @@
|
||||
|
||||
#![cfg(not(target_arch = "wasm32"))]
|
||||
|
||||
mod common;
|
||||
|
||||
mod visual {
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
use std::process::Command;
|
||||
|
||||
use dreport_core::models::Template;
|
||||
use dreport_layout::{compute_layout, FontData, ResolvedContent};
|
||||
use dreport_layout::{compute_layout, ResolvedContent};
|
||||
use dreport_layout::pdf_render::render_pdf;
|
||||
|
||||
use crate::common::load_test_fonts;
|
||||
|
||||
fn fixtures_dir() -> std::path::PathBuf {
|
||||
Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures")
|
||||
}
|
||||
@@ -24,26 +28,6 @@ mod visual {
|
||||
Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/snapshots")
|
||||
}
|
||||
|
||||
fn load_test_fonts() -> Vec<FontData> {
|
||||
let font_dir = Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
.join("backend/fonts");
|
||||
|
||||
let mut fonts = Vec::new();
|
||||
for entry in fs::read_dir(&font_dir).expect("backend/fonts directory not found") {
|
||||
let entry = entry.unwrap();
|
||||
let path = entry.path();
|
||||
if path.extension().is_some_and(|e| e == "ttf") {
|
||||
let data = fs::read(&path).unwrap();
|
||||
if let Some(fd) = FontData::from_bytes(data) {
|
||||
fonts.push(fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
fonts
|
||||
}
|
||||
|
||||
fn generate_test_pdf(template_name: &str, data_name: &str) -> Vec<u8> {
|
||||
let template_json = fs::read_to_string(fixtures_dir().join(template_name)).unwrap();
|
||||
let data_json = fs::read_to_string(fixtures_dir().join(data_name)).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user