@Test
public void testGeneralizedTimeStringMatch() throws Exception
{
MatchingRule mr1 = schemaManager.lookupMatchingRuleRegistry( "generalizedTimeMatch" );
assertEquals( GeneralizedTimeNormalizer.class.getName(), mr1.getNormalizer().getClass().getName() );
String normalized = mr1.getNormalizer().normalize( "2010031415Z" );
assertTrue( "20100314150000.000Z".equals( normalized ) || "20100314153000.000Z".equals( normalized )
|| "20100314154500.000Z".equals( normalized ) );
assertEquals( "20100314133102.003Z", mr1.getNormalizer().normalize( "20100314150102.003+0130" ) );
assertEquals( GeneralizedTimeComparator.class.getName(), mr1.getLdapComparator().getClass().getName() );
// Deal with +HH:30 and +HH:45 TZ
int compare1 = mr1.getLdapComparator().compare( "2010031415Z", "20100314150000.000+0000" );
int compare2 = mr1.getLdapComparator().compare( "2010031415Z", "20100314153000.000+0000" );
int compare3 = mr1.getLdapComparator().compare( "2010031415Z", "20100314154500.000+0000" );
assertTrue( ( compare1 == 0 ) || ( compare2 == 0 ) || ( compare3 == 0 ) );
MatchingRule mr2 = schemaManager.lookupMatchingRuleRegistry( "generalizedTimeOrderingMatch" );
assertEquals( GeneralizedTimeNormalizer.class.getName(), mr2.getNormalizer().getClass().getName() );
normalized = mr2.getNormalizer().normalize( "2010031415Z" );
assertTrue( "20100314150000.000Z".equals( normalized ) || "20100314153000.000Z".equals( normalized )
|| "20100314154500.000Z".equals( normalized ) );
assertEquals( "20100314133102.003Z", mr2.getNormalizer().normalize( "20100314150102.003+0130" ) );
assertEquals( GeneralizedTimeComparator.class.getName(), mr2.getLdapComparator().getClass().getName() );
// Deal with +HH:30 and +HH:45 TZ
compare1 = mr2.getLdapComparator().compare( "2010031415Z", "20100314150000.000+0000" );
compare2 = mr2.getLdapComparator().compare( "2010031415Z", "20100314153000.000+0000" );
compare3 = mr2.getLdapComparator().compare( "2010031415Z", "20100314154500.000+0000" );
assertTrue( ( compare1 == 0 ) || ( compare2 == 0 ) || ( compare3 == 0 ) );
assertTrue( mr2.getLdapComparator().compare( "2010031415Z", "2010031414Z" ) > 0 );
assertTrue( mr2.getLdapComparator().compare( "2010031415Z", "2010031416Z" ) < 0 );
}