package at.tugraz.ist.droned.test;
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.Test;
import at.tugraz.ist.droned.Drone;
import at.tugraz.ist.droned.DroneConsts;
import at.tugraz.ist.droned.dcf.*;
import at.tugraz.ist.droned.dcf.navdata.*;
import at.tugraz.ist.droned.dcf.command.*;
import org.junit.Test;
import org.junit.runner.RunWith;
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.*;
import java.util.Vector;
import java.util.List;
import org.junit.Test;
@RunWith(PowerMockRunner.class)
@PrepareForTest(Drone.class)
public class MoveCommandTest {
@SuppressWarnings("deprecation")
@Test
public void threadCmdWifiLossTest() throws Exception {
WiFiConnection wifi = createMock(WiFiConnection.class);
Drone drone = Drone.getInstance();
Whitebox.setInternalState(drone,"wifi",wifi);
ThreadCmd tc = new ThreadCmd(drone);
expect(wifi.isRunning()).andReturn(true).times(3);
expect(wifi.isRunning()).andReturn(false);
replayAll();
tc.run();
verifyAll();
}
@Test
public void singleMoveCommandTestMultipleWifiSends() throws Exception {
WiFiConnection wifi = createMock(WiFiConnection.class);
NavData navData = new NavData();
PacketDemo packetDemo = new PacketDemo();
Drone drone = Drone.getInstance();
Whitebox.setInternalState(drone,"wifi",wifi);
Whitebox.setInternalState(packetDemo, "flying_state", DroneConsts.FlyingState.FLYING);
Whitebox.setInternalState(navData, "packetDemo", packetDemo);
Whitebox.setInternalState(drone, "navData", navData);
ThreadCmd tc = new ThreadCmd(drone);
Whitebox.setInternalState(drone, "threadCmd",tc);
expect(wifi.isRunning()).andReturn(true).times(3);
wifi.sendAtCommand("AT*PCMD=#SEQ#,1," + Float.floatToIntBits(0.5f) + ","
+ Float.floatToIntBits(0.5f) + "," + Float.floatToIntBits(0.5f) + ","
+ Float.floatToIntBits(0.5f));
expectLastCall().times(3);
expect(wifi.isRunning()).andReturn(false);
replayAll();
drone.move(0.5f, 0.5f, 0.5f, 0.5f);
List<Command> list = Whitebox.getInternalState(tc, "cmdList");
assertEquals("move", list.get(0).getName());
tc.run();
verifyAll();
}
}