package at.tugraz.ist.droned.test;
import static org.junit.Assert.*;
import org.junit.Test;
import at.tugraz.ist.droned.dcf.security.*;
import at.tugraz.ist.droned.Drone;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertEquals;
import static org.powermock.api.easymock.PowerMock.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(MoveSecurityThreadTest.class)
public class MoveSecurityThreadTest {
@Test
public void MoveTimeoutReactionTest() {
Drone mockDrone = createMock(Drone.class);
String[] methods = {"isHovering", "DroneSecurityLayer"};
DroneSecurityLayer dsl = createPartialMock(DroneSecurityLayer.class,methods , mockDrone);
MoveSecurityThread thread = new MoveSecurityThread(dsl);
Whitebox.setInternalState(dsl, "drone", mockDrone);
Whitebox.setInternalState(dsl, "hovering", true);
Whitebox.setInternalState(dsl, "move", true);
Whitebox.setInternalState(dsl, "moveTimeout", 5);
Whitebox.setInternalState(dsl, "reset",0);
expect(dsl.isHovering()).andReturn(true).times(7);
mockDrone.move(0, 0, 0, 0);
expectLastCall().once();
expect(dsl.isHovering()).andReturn(false).times(1);
replayAll();
thread.run();
verifyAll();
}
@Test
public void MoveTimeoutWithCommandsInTimeTest() {
// DroneSecurityLayer dsl = createMock(DroneSecurityLayer.class);
Drone mockDrone = createMock(Drone.class);
//DroneSecurityLayer dsl = new DroneSecurityLayer(mockDrone);
String[] methods = {"isHovering", "DroneSecurityLayer"};
DroneSecurityLayer dsl = createPartialMock(DroneSecurityLayer.class,methods , mockDrone);
MoveSecurityThread thread = new MoveSecurityThread(dsl);
Whitebox.setInternalState(dsl, "drone", mockDrone);
Whitebox.setInternalState(dsl, "hovering", true);
Whitebox.setInternalState(dsl, "move", true);
Whitebox.setInternalState(dsl, "moveTimeout", 5);
Whitebox.setInternalState(dsl, "reset",0);
expect(dsl.isHovering()).andReturn(true).times(3);
dsl.parseCommand("move,1,1,1,1");
expect(dsl.isHovering()).andReturn(false).times(2);
replayAll();
thread.run();
verifyAll();
}
}