mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 21:15:48 -06:00
test: add ttf renderer tests
This commit is contained in:
115
tests/ttf.rs
Normal file
115
tests/ttf.rs
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
use pacman::texture::ttf::{TtfAtlas, TtfRenderer};
|
||||||
|
use sdl2::pixels::Color;
|
||||||
|
|
||||||
|
mod common;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn text_width_calculates_correctly_for_empty_string() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer = TtfRenderer::new(1.0);
|
||||||
|
let width = renderer.text_width(&atlas, "");
|
||||||
|
|
||||||
|
assert_eq!(width, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn text_width_calculates_correctly_for_single_character() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer = TtfRenderer::new(1.0);
|
||||||
|
let width = renderer.text_width(&atlas, "A");
|
||||||
|
|
||||||
|
assert!(width > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn text_width_scales_correctly() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer1 = TtfRenderer::new(1.0);
|
||||||
|
let renderer2 = TtfRenderer::new(2.0);
|
||||||
|
|
||||||
|
let width1 = renderer1.text_width(&atlas, "Test");
|
||||||
|
let width2 = renderer2.text_width(&atlas, "Test");
|
||||||
|
|
||||||
|
assert_eq!(width2, width1 * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn text_height_returns_non_zero_for_valid_atlas() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer = TtfRenderer::new(1.0);
|
||||||
|
let height = renderer.text_height(&atlas);
|
||||||
|
|
||||||
|
assert!(height > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn text_height_scales_correctly() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer1 = TtfRenderer::new(1.0);
|
||||||
|
let renderer2 = TtfRenderer::new(2.0);
|
||||||
|
|
||||||
|
let height1 = renderer1.text_height(&atlas);
|
||||||
|
let height2 = renderer2.text_height(&atlas);
|
||||||
|
|
||||||
|
assert_eq!(height2, height1 * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn render_text_handles_empty_string() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer = TtfRenderer::new(1.0);
|
||||||
|
let result = renderer.render_text(&mut canvas, &mut atlas, "", glam::Vec2::new(0.0, 0.0), Color::WHITE);
|
||||||
|
|
||||||
|
assert!(result.is_ok());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn render_text_handles_single_character() {
|
||||||
|
let (mut canvas, texture_creator, _sdl) = common::setup_sdl().unwrap();
|
||||||
|
let _ttf_context = sdl2::ttf::init().unwrap();
|
||||||
|
let font = _ttf_context.load_font("assets/game/TerminalVector.ttf", 16).unwrap();
|
||||||
|
|
||||||
|
let mut atlas = TtfAtlas::new(&texture_creator, &font).unwrap();
|
||||||
|
atlas.populate_atlas(&mut canvas, &texture_creator, &font).unwrap();
|
||||||
|
|
||||||
|
let renderer = TtfRenderer::new(1.0);
|
||||||
|
let result = renderer.render_text(&mut canvas, &mut atlas, "A", glam::Vec2::new(10.0, 10.0), Color::RED);
|
||||||
|
|
||||||
|
assert!(result.is_ok());
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user