Files

89 lines
3.1 KiB
Rust

use ttf_parser::trak::Table;
use crate::{convert, Unit::*};
#[test]
fn empty() {
let data = convert(&[
Fixed(1.0), // version
UInt16(0), // format
UInt16(0), // horizontal data offset
UInt16(0), // vertical data offset
UInt16(0), // padding
]);
let table = Table::parse(&data).unwrap();
assert_eq!(table.horizontal.tracks.len(), 0);
assert_eq!(table.horizontal.sizes.len(), 0);
assert_eq!(table.vertical.tracks.len(), 0);
assert_eq!(table.vertical.sizes.len(), 0);
}
#[test]
fn basic() {
let data = convert(&[
Fixed(1.0), // version
UInt16(0), // format
UInt16(12), // horizontal data offset
UInt16(0), // vertical data offset
UInt16(0), // padding
// TrackData
UInt16(3), // number of tracks
UInt16(2), // number of sizes
UInt32(44), // offset to size table
// TrackTableEntry [0]
Fixed(-1.0), // track
UInt16(256), // name index
UInt16(52), // offset of the two per-size tracking values
// TrackTableEntry [1]
Fixed(0.0), // track
UInt16(258), // name index
UInt16(60), // offset of the two per-size tracking values
// TrackTableEntry [2]
Fixed(1.0), // track
UInt16(257), // name index
UInt16(56), // offset of the two per-size tracking values
// Size [0]
Fixed(12.0), // points
// Size [1]
Fixed(24.0), // points
// Per-size tracking values.
Int16(-15),
Int16(-7),
Int16(50),
Int16(20),
Int16(0),
Int16(0),
]);
let table = Table::parse(&data).unwrap();
assert_eq!(table.horizontal.tracks.len(), 3);
assert_eq!(table.horizontal.tracks.get(0).unwrap().value, -1.0);
assert_eq!(table.horizontal.tracks.get(1).unwrap().value, 0.0);
assert_eq!(table.horizontal.tracks.get(2).unwrap().value, 1.0);
assert_eq!(table.horizontal.tracks.get(0).unwrap().name_index, 256);
assert_eq!(table.horizontal.tracks.get(1).unwrap().name_index, 258);
assert_eq!(table.horizontal.tracks.get(2).unwrap().name_index, 257);
assert_eq!(table.horizontal.tracks.get(0).unwrap().values.len(), 2);
assert_eq!(table.horizontal.tracks.get(0).unwrap().values.get(0).unwrap(), -15);
assert_eq!(table.horizontal.tracks.get(0).unwrap().values.get(1).unwrap(), -7);
assert_eq!(table.horizontal.tracks.get(1).unwrap().values.len(), 2);
assert_eq!(table.horizontal.tracks.get(1).unwrap().values.get(0).unwrap(), 0);
assert_eq!(table.horizontal.tracks.get(1).unwrap().values.get(1).unwrap(), 0);
assert_eq!(table.horizontal.tracks.get(2).unwrap().values.len(), 2);
assert_eq!(table.horizontal.tracks.get(2).unwrap().values.get(0).unwrap(), 50);
assert_eq!(table.horizontal.tracks.get(2).unwrap().values.get(1).unwrap(), 20);
assert_eq!(table.horizontal.sizes.len(), 2);
assert_eq!(table.horizontal.sizes.get(0).unwrap().0, 12.0);
assert_eq!(table.horizontal.sizes.get(1).unwrap().0, 24.0);
assert_eq!(table.vertical.tracks.len(), 0);
assert_eq!(table.vertical.sizes.len(), 0);
}