Refactor: Adding dummy test for getprop function.

- The FakeServer can now return a string as stdout.
This commit is contained in:
Samuel Carlsson 2016-10-01 14:11:24 +02:00 committed by Arthur
parent 9c83f0320c
commit 5b66a90c3b
4 changed files with 32 additions and 10 deletions

View File

@ -4,6 +4,8 @@ import se.vidstige.jadb.JadbException;
import se.vidstige.jadb.RemoteFile; import se.vidstige.jadb.RemoteFile;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
/** /**
@ -16,5 +18,5 @@ public interface AdbDeviceResponder {
void filePushed(RemoteFile path, int mode, ByteArrayOutputStream buffer) throws JadbException; void filePushed(RemoteFile path, int mode, ByteArrayOutputStream buffer) throws JadbException;
void filePulled(RemoteFile path, ByteArrayOutputStream buffer) throws JadbException, IOException; void filePulled(RemoteFile path, ByteArrayOutputStream buffer) throws JadbException, IOException;
void shell(String command) throws IOException; void shell(String command, DataOutputStream stdout, DataInput stdin) throws IOException;
} }

View File

@ -81,8 +81,11 @@ class AdbProtocolHandler implements Runnable {
sync.send("FAIL", e.getMessage()); sync.send("FAIL", e.getMessage());
} }
} else if (command.startsWith("shell:")) { } else if (command.startsWith("shell:")) {
shell(command.substring("shell:".length())); String shellCommand = command.substring("shell:".length());
output.writeBytes("OKAY"); output.writeBytes("OKAY");
shell(shellCommand, output, input);
output.close();
return;
} else { } else {
throw new ProtocolException("Unknown command: " + command); throw new ProtocolException("Unknown command: " + command);
} }
@ -94,8 +97,8 @@ class AdbProtocolHandler implements Runnable {
} }
} }
private void shell(String command) throws IOException { private void shell(String command, DataOutputStream stdout, DataInput stdin) throws IOException {
selected.shell(command); selected.shell(command, stdout, stdin);
} }
private int readInt(DataInput input) throws IOException { private int readInt(DataInput input) throws IOException {

View File

@ -7,6 +7,8 @@ import se.vidstige.jadb.server.AdbResponder;
import se.vidstige.jadb.server.AdbServer; import se.vidstige.jadb.server.AdbServer;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.net.ProtocolException; import java.net.ProtocolException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
@ -76,8 +78,8 @@ public class FakeAdbServer implements AdbResponder {
return findBySerial(serial).expectPull(path); return findBySerial(serial).expectPull(path);
} }
public void expectShell(String serial, String commands) { public DeviceResponder.ShellExpectation expectShell(String serial, String commands) {
findBySerial(serial).expectShell(commands); return findBySerial(serial).expectShell(commands);
} }
@Override @Override
@ -131,11 +133,11 @@ public class FakeAdbServer implements AdbResponder {
} }
@Override @Override
public void shell(String command) throws IOException { public void shell(String command, DataOutputStream stdout, DataInput stdin) throws IOException {
for (ShellExpectation se : shellExpectations) { for (ShellExpectation se : shellExpectations) {
if (se.matches(command)) { if (se.matches(command)) {
shellExpectations.remove(se); shellExpectations.remove(se);
se.throwIfFail(); se.writeOutputTo(stdout);
return; return;
} }
} }
@ -192,6 +194,7 @@ public class FakeAdbServer implements AdbResponder {
public class ShellExpectation { public class ShellExpectation {
private final String command; private final String command;
private byte[] stdout;
public ShellExpectation(String command) { public ShellExpectation(String command) {
this.command = command; this.command = command;
@ -201,8 +204,12 @@ public class FakeAdbServer implements AdbResponder {
return command.equals(this.command); return command.equals(this.command);
} }
public void throwIfFail() { public void returns(String stdout) {
this.stdout = stdout.getBytes(Charset.forName("utf-8"));
}
public void writeOutputTo(DataOutputStream stdout) throws IOException {
stdout.write(this.stdout);
} }
} }
@ -220,7 +227,7 @@ public class FakeAdbServer implements AdbResponder {
public ShellExpectation expectShell(String command) { public ShellExpectation expectShell(String command) {
ShellExpectation expectation = new ShellExpectation(command); ShellExpectation expectation = new ShellExpectation(command);
shellExpectations.add(new ShellExpectation(command)); shellExpectations.add(expectation);
return expectation; return expectation;
} }
} }

View File

@ -17,6 +17,7 @@ import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import java.util.Map;
public class MockedTestCases { public class MockedTestCases {
@ -93,6 +94,15 @@ public class MockedTestCases {
device.executeShell("ls", "space file"); device.executeShell("ls", "space file");
} }
@Test
public void testGetProps() throws Exception {
server.add("serial-123");
server.expectShell("serial-123", "getprop").returns("[] = nope\nx\n(");
JadbDevice device = connection.getDevices().get(0);
Map<String, String> x = device.getprop();
Assert.assertEquals(0, x.size());
}
private long parseDate(String date) throws ParseException { private long parseDate(String date) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return dateFormat.parse(date).getTime(); return dateFormat.parse(date).getTime();