package org.radargun.stages.query;
import org.radargun.util.ReflectionUtils;
import org.testng.annotations.Test;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import static org.testng.Assert.*;
/**
* @author vjuranek
*/
@Test
public class AbstractQueryStageTest {
public void testSortConverterFromString() {
OrderBy.ListConverter sc = new OrderBy.ListConverter();
List<OrderBy> sortElements = sc.convert("name:ASC, surname, address:DESC", List.class);
assertEquals(sortElements.size(), 3);
assertEquals(sortElements.get(0).attribute, "name");
assertTrue(sortElements.get(0).asc);
assertEquals(sortElements.get(1).attribute, "surname");
assertTrue(sortElements.get(1).asc);
assertEquals(sortElements.get(2).attribute, "address");
assertFalse(sortElements.get(2).asc);
}
public void testSortConverterToString() throws Exception {
List<OrderBy> sortElements = new ArrayList<OrderBy>();
Constructor<OrderBy> seConst = ReflectionUtils.getConstructor(OrderBy.class, String.class, Boolean.TYPE);
sortElements.add(seConst.newInstance("name", true));
sortElements.add(seConst.newInstance("surname", true));
sortElements.add(seConst.newInstance("address", false));
OrderBy.ListConverter sc = new OrderBy.ListConverter();
String sortString = sc.convertToString(sortElements);
assertEquals(sortString, "name:ASC, surname:ASC, address:DESC");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testSortConverterBadSyntaxt() {
OrderBy.ListConverter sc = new OrderBy.ListConverter();
@SuppressWarnings("unused") List<OrderBy> sortElements = sc.convert("name:ACS", List.class);
fail("SortConverter should failed during pasring!");
}
}