use super::*;
use crate::assert_hex_eq;
use read_fonts::test_data::gpos as test_data;
#[test]
fn singleposformat1() {
let table = SinglePosFormat1::read(test_data::SINGLEPOSFORMAT1).unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::SINGLEPOSFORMAT1.as_ref(), &dumped);
}
#[test]
fn singleposformat2() {
let table = SinglePosFormat2::read(test_data::SINGLEPOSFORMAT2).unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::SINGLEPOSFORMAT2.as_ref(), &dumped);
}
#[test]
fn pairposformat1() {
let table = PairPosFormat1::read(test_data::PAIRPOSFORMAT1).unwrap();
let _dumped = crate::write::dump_table(&table).unwrap();
}
#[test]
fn pairposformat2() {
let table = PairPosFormat2::read(test_data::PAIRPOSFORMAT2).unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::PAIRPOSFORMAT2.as_ref(), &dumped);
}
#[test]
fn cursiveposformat1() {
let table = CursivePosFormat1::read(test_data::CURSIVEPOSFORMAT1).unwrap();
let _dumped = crate::write::dump_table(&table).unwrap();
}
#[test]
fn markbaseposformat1() {
let table = MarkBasePosFormat1::read(test_data::MARKBASEPOSFORMAT1).unwrap();
assert_eq!(table.mark_array.mark_records.len(), 2);
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::MARKBASEPOSFORMAT1.as_ref(), &dumped);
}
#[test]
fn markligposformat1() {
let table = MarkLigPosFormat1::read(test_data::MARKLIGPOSFORMAT1).unwrap();
assert_eq!(table.mark_array.mark_records.len(), 2);
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::MARKLIGPOSFORMAT1.as_ref(), &dumped);
}
#[test]
fn markmarkposformat1() {
let table = MarkMarkPosFormat1::read(test_data::MARKMARKPOSFORMAT1).unwrap();
assert_eq!(table.mark2_array.mark2_records.len(), 1);
let record = &table.mark2_array.mark2_records[0];
assert_eq!(record.mark2_anchors.len(), 1);
let anchor = &record.mark2_anchors[0].as_ref().unwrap();
let anchor = match anchor {
AnchorTable::Format1(table) => table,
_ => panic!("wrong table format"),
};
assert_eq!(anchor.x_coordinate, 221);
assert_eq!(anchor.y_coordinate, 301);
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::MARKMARKPOSFORMAT1.as_ref(), &dumped);
}
#[test]
fn contextualposformat1() {
let table =
crate::tables::layout::SequenceContextFormat1::read(test_data::CONTEXTUALPOSFORMAT1)
.unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::CONTEXTUALPOSFORMAT1.as_ref(), &dumped);
}
#[test]
fn contextualposformat2() {
let table =
crate::tables::layout::SequenceContextFormat2::read(test_data::CONTEXTUALPOSFORMAT2)
.unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::CONTEXTUALPOSFORMAT2.as_ref(), &dumped);
}
#[test]
fn contextualposformat3() {
let table =
crate::tables::layout::SequenceContextFormat3::read(test_data::CONTEXTUALPOSFORMAT3)
.unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::CONTEXTUALPOSFORMAT3.as_ref(), &dumped);
}
#[test]
fn anchorformat1() {
let table = AnchorFormat1::read(test_data::ANCHORFORMAT1).unwrap();
assert_eq!(table.x_coordinate, 189);
assert_eq!(table.y_coordinate, -103);
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::ANCHORFORMAT1.as_ref(), &dumped);
}
#[test]
fn anchorformat2() {
let table = AnchorFormat2::read(test_data::ANCHORFORMAT2).unwrap();
let dumped = crate::write::dump_table(&table).unwrap();
assert_hex_eq!(test_data::ANCHORFORMAT2.as_ref(), &dumped);
}
#[test]
fn no_write_versioned_fields() {
let mut gpos = Gpos::default();
let dumped = crate::write::dump_table(&gpos).unwrap();
assert_eq!(dumped.len(), 12);
gpos.feature_variations.set(FeatureVariations::default());
let dumped = crate::write::dump_table(&gpos).unwrap();
assert_eq!(dumped.len(), 12 + 12); }