1 /// Unit tests for SVGpreserveAspectRatio
2 #define BOOST_TEST_MODULE misc
3 #include <BoostTestTargetConfig.h>
5 #include "SVGpreserveAspectRatio.hxx"
9 std::ostream& operator<<( std::ostream& strm,
10 const SVGpreserveAspectRatio& ar )
12 strm << "[ align_x=" << ar.alignX() <<
13 ", align_y=" << ar.alignY() <<
14 ", meet=" << ar.meet() <<
20 BOOST_AUTO_TEST_CASE( parse_attribute )
22 using simgear::SVGpreserveAspectRatio;
24 SVGpreserveAspectRatio ar = SVGpreserveAspectRatio::parse("none");
25 BOOST_CHECK( ar.scaleToFill() );
26 BOOST_CHECK( !ar.scaleToFit() );
27 BOOST_CHECK( !ar.scaleToCrop() );
28 BOOST_CHECK_EQUAL( ar.alignX(), SVGpreserveAspectRatio::ALIGN_NONE );
29 BOOST_CHECK_EQUAL( ar.alignY(), SVGpreserveAspectRatio::ALIGN_NONE );
31 SVGpreserveAspectRatio ar_meet = SVGpreserveAspectRatio::parse("none meet");
32 SVGpreserveAspectRatio ar_slice = SVGpreserveAspectRatio::parse("none slice");
34 BOOST_CHECK_EQUAL( ar, ar_meet );
35 BOOST_CHECK_EQUAL( ar, ar_slice );
37 ar_meet = SVGpreserveAspectRatio::parse("xMidYMid meet");
38 BOOST_CHECK( !ar_meet.scaleToFill() );
39 BOOST_CHECK( ar_meet.scaleToFit() );
40 BOOST_CHECK( !ar_meet.scaleToCrop() );
41 BOOST_CHECK_EQUAL( ar_meet.alignX(), SVGpreserveAspectRatio::ALIGN_MID );
42 BOOST_CHECK_EQUAL( ar_meet.alignY(), SVGpreserveAspectRatio::ALIGN_MID );
44 ar_slice = SVGpreserveAspectRatio::parse("xMidYMid slice");
45 BOOST_CHECK( !ar_slice.scaleToFill() );
46 BOOST_CHECK( !ar_slice.scaleToFit() );
47 BOOST_CHECK( ar_slice.scaleToCrop() );
48 BOOST_CHECK_EQUAL( ar_slice.alignX(), SVGpreserveAspectRatio::ALIGN_MID );
49 BOOST_CHECK_EQUAL( ar_slice.alignY(), SVGpreserveAspectRatio::ALIGN_MID );
51 BOOST_CHECK_NE(ar_meet, ar_slice);
53 // defer is ignored, meet is default
54 ar_meet = SVGpreserveAspectRatio::parse("defer xMinYMin");
55 BOOST_CHECK( !ar_meet.scaleToFill() );
56 BOOST_CHECK( ar_meet.scaleToFit() );
57 BOOST_CHECK( !ar_meet.scaleToCrop() );
58 BOOST_CHECK_EQUAL( ar_meet.alignX(), SVGpreserveAspectRatio::ALIGN_MIN );
59 BOOST_CHECK_EQUAL( ar_meet.alignY(), SVGpreserveAspectRatio::ALIGN_MIN );