From c0330b5a1325ae16a107a439e57f26911564a2f7 Mon Sep 17 00:00:00 2001 From: Samuel Carlsson Date: Thu, 25 Jul 2013 21:52:46 +0200 Subject: [PATCH] Parsing devices --- src/se/vidstige/jadb/AndroidDevice.java | 50 +++++++++++++++++++ src/se/vidstige/jadb/JadbConnection.java | 19 +++++-- test/se/vidstige/jadb/test/JadbTestCases.java | 9 +++- 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 src/se/vidstige/jadb/AndroidDevice.java diff --git a/src/se/vidstige/jadb/AndroidDevice.java b/src/se/vidstige/jadb/AndroidDevice.java new file mode 100644 index 0000000..1e9518c --- /dev/null +++ b/src/se/vidstige/jadb/AndroidDevice.java @@ -0,0 +1,50 @@ +package se.vidstige.jadb; + +public class AndroidDevice { + private final String serial; + + public AndroidDevice(String serial, String type) { + this.serial = serial; + } + + public AndroidDevice(String serial) { + this(serial, null); + } + + public String getSerial() + { + return serial; + } + + @Override + public String toString() + { + return "Android Device with serial " + serial; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((serial == null) ? 0 : serial.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AndroidDevice other = (AndroidDevice) obj; + if (serial == null) { + if (other.serial != null) + return false; + } else if (!serial.equals(other.serial)) + return false; + return true; + } + +} diff --git a/src/se/vidstige/jadb/JadbConnection.java b/src/se/vidstige/jadb/JadbConnection.java index d4dd85b..9d47a28 100644 --- a/src/se/vidstige/jadb/JadbConnection.java +++ b/src/se/vidstige/jadb/JadbConnection.java @@ -3,6 +3,8 @@ package se.vidstige.jadb; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.List; public class JadbConnection { @@ -22,16 +24,27 @@ public class JadbConnection { transport.verifyResponse(); } - public void getDevices() throws IOException, JadbException + public List getDevices() throws IOException, JadbException { transport.send("host:devices"); transport.verifyResponse(); String body = transport.readString(); - System.out.println(body); - } + return parseDevices(body); + } public void close() throws IOException { _socket.close(); + } + + private List parseDevices(String body) { + String[] lines = body.split("\n"); + ArrayList devices = new ArrayList(lines.length); + for (String line : lines) + { + String[] parts = line.split("\t"); + devices.add(new AndroidDevice(parts[0], parts[1])); + } + return devices; } } diff --git a/test/se/vidstige/jadb/test/JadbTestCases.java b/test/se/vidstige/jadb/test/JadbTestCases.java index 75c5b47..8268946 100644 --- a/test/se/vidstige/jadb/test/JadbTestCases.java +++ b/test/se/vidstige/jadb/test/JadbTestCases.java @@ -1,7 +1,12 @@ package se.vidstige.jadb.test; +import java.util.Arrays; +import java.util.List; + +import org.junit.Assert; import org.junit.Test; +import se.vidstige.jadb.AndroidDevice; import se.vidstige.jadb.JadbConnection; public class JadbTestCases { @@ -16,6 +21,8 @@ public class JadbTestCases { public void testGetDevices() throws Exception { JadbConnection jadb = new JadbConnection(); - jadb.getDevices(); + List actual = jadb.getDevices(); + AndroidDevice[] expected = { new AndroidDevice("emulator-5554") }; + Assert.assertArrayEquals(expected, actual.toArray()); } }