Skip to content

Commit 72e127f

Browse files
feat: tests
1 parent 93586d3 commit 72e127f

2 files changed

Lines changed: 141 additions & 4 deletions

File tree

sdk/src/androidTest/java/ly/count/android/sdk/DeviceInfoTests.java

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ of this software and associated documentation files (the "Software"), to deal
3131
import androidx.test.ext.junit.runners.AndroidJUnit4;
3232
import java.io.UnsupportedEncodingException;
3333
import java.net.URLDecoder;
34+
import java.util.AbstractMap;
3435
import java.util.HashMap;
3536
import java.util.Locale;
3637
import java.util.Map;
@@ -42,6 +43,7 @@ of this software and associated documentation files (the "Software"), to deal
4243
import org.junit.runner.RunWith;
4344

4445
import static org.junit.Assert.assertEquals;
46+
import static org.junit.Assert.assertNotNull;
4547
import static org.mockito.Mockito.mock;
4648
import static org.mockito.Mockito.when;
4749

@@ -296,6 +298,141 @@ public void testGetMetricsWithOverride_2() throws UnsupportedEncodingException,
296298
TestUtils.bothJSONObjEqual(json, calculatedJSON);
297299
}
298300

301+
// MetricProvider override tests
302+
303+
@Test
304+
public void testMetricProviderOverride_fullOverride() {
305+
MockedMetricProvider override = new MockedMetricProvider();
306+
DeviceInfo deviceInfo = new DeviceInfo(override);
307+
308+
assertEquals("A", deviceInfo.mp.getOS());
309+
assertEquals("B", deviceInfo.mp.getOSVersion());
310+
assertEquals("C", deviceInfo.mp.getDevice());
311+
assertEquals("D", deviceInfo.mp.getManufacturer());
312+
assertEquals("E", deviceInfo.mp.getResolution(TestUtils.getContext()));
313+
assertEquals("F", deviceInfo.mp.getDensity(TestUtils.getContext()));
314+
assertEquals("G", deviceInfo.mp.getCarrier(TestUtils.getContext()));
315+
assertEquals("66", deviceInfo.mp.getTimezoneOffset());
316+
assertEquals("H", deviceInfo.mp.getLocale());
317+
assertEquals(Countly.DEFAULT_APP_VERSION, deviceInfo.mp.getAppVersion(TestUtils.getContext()));
318+
assertEquals("J", deviceInfo.mp.getStore(TestUtils.getContext()));
319+
assertEquals("K", deviceInfo.mp.getDeviceType(TestUtils.getContext()));
320+
assertEquals("42", deviceInfo.mp.getTotalRAM());
321+
assertEquals("12", deviceInfo.mp.getRamCurrent(TestUtils.getContext()));
322+
assertEquals("48", deviceInfo.mp.getRamTotal());
323+
assertEquals("N", deviceInfo.mp.getCpu());
324+
assertEquals("O", deviceInfo.mp.getOpenGL(TestUtils.getContext()));
325+
assertEquals("6", deviceInfo.mp.getBatteryLevel(TestUtils.getContext()));
326+
assertEquals("S", deviceInfo.mp.getOrientation(TestUtils.getContext()));
327+
assertEquals("T", deviceInfo.mp.isRooted());
328+
assertEquals("U", deviceInfo.mp.isOnline(TestUtils.getContext()));
329+
assertEquals("V", deviceInfo.mp.isMuted(TestUtils.getContext()));
330+
assertEquals("Z", deviceInfo.mp.hasHinge(TestUtils.getContext()));
331+
assertEquals("88", deviceInfo.mp.getRunningTime());
332+
333+
Map.Entry<String, String> diskSpaces = deviceInfo.mp.getDiskSpaces(TestUtils.getContext());
334+
assertEquals("45", diskSpaces.getKey());
335+
assertEquals("23", diskSpaces.getValue());
336+
}
337+
338+
@Test
339+
public void testMetricProviderOverride_partialOverride() {
340+
MetricProvider partial = new MetricProvider() {
341+
@Override public String getOS() { return "CustomOS"; }
342+
@Override public String getDevice() { return "CustomDevice"; }
343+
};
344+
DeviceInfo deviceInfo = new DeviceInfo(partial);
345+
346+
// overridden values
347+
assertEquals("CustomOS", deviceInfo.mp.getOS());
348+
assertEquals("CustomDevice", deviceInfo.mp.getDevice());
349+
350+
// non-overridden values should fall back to SDK defaults
351+
assertEquals(android.os.Build.VERSION.RELEASE, deviceInfo.mp.getOSVersion());
352+
assertEquals(android.os.Build.MODEL, regularDeviceInfo.mp.getDevice());
353+
assertEquals(android.os.Build.MANUFACTURER, deviceInfo.mp.getManufacturer());
354+
assertNotNull(deviceInfo.mp.getLocale());
355+
assertNotNull(deviceInfo.mp.getTimezoneOffset());
356+
assertNotNull(deviceInfo.mp.getAppVersion(TestUtils.getContext()));
357+
}
358+
359+
@Test
360+
public void testMetricProviderOverride_nullOverride() {
361+
DeviceInfo deviceInfo = new DeviceInfo(null);
362+
363+
// all values should be SDK defaults, no crash
364+
assertEquals("Android", deviceInfo.mp.getOS());
365+
assertEquals(android.os.Build.VERSION.RELEASE, deviceInfo.mp.getOSVersion());
366+
assertEquals(android.os.Build.MODEL, deviceInfo.mp.getDevice());
367+
assertEquals(android.os.Build.MANUFACTURER, deviceInfo.mp.getManufacturer());
368+
assertNotNull(deviceInfo.mp.getLocale());
369+
assertNotNull(deviceInfo.mp.getTimezoneOffset());
370+
}
371+
372+
@Test
373+
public void testMetricProviderOverride_emptyOverride() {
374+
MetricProvider emptyOverride = new MetricProvider() {};
375+
DeviceInfo deviceInfo = new DeviceInfo(emptyOverride);
376+
377+
// empty override should behave same as null override
378+
assertEquals("Android", deviceInfo.mp.getOS());
379+
assertEquals(android.os.Build.VERSION.RELEASE, deviceInfo.mp.getOSVersion());
380+
assertEquals(android.os.Build.MODEL, deviceInfo.mp.getDevice());
381+
assertNotNull(deviceInfo.mp.getLocale());
382+
}
383+
384+
@Test
385+
public void testMetricProviderOverride_diskSpacesOverride() {
386+
MetricProvider diskOverride = new MetricProvider() {
387+
@Override public Map.Entry<String, String> getDiskSpaces(Context context) {
388+
return new AbstractMap.SimpleEntry<>("100", "50");
389+
}
390+
};
391+
DeviceInfo deviceInfo = new DeviceInfo(diskOverride);
392+
393+
Map.Entry<String, String> diskSpaces = deviceInfo.mp.getDiskSpaces(TestUtils.getContext());
394+
assertEquals("100", diskSpaces.getKey());
395+
assertEquals("50", diskSpaces.getValue());
396+
397+
// other metrics should be defaults
398+
assertEquals("Android", deviceInfo.mp.getOS());
399+
}
400+
401+
@Test
402+
public void testMetricProviderOverride_timezoneAndRamOverride() {
403+
MetricProvider override = new MetricProvider() {
404+
@Override public String getTimezoneOffset() { return "120"; }
405+
@Override public String getTotalRAM() { return "8192"; }
406+
@Override public String getRamTotal() { return "8192"; }
407+
@Override public String getRamCurrent(Context context) { return "4096"; }
408+
};
409+
DeviceInfo deviceInfo = new DeviceInfo(override);
410+
411+
assertEquals("120", deviceInfo.mp.getTimezoneOffset());
412+
assertEquals("8192", deviceInfo.mp.getTotalRAM());
413+
assertEquals("8192", deviceInfo.mp.getRamTotal());
414+
assertEquals("4096", deviceInfo.mp.getRamCurrent(TestUtils.getContext()));
415+
}
416+
417+
@Test
418+
public void testMetricProviderOverride_metricsJson() throws UnsupportedEncodingException, JSONException {
419+
MetricProvider partial = new MetricProvider() {
420+
@Override public String getOS() { return "CustomOS"; }
421+
@Override public String getDevice() { return "CustomDevice"; }
422+
@Override public String getManufacturer() { return "CustomMfg"; }
423+
};
424+
DeviceInfo deviceInfo = new DeviceInfo(partial);
425+
426+
String calculatedMetrics = URLDecoder.decode(deviceInfo.getMetrics(TestUtils.getContext(), null, new ModuleLog()), "UTF-8");
427+
JSONObject json = new JSONObject(calculatedMetrics);
428+
429+
assertEquals("CustomOS", json.getString("_os"));
430+
assertEquals("CustomDevice", json.getString("_device"));
431+
assertEquals("CustomMfg", json.getString("_manufacturer"));
432+
// non-overridden should still be present with defaults
433+
assertEquals(android.os.Build.VERSION.RELEASE, json.getString("_os_version"));
434+
}
435+
299436
@Test
300437
public void getAppVersionWithOverride() {
301438
Map<String, String> metricOverride = new HashMap<>();

sdk/src/androidTest/java/ly/count/android/sdk/MockedMetricProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public MockedMetricProvider() {
4141
return "G";
4242
}
4343

44-
@Override public int getTimezoneOffset() {
45-
return 66;
44+
@Override public String getTimezoneOffset() {
45+
return "66";
4646
}
4747

4848
@Override public String getLocale() {
@@ -61,8 +61,8 @@ public MockedMetricProvider() {
6161
return "K";
6262
}
6363

64-
@Override public long getTotalRAM() {
65-
return 42;
64+
@Override public String getTotalRAM() {
65+
return "42";
6666
}
6767

6868
@Override public String getRamCurrent(Context context) {

0 commit comments

Comments
 (0)