use plotpy::{Plot, StrError, Text};
use std::fs::File;
use std::io::{BufRead, BufReader};
use std::path::Path;
const OUT_DIR: &str = "/tmp/plotpy/integ_tests";
#[test]
fn test_text() -> Result<(), StrError> {
let mut text = Text::new();
text.set_color("blue")
.set_align_horizontal("center")
.set_align_vertical("center")
.set_fontsize(40.0)
.set_rotation(45.0)
.set_bbox(true)
.set_bbox_facecolor("pink")
.set_bbox_edgecolor("black")
.set_bbox_alpha(0.3)
.set_bbox_style("sawtooth,pad=0.3,tooth_size=0.1")
.set_extra("fontweight=10");
text.draw(0.5, 0.5, "message: $\\frac{\\alpha}{\\beta} = \\gamma$");
let mut plot = Plot::new();
plot.add(&text);
let path = Path::new(OUT_DIR).join("integ_text.svg");
plot.set_show_errors(true).save(&path)?;
let file = File::open(path).map_err(|_| "cannot open file")?;
let buffered = BufReader::new(file);
let lines_iter = buffered.lines();
assert!(lines_iter.count() > 560);
Ok(())
}
#[test]
fn test_text_negative_rotation() -> Result<(), StrError> {
let mut text = Text::new();
text.set_align_horizontal("center")
.set_align_vertical("center")
.set_fontsize(20.0)
.set_rotation(-30.0)
.draw(0.5, 0.5, "NEGATIVE ROTATION");
let mut plot = Plot::new();
plot.add(&text).set_range(0.0, 1.0, 0.0, 1.0);
let path = Path::new(OUT_DIR).join("integ_text_negative_rotation.svg");
plot.set_show_errors(true).save(&path)?;
let file = File::open(path).map_err(|_| "cannot open file")?;
let buffered = BufReader::new(file);
let lines_iter = buffered.lines();
let n = lines_iter.count();
assert!(n > 570 && n < 620);
Ok(())
}
#[test]
fn test_text_3d() -> Result<(), StrError> {
let mut text = Text::new();
text.set_color("blue")
.set_align_horizontal("center")
.set_align_vertical("center")
.set_fontsize(32.0)
.set_bbox(true)
.set_bbox_facecolor("pink")
.set_bbox_edgecolor("black")
.set_bbox_alpha(0.3);
text.draw_3d(0.5, 0.5, 0.5, "message: $\\frac{\\alpha}{\\beta} = \\gamma$");
let mut plot = Plot::new();
plot.add(&text);
let path = Path::new(OUT_DIR).join("integ_text_3d.svg");
plot.save(&path)?;
let file = File::open(path).map_err(|_| "cannot open file")?;
let buffered = BufReader::new(file);
let lines_iter = buffered.lines();
assert!(lines_iter.count() > 800);
Ok(())
}