]> git.mxchange.org Git - simgear.git/blob - simgear/misc/SVGpreserveAspectRatio_test.cxx
Fix VS2010 lack of fminf
[simgear.git] / simgear / misc / SVGpreserveAspectRatio_test.cxx
1 /// Unit tests for SVGpreserveAspectRatio
2 #define BOOST_TEST_MODULE misc
3 #include <BoostTestTargetConfig.h>
4
5 #include "SVGpreserveAspectRatio.hxx"
6
7 namespace simgear
8 {
9   std::ostream& operator<<( std::ostream& strm,
10                             const SVGpreserveAspectRatio& ar )
11   {
12     strm << "[ align_x=" << ar.alignX() <<
13             ", align_y=" << ar.alignY() <<
14             ", meet=" << ar.meet() <<
15             "]";
16     return strm;
17   }
18 }
19
20 BOOST_AUTO_TEST_CASE( parse_attribute )
21 {
22   using simgear::SVGpreserveAspectRatio;
23
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 );
30
31   SVGpreserveAspectRatio ar_meet = SVGpreserveAspectRatio::parse("none meet");
32   SVGpreserveAspectRatio ar_slice = SVGpreserveAspectRatio::parse("none slice");
33
34   BOOST_CHECK_EQUAL( ar, ar_meet );
35   BOOST_CHECK_EQUAL( ar, ar_slice );
36
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 );
43
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 );
50
51   BOOST_CHECK_NE(ar_meet, ar_slice);
52
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 );
60 }