/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* Unit test for {@link SearchFilter}.
*
* @author Middleware Services
*/
public class SearchFilterTest
{
/**
* Search filter test data.
*
* @return search filters
*/
@DataProvider(name = "filters")
public Object[][] createFilters()
{
final String f1 = "(&(givenName=Bill)(sn=Wallace))";
final SearchFilter sf1 = new SearchFilter(f1);
final SearchFilter sf2 = new SearchFilter("(&(givenName={0})(sn={1}))");
sf2.setParameter(0, "Bill");
sf2.setParameter(1, "Wallace");
final SearchFilter sf3 = new SearchFilter("(&(givenName={name})(sn={1}))");
sf3.setParameter("name", "Bill");
sf3.setParameter(1, "Wallace");
final String f4 = "(&(givenName=Bill\\2a)(sn=Wa\\28ll\\29ace))";
final SearchFilter sf4 = new SearchFilter("(&(givenName={firstname})(sn={lastname}))");
sf4.setParameter("firstname", "Bill*");
sf4.setParameter("lastname", "Wa(ll)ace");
final String f5 = "(&(givenName=\\42\\69\\6C\\6C)(sn=\\57\\61\\6C\\6C\\61\\63\\65))";
final SearchFilter sf5 = new SearchFilter("(&(givenName={firstname})(sn={lastname}))");
sf5.setParameter("firstname", new byte[] {'B', 'i', 'l', 'l', });
sf5.setParameter("lastname", new byte[] {'W', 'a', 'l', 'l', 'a', 'c', 'e', });
return
new Object[][] {
new Object[] {f1, sf1, },
new Object[] {f1, sf2, },
new Object[] {f1, sf3, },
new Object[] {f4, sf4, },
new Object[] {f5, sf5, },
};
}
/**
* @param encodedFilter to compare against
* @param filter to format
*
* @throws Exception On test failure.
*/
@Test(groups = {"filter"}, dataProvider = "filters")
public void testFormat(final String encodedFilter, final SearchFilter filter)
throws Exception
{
Assert.assertEquals(filter.format(), encodedFilter);
}
}