package tap.parameters;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import tap.TAPJob;
public class TestMaxRecController {
@BeforeClass
public static void setUpBeforeClass() throws Exception{}
@AfterClass
public static void tearDownAfterClass() throws Exception{}
@Before
public void setUp() throws Exception{}
@After
public void tearDown() throws Exception{}
@Test
public void testCheck(){
ServiceConnectionOfTest service = new ServiceConnectionOfTest();
MaxRecController controller = new MaxRecController(service);
try{
// A NULL limit will always return an unlimited duration:
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.check(null));
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.check(-1));
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.check(-123));
// A 0 value, means that only the metadata of the result must be returned (without executing the query);
// this value should stay like that:
assertEquals(0, controller.check(0));
// By default, the controller has no limit on the output limit, so let's try with a limit of 1000000 rows:
assertEquals(1000000, controller.check(1000000));
// With just a default output limit (of 100 rows):
service.setOutputLimit(100, -1);
assertEquals(100, controller.check(null));
assertEquals(0, controller.check(0));
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.check(-1));
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.check(TAPJob.UNLIMITED_MAX_REC));
// With just a maximum output limit (of 10000 rows):
service.setOutputLimit(-1, 10000);
assertEquals(10000, controller.check(null));
assertEquals(0, controller.check(0));
assertEquals(60, controller.check(60));
assertEquals(10000, controller.check(-1));
assertEquals(10000, controller.check(TAPJob.UNLIMITED_MAX_REC));
assertEquals(10000, controller.check(10001));
// With a default (100 rows) AND a maximum (10000 rows) output limit:
service.setOutputLimit(100, 10000);
assertEquals(100, controller.check(null));
assertEquals(0, controller.check(0));
assertEquals(10, controller.check(10));
assertEquals(600, controller.check(600));
assertEquals(10000, controller.check(10000));
assertEquals(10000, controller.check(-1));
assertEquals(10000, controller.check(TAPJob.UNLIMITED_MAX_REC));
assertEquals(10000, controller.check(10001));
}catch(Exception t){
t.printStackTrace();
fail();
}
}
@Test
public void testGetDefault(){
ServiceConnectionOfTest service = new ServiceConnectionOfTest();
MaxRecController controller = new MaxRecController(service);
// By default, when nothing is set, the default output limit is UNLIMITED:
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.getDefault());
// With no duration, the default output limit should remain UNLIMITED:
service.setOutputLimit(TAPJob.UNLIMITED_MAX_REC, -1);
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.getDefault());
// With a negative limit, the output limit should also be UNLIMITED:
service.setOutputLimit(-1, -1);
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.getDefault());
// With an output limit of 100 rows:
service.setOutputLimit(100, -1);
assertEquals(100, controller.getDefault());
// The default value must always be less than the maximum value:
service.setOutputLimit(600, 300);
assertEquals(300, controller.getDefault());
}
@Test
public void testGetMaxExecutionDuration(){
ServiceConnectionOfTest service = new ServiceConnectionOfTest();
MaxRecController controller = new MaxRecController(service);
// By default, when nothing is set, the maximum output limit is UNLIMITED:
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.getMaxOutputLimit());
// With no duration, the maximum output limit should remain UNLIMITED:
service.setOutputLimit(-1, TAPJob.UNLIMITED_MAX_REC);
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.getMaxOutputLimit());
// With a negative limit, the output limit should also be UNLIMITED:
service.setOutputLimit(-1, -1);
assertEquals(TAPJob.UNLIMITED_MAX_REC, controller.getMaxOutputLimit());
// With an output limit of 10000 rows:
service.setOutputLimit(-1, 10000);
assertEquals(10000, controller.getMaxOutputLimit());
}
@Test
public void testAllowModification(){
ServiceConnectionOfTest service = new ServiceConnectionOfTest();
MaxRecController controller = new MaxRecController(service);
// By default, user modification of the destruction time is allowed:
assertTrue(controller.allowModification());
controller.allowModification(true);
assertTrue(controller.allowModification());
controller.allowModification(false);
assertFalse(controller.allowModification());
}
}