summaryrefslogtreecommitdiff
path: root/adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java')
-rw-r--r--adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java133
1 files changed, 110 insertions, 23 deletions
diff --git a/adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java b/adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java
index cf07d13611..a5e7094a56 100644
--- a/adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java
+++ b/adservices/tests/unittest/service-core/src/com/android/adservices/service/measurement/util/FilterTest.java
@@ -19,7 +19,7 @@ package com.android.adservices.service.measurement.util;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import com.android.adservices.service.measurement.aggregation.AggregateFilterData;
+import com.android.adservices.service.measurement.FilterData;
import org.junit.Test;
@@ -31,83 +31,170 @@ import java.util.Map;
public class FilterTest {
@Test
- public void testIsFilterMatchReturnTrue() {
+ public void testIsFilterMatch_nonEmptyValues_returnTrue() {
Map<String, List<String>> sourceFilterMap = new HashMap<>();
sourceFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
sourceFilterMap.put("product", Arrays.asList("1234", "234"));
sourceFilterMap.put("ctid", Collections.singletonList("id"));
- AggregateFilterData sourceFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
Map<String, List<String>> triggerFilterMap = new HashMap<>();
triggerFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
triggerFilterMap.put("product", Arrays.asList("1234", "2345"));
triggerFilterMap.put("id", Arrays.asList("1", "2"));
- AggregateFilterData triggerFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
assertTrue(Filter.isFilterMatch(sourceFilter, triggerFilter, true));
}
@Test
- public void testIsFilterMatchReturnFalse() {
+ public void testIsFilterMatch_nonEmptyValues_returnFalse() {
Map<String, List<String>> sourceFilterMap = new HashMap<>();
sourceFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
sourceFilterMap.put("product", Arrays.asList("1234", "234"));
sourceFilterMap.put("ctid", Collections.singletonList("id"));
- AggregateFilterData sourceFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
Map<String, List<String>> triggerFilterMap = new HashMap<>();
triggerFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
- triggerFilterMap.put("product", Arrays.asList("1", "2")); // doesn't match.
+ // Doesn't match
+ triggerFilterMap.put("product", Arrays.asList("1", "2"));
triggerFilterMap.put("id", Arrays.asList("1", "2"));
- AggregateFilterData triggerFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
assertFalse(Filter.isFilterMatch(sourceFilter, triggerFilter, true));
}
@Test
- public void testIsNotFilterMatchReturnTrue() {
+ public void testIsFilterMatch_withEmptyValues_returnTrue() {
+ Map<String, List<String>> sourceFilterMap = new HashMap<>();
+ sourceFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ sourceFilterMap.put("product", Collections.emptyList());
+ sourceFilterMap.put("ctid", Collections.singletonList("id"));
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+
+ Map<String, List<String>> triggerFilterMap = new HashMap<>();
+ triggerFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ triggerFilterMap.put("product", Collections.emptyList());
+ triggerFilterMap.put("id", Arrays.asList("1", "2"));
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+
+ assertTrue(Filter.isFilterMatch(sourceFilter, triggerFilter, true));
+ }
+
+ @Test
+ public void testIsFilterMatch_withEmptyValues_returnFalse() {
+ Map<String, List<String>> sourceFilterMap = new HashMap<>();
+ sourceFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ sourceFilterMap.put("product", Arrays.asList("1234", "234"));
+ sourceFilterMap.put("ctid", Collections.singletonList("id"));
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+
+ Map<String, List<String>> triggerFilterMap = new HashMap<>();
+ triggerFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ // Doesn't match
+ triggerFilterMap.put("product", Collections.emptyList());
+ triggerFilterMap.put("id", Arrays.asList("1", "2"));
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+
+ assertFalse(Filter.isFilterMatch(sourceFilter, triggerFilter, true));
+ }
+
+ @Test
+ public void testIsFilterMatch_withNegation_nonEmptyValues_returnTrue() {
Map<String, List<String>> sourceFilterMap = new HashMap<>();
sourceFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
sourceFilterMap.put("product", Arrays.asList("1234", "234"));
sourceFilterMap.put("ctid", Collections.singletonList("id"));
- AggregateFilterData sourceFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
Map<String, List<String>> triggerFilterMap = new HashMap<>();
triggerFilterMap.put("conversion_subdomain", Collections.singletonList("electronics"));
- triggerFilterMap.put("product", Arrays.asList("1", "2")); // doesn't match.
+ // Doesn't match
+ triggerFilterMap.put("product", Arrays.asList("1", "2"));
triggerFilterMap.put("id", Arrays.asList("1", "2"));
- AggregateFilterData triggerFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
assertTrue(Filter.isFilterMatch(sourceFilter, triggerFilter, false));
}
@Test
- public void testIsNotFilterMatchReturnFalse() {
+ public void testIsFilterMatch_withNegation_nonEmptyValues_returnFalse() {
Map<String, List<String>> sourceFilterMap = new HashMap<>();
sourceFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
sourceFilterMap.put("product", Arrays.asList("1234", "234"));
sourceFilterMap.put("ctid", Collections.singletonList("id"));
- AggregateFilterData sourceFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
Map<String, List<String>> triggerFilterMap = new HashMap<>();
triggerFilterMap.put(
"conversion_subdomain", Collections.singletonList("electronics.megastore"));
triggerFilterMap.put("product", Arrays.asList("1234", "2345"));
triggerFilterMap.put("id", Arrays.asList("1", "2"));
- AggregateFilterData triggerFilter =
- new AggregateFilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+
+ assertFalse(Filter.isFilterMatch(sourceFilter, triggerFilter, false));
+ }
+
+ @Test
+ public void testIsFilterMatch_withNegation_withEmptyValues_returnTrue() {
+ Map<String, List<String>> sourceFilterMap = new HashMap<>();
+ sourceFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ sourceFilterMap.put("product", Arrays.asList("1234", "234"));
+ sourceFilterMap.put("ctid", Collections.singletonList("id"));
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+
+ Map<String, List<String>> triggerFilterMap = new HashMap<>();
+ triggerFilterMap.put("conversion_subdomain", Collections.singletonList("electronics"));
+ // Matches when negated
+ triggerFilterMap.put("product", Collections.emptyList());
+ triggerFilterMap.put("id", Arrays.asList("1", "2"));
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
+ assertTrue(Filter.isFilterMatch(sourceFilter, triggerFilter, false));
+ }
+
+ @Test
+ public void testIsFilterMatch_withNegation_withEmptyValues_returnFalse() {
+ Map<String, List<String>> sourceFilterMap = new HashMap<>();
+ sourceFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ sourceFilterMap.put("product", Collections.emptyList());
+ sourceFilterMap.put("ctid", Collections.singletonList("id"));
+ FilterData sourceFilter =
+ new FilterData.Builder().setAttributionFilterMap(sourceFilterMap).build();
+
+ Map<String, List<String>> triggerFilterMap = new HashMap<>();
+ triggerFilterMap.put(
+ "conversion_subdomain", Collections.singletonList("electronics.megastore"));
+ // Doesn't match when negated
+ triggerFilterMap.put("product", Collections.emptyList());
+ triggerFilterMap.put("id", Arrays.asList("1", "2"));
+ FilterData triggerFilter =
+ new FilterData.Builder().setAttributionFilterMap(triggerFilterMap).build();
assertFalse(Filter.isFilterMatch(sourceFilter, triggerFilter, false));
}