mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 03:15:48 -06:00
116 lines
4.1 KiB
Rust
116 lines
4.1 KiB
Rust
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());
|
|
}
|