Merge pull request #51 from nuumio/PropertyManager

Property manager improvements
This commit is contained in:
Art 2017-01-31 00:10:46 +03:00 committed by GitHub
commit 2d89d91db1
2 changed files with 37 additions and 4 deletions

View File

@ -15,6 +15,7 @@ import java.util.regex.Pattern;
* A class which works with properties, uses getprop and setprop methods of android shell
*/
public class PropertyManager {
private final Pattern pattern = Pattern.compile("^\\[([a-zA-Z0-9_.-]*)\\]:.\\[([^\\[\\]]*)\\]");
private final JadbDevice device;
public PropertyManager(JadbDevice device) {
@ -22,13 +23,13 @@ public class PropertyManager {
}
public Map<String, String> getprop() throws IOException, JadbException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(device.executeShell("getprop")));
return parseProp(bufferedReader);
try (BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(device.executeShell("getprop")))) {
return parseProp(bufferedReader);
}
}
private Map<String, String> parseProp(BufferedReader bufferedReader) throws IOException {
final Pattern pattern = Pattern.compile("^\\[([a-zA-Z0-9_.-]*)\\]:.\\[([a-zA-Z0-9_.-]*)\\]");
HashMap<String, String> result = new HashMap<>();
String line;

View File

@ -55,6 +55,38 @@ public class PropertyManagerTest {
assertEquals(expected, actual);
}
@Test
public void testGetPropsValueHasSpecialCharacters() throws Exception {
/* Some example properties from Nexus 9:
[ro.product.model]: [Nexus 9]
[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.retaildemo.video_path]: [/data/preloads/demo/retail_demo.mp4]
[ro.url.legal]: [http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html]
[ro.vendor.build.date]: [Tue Nov 1 18:21:23 UTC 2016]
*/
//Arrange
Map<String, String> expected = new HashMap<>();
expected.put("ro.product.model", "Nexus 9");
expected.put("ro.product.cpu.abilist", "arm64-v8a,armeabi-v7a,armeabi");
expected.put("ro.retaildemo.video_path", "/data/preloads/demo/retail_demo.mp4");
expected.put("ro.url.legal", "http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html");
expected.put("ro.vendor.build.date", "Tue Nov 1 18:21:23 UTC 2016");
String response = "[ro.product.model]: [Nexus 9]\n" +
"[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]\n" +
"[ro.retaildemo.video_path]: [/data/preloads/demo/retail_demo.mp4]\n" +
"[ro.url.legal]: [http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html]\n" +
"[ro.vendor.build.date]: [Tue Nov 1 18:21:23 UTC 2016]";
server.expectShell(DEVICE_SERIAL, "getprop").returns(response);
//Act
Map<String, String> actual = new PropertyManager(device).getprop();
//Assert
assertEquals(expected, actual);
}
@Test
public void testGetPropsMalformedIgnoredString() throws Exception {
//Arrange