Skip to content

Commit 9c04515

Browse files
committed
Added some tests around ByteUtils
1 parent 53138d5 commit 9c04515

6 files changed

Lines changed: 112 additions & 45 deletions

File tree

library/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,7 @@ android {
3030
}
3131

3232
dependencies {
33+
testCompile 'junit:junit:4.12'
34+
testCompile "org.mockito:mockito-core:1.9.5"
3335
compile fileTree(include: ['*.jar'], dir: 'libs')
3436
}

library/library.iml

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
<facet type="android" name="Android">
1010
<configuration>
1111
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12-
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_unit_test_" />
1313
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
1414
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
1515
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
16-
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
17-
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
18-
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
16+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugUnitTest" />
17+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugUnitTestSources" />
1918
<option name="ALLOW_USER_CONFIGURATION" value="false" />
2019
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
2120
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
@@ -27,7 +26,7 @@
2726
</component>
2827
<component name="NewModuleRootManager" inherit-compiler-output="false">
2928
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
30-
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
29+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
3130
<exclude-output />
3231
<content url="file://$MODULE_DIR$">
3332
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
@@ -36,33 +35,34 @@
3635
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
3736
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
3837
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
39-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
40-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
41-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
42-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
43-
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
44-
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
4538
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
4639
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
4740
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
4841
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
4942
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
5043
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
5144
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
45+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
5252
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
5353
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
5454
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
5555
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
5656
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
5757
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
5858
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
59-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
60-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
61-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
62-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
63-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
64-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
65-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
65+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
6666
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
6767
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
6868
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
@@ -87,5 +87,10 @@
8787
</content>
8888
<orderEntry type="jdk" jdkName="Android API 18 Platform" jdkType="Android SDK" />
8989
<orderEntry type="sourceFolder" forTests="false" />
90+
<orderEntry type="library" exported="" scope="TEST" name="objenesis-1.0" level="project" />
91+
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
92+
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
93+
<orderEntry type="library" exported="" scope="TEST" name="mockable-android-18" level="project" />
94+
<orderEntry type="library" exported="" scope="TEST" name="mockito-core-1.9.5" level="project" />
9095
</component>
9196
</module>

library/src/main/java/uk/co/alt236/bluetoothlelib/device/mfdata/IBeaconManufacturerData.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,10 @@ public IBeaconManufacturerData(final BluetoothLeDevice device) {
6565
public IBeaconManufacturerData(final byte[] data) {
6666
mData = data;
6767

68-
mCompanyIdentidier = ByteUtils.getIntFrom2ByteArray(
69-
ByteUtils.invertArray(Arrays.copyOfRange(mData, 0, 2)));
68+
final byte[] intArray = Arrays.copyOfRange(mData, 0, 2);
69+
ByteUtils.invertArray(intArray);
70+
71+
mCompanyIdentidier = ByteUtils.getIntFrom2ByteArray(intArray);
7072

7173
mIBeaconAdvertisment = ByteUtils.getIntFrom2ByteArray(Arrays.copyOfRange(mData, 2, 4));
7274
mUUID = calculateUUIDString(Arrays.copyOfRange(mData, 4, 20));

library/src/main/java/uk/co/alt236/bluetoothlelib/util/ByteUtils.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static String byteArrayToHexString(final byte[] array) {
3636
}
3737

3838
/**
39-
* Checks to see if a byte arry starts with another byte array.
39+
* Checks to see if a byte array starts with another byte array.
4040
*
4141
* @param array the array
4242
* @param prefix the prefix
@@ -78,7 +78,7 @@ public static int getIntFrom2ByteArray(final byte[] input) {
7878
* <p/>
7979
* For example, FF will be converted to 255 and not -1.
8080
*
81-
* @param bite the bite
81+
* @param bite the byte
8282
* @return the int from byte
8383
*/
8484
public static int getIntFromByte(final byte bite) {
@@ -107,12 +107,11 @@ public static long getLongFromByteArray(final byte[] bytes) {
107107

108108

109109
/**
110-
* Inverts an array
110+
* Inverts an byte array in place.
111111
*
112112
* @param array the array
113-
* @return the byte[]
114113
*/
115-
public static byte[] invertArray(final byte[] array) {
114+
public static void invertArray(final byte[] array) {
116115
final int size = array.length;
117116
byte temp;
118117

@@ -121,7 +120,5 @@ public static byte[] invertArray(final byte[] array) {
121120
array[i] = array[size - 1 - i];
122121
array[size - 1 - i] = temp;
123122
}
124-
125-
return array;
126123
}
127124
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package uk.co.alt236.bluetoothlelib.util;
2+
3+
import junit.framework.TestCase;
4+
5+
/**
6+
*
7+
*/
8+
public class ByteUtilsTest extends TestCase {
9+
10+
public void testInvertArray() throws Exception {
11+
final byte[] original = {1, 2 ,3 ,4};
12+
final byte[] out = new byte[original.length];
13+
14+
System.arraycopy( original, 0, out, 0, original.length);
15+
ByteUtils.invertArray(out);
16+
17+
assertEquals(original[0], out[3]);
18+
assertEquals(original[1], out[2]);
19+
assertEquals(original[2], out[1]);
20+
assertEquals(original[3], out[0]);
21+
}
22+
23+
public void testGetIntFromByte() throws Exception {
24+
byte bite = 127;
25+
int integer = ByteUtils.getIntFromByte(bite);
26+
assertEquals(127, integer);
27+
28+
bite = -1;
29+
integer = ByteUtils.getIntFromByte(bite);
30+
assertEquals(255, integer);
31+
}
32+
33+
public void testDoesArrayBeginWith() throws Exception {
34+
35+
// If the prefix is longer than the array,
36+
// we automatically fail
37+
byte[] array = new byte[10];
38+
byte[] prefix = new byte[array.length * 2];
39+
assertFalse(ByteUtils.doesArrayBeginWith(array, prefix));
40+
41+
array = new byte[]{1, 2, 3};
42+
prefix = new byte[]{1, 3};
43+
assertFalse(ByteUtils.doesArrayBeginWith(array, prefix));
44+
45+
array = new byte[10];
46+
prefix = new byte[array.length];
47+
assertTrue(ByteUtils.doesArrayBeginWith(array, prefix));
48+
49+
array = new byte[]{1, 2, 3};
50+
prefix = new byte[]{1, 2};
51+
assertTrue(ByteUtils.doesArrayBeginWith(array, prefix));
52+
}
53+
54+
public void testByteArrayToHexString() throws Exception {
55+
assertEquals("[]", ByteUtils.byteArrayToHexString(new byte[0]));
56+
57+
final byte[] one = {1, 10, 15, 127};
58+
assertEquals("[01, 0A, 0F, 7F]", ByteUtils.byteArrayToHexString(one));
59+
}
60+
}

sample_app/sample_app.iml

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
<facet type="android" name="Android">
1010
<configuration>
1111
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12-
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_unit_test_" />
1313
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
1414
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
1515
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
16-
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
17-
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
18-
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
16+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugUnitTest" />
17+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugUnitTestSources" />
1918
<option name="ALLOW_USER_CONFIGURATION" value="false" />
2019
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
2120
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
@@ -26,7 +25,7 @@
2625
</component>
2726
<component name="NewModuleRootManager" inherit-compiler-output="false">
2827
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
29-
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
28+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
3029
<exclude-output />
3130
<content url="file://$MODULE_DIR$">
3231
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
@@ -35,33 +34,34 @@
3534
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
3635
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
3736
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
38-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
39-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
40-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
41-
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
42-
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
43-
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
4437
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
4538
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
4639
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
4740
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
4841
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
4942
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
5043
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
44+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
45+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
5151
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
5252
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
5353
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
5454
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
5555
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
5656
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
5757
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
58-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
59-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
60-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
61-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
62-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
63-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
64-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
6565
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
6666
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
6767
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
@@ -90,6 +90,7 @@
9090
<orderEntry type="library" exported="" name="android-support-v4" level="project" />
9191
<orderEntry type="library" exported="" name="sacklist-1.0.0" level="project" />
9292
<orderEntry type="library" exported="" name="EasyCursor-0.1.1" level="project" />
93+
<orderEntry type="library" exported="" scope="TEST" name="mockable-android-18" level="project" />
9394
<orderEntry type="library" exported="" name="butterknife-4.0.1" level="project" />
9495
<orderEntry type="module" module-name="library" exported="" />
9596
</component>

0 commit comments

Comments
 (0)