void TestAngular() { Radian const rad( 1. ); Assert( fequal( rad.GetValue(), 1. ) ); Assert( fequal( rad.GetConvertedValue(), 1. ) ); Assert( fequal( rad.GetFactor(), 1. ) ); AngularSecond const second( 1. ); Assert( fequal( second.GetValue(), 1. ) ); Assert( fequal( second.GetConvertedValue(), second.GetFactor() ) ); Degree const degree( 1. ); Assert( fequal( degree.GetValue(), 1. ) ); Assert( fequal( degree.GetConvertedValue(), degree.GetFactor() ) ); Radian const pi( 3.1415926535897932384626433832795 ); Degree const unit_180_degree = pi; AngularMinute const unit_10800_minute = pi; Assert( fequal( pi.sin(), 0. ) ); Assert( fequal( pi.cos(), -1. ) ); Assert( fequal( pi.tan(), 0. ) ); Assert( fequal( unit_180_degree.GetValue(), 180. ) ); Assert( fequal( unit_180_degree.sin(), 0. ) ); Assert( fequal( unit_180_degree.cos(), -1. ) ); Assert( fequal( unit_180_degree.tan(), 0. ) ); Assert( fequal( unit_10800_minute.GetValue(), 10800. ) ); Assert( fequal( unit_10800_minute.sin(), 0. ) ); Assert( fequal( unit_10800_minute.cos(), -1. ) ); Assert( fequal( unit_10800_minute.tan(), 0. ) ); Assert( Degree( 360. ) == Grade( 400. ) ); Assert( Degree( 1.) == AngularMinute( 60. ) ); Assert( Degree( 1.) == AngularSecond( 3600. ) ); Degree toNormalize( 0. ); toNormalize.Normalize(); Assert( fequal( toNormalize.GetValue(), 0. ) ); toNormalize = 360.; toNormalize.Normalize(); Assert( fequal( toNormalize.GetValue(), 0. ) ); toNormalize = -540.; toNormalize.Normalize(); Assert( fequal( toNormalize.GetValue(), 180. ) ); Assert( fequal( toNormalize.sin(), 0. ) ); Assert( fequal( toNormalize.cos(), -1. ) ); Assert( fequal( toNormalize.tan(), 0. ) ); OutputLine( Radian::Suffix() ); OutputLine( Degree::Suffix() ); OutputLine( Grade::Suffix() ); OutputLine( AngularMinute::Suffix() ); OutputLine( AngularSecond::Suffix() ); }