Skip to content

Commit 98b00a1

Browse files
authored
Counting client android (#243)
* add tests for getAndClearCounts and makeParams * add nullability
1 parent 2188142 commit 98b00a1

File tree

2 files changed

+51
-7
lines changed

2 files changed

+51
-7
lines changed

AndroidSDKCore/src/main/java/com/leanplum/internal/CountAggregator.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.leanplum.internal;
22

3+
import android.support.annotation.NonNull;
4+
import android.support.annotation.VisibleForTesting;
5+
36
import java.util.HashSet;
47
import java.util.HashMap;
58
import java.util.Map;
@@ -14,11 +17,11 @@ public void setEnabledCounters(HashSet<String> enabledCounters) {
1417
this.enabledCounters = enabledCounters;
1518
}
1619

17-
public void incrementCount(String name) {
20+
public void incrementCount(@NonNull String name) {
1821
incrementCount(name, 1);
1922
}
2023

21-
public void incrementCount(String name, int incrementCount) {
24+
public void incrementCount(@NonNull String name, int incrementCount) {
2225
if (enabledCounters.contains(name)) {
2326
Integer count = 0;
2427
if (counts.containsKey(name)) {
@@ -29,24 +32,33 @@ public void incrementCount(String name, int incrementCount) {
2932
}
3033
}
3134

32-
private HashMap<String, Integer> getAndClearCounts() {
35+
@VisibleForTesting
36+
public HashMap<String, Integer> getAndClearCounts() {
3337
HashMap<String, Integer> previousCounts = new HashMap<>();
3438
previousCounts.putAll(counts);
3539
counts.clear();
3640
return previousCounts;
3741
}
3842

43+
@VisibleForTesting
44+
public HashMap<String, Object> makeParams(@NonNull String name, int count) {
45+
HashMap<String, Object> params = new HashMap<>();
46+
47+
params.put(Constants.Params.TYPE, Constants.Values.SDK_COUNT);
48+
params.put(Constants.Params.MESSAGE, name);
49+
params.put(Constants.Params.COUNT, count);
50+
51+
return params;
52+
}
53+
3954
public void sendAllCounts() {
4055
HashMap<String, Integer> counts = getAndClearCounts();
4156

4257
for(Map.Entry<String, Integer> entry : counts.entrySet()) {
4358
String name = entry.getKey();
4459
Integer count = entry.getValue();
60+
HashMap<String, Object> params = makeParams(name, count);
4561
try {
46-
HashMap<String, Object> params = new HashMap<>();
47-
params.put(Constants.Params.TYPE, Constants.Values.SDK_COUNT);
48-
params.put(Constants.Params.MESSAGE, name);
49-
params.put(Constants.Params.COUNT, count);
5062
Request.post(Constants.Methods.LOG, params).sendEventually();
5163
} catch (Throwable t) {
5264
android.util.Log.e("Leanplum", "Unable to send count.", t);

AndroidSDKTests/src/test/java/com/leanplum/internal/CountAggregatorTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,36 @@ public void testIncrementCountMultiple() {
9393
counts = countAggregator.getCounts();
9494
assertEquals(17, counts.get(testString).intValue());
9595
}
96+
97+
@Test
98+
public void testGetAndClearCounts() {
99+
CountAggregator countAggregator = new CountAggregator();
100+
String testString = "test";
101+
String testString2 = "test2";
102+
HashSet<String> testSet = new HashSet<String>(Arrays.asList(testString, testString2));
103+
countAggregator.setEnabledCounters(testSet);
104+
105+
countAggregator.incrementCount(testString, 2);
106+
countAggregator.incrementCount(testString2, 15);
107+
108+
HashMap<String, Integer> previousCounts = countAggregator.getAndClearCounts();
109+
HashMap<String, Integer> counts = countAggregator.getCounts();
110+
111+
//check counts is empty after clearing
112+
assertEquals(true, counts.isEmpty());
113+
//test counts transferred to previousCounts
114+
assertEquals(2, previousCounts.get(testString).intValue());
115+
assertEquals(15, previousCounts.get(testString2).intValue());
116+
}
117+
118+
@Test
119+
public void testMakeParams() {
120+
CountAggregator countAggregator = new CountAggregator();
121+
String testString = "test";
122+
HashMap<String, Object> params = countAggregator.makeParams(testString, 2);
123+
124+
assertEquals(Constants.Values.SDK_COUNT, params.get(Constants.Params.TYPE));
125+
assertEquals(testString, params.get(Constants.Params.MESSAGE));
126+
assertEquals(2, params.get(Constants.Params.COUNT));
127+
}
96128
}

0 commit comments

Comments
 (0)