89 lines
3.1 KiB
Rust
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);
|
|
}
|