Add some tests for coverage am: 685a48d6b0

Original change: https://googleplex-android-review.googlesource.com/c/platform/external/libtextclassifier/+/13773941

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: If05be4c32ce1383f0609caca5d824af5df8a6efd
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..5843fa6
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,44 @@
+//
+// Copyright (C) 2021 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
+// Added automatically by a large-scale-change that took the approach of
+// 'apply every license found to every target'. While this makes sure we respect
+// every license restriction, it may not be entirely correct.
+//
+// e.g. GPL in an MIT project might only apply to the contrib/ directory.
+//
+// Please consider splitting the single license below into multiple licenses,
+// taking care not to lose any license_kind information, and overriding the
+// default license using the 'licenses: [...]' property on targets as needed.
+//
+// For unused files, consider creating a 'fileGroup' with "//visibility:private"
+// to attach the license to, and including a comment whether the files may be
+// used in the current project.
+// See: http://go/android-license-faq
+license {
+    name: "external_libtextclassifier_license",
+    visibility: [":__subpackages__"],
+    license_kinds: [
+        "SPDX-license-identifier-Apache-2.0",
+        "legacy_unencumbered",
+    ],
+    license_text: [
+        "NOTICE",
+    ],
+}
diff --git a/abseil-cpp/Android.bp b/abseil-cpp/Android.bp
index 4eaae5a..b6958c1 100644
--- a/abseil-cpp/Android.bp
+++ b/abseil-cpp/Android.bp
@@ -1,3 +1,35 @@
+package {
+    default_applicable_licenses: [
+        "external_libtextclassifier_abseil-cpp_license",
+    ],
+}
+
+// Added automatically by a large-scale-change that took the approach of
+// 'apply every license found to every target'. While this makes sure we respect
+// every license restriction, it may not be entirely correct.
+//
+// e.g. GPL in an MIT project might only apply to the contrib/ directory.
+//
+// Please consider splitting the single license below into multiple licenses,
+// taking care not to lose any license_kind information, and overriding the
+// default license using the 'licenses: [...]' property on targets as needed.
+//
+// For unused files, consider creating a 'fileGroup' with "//visibility:private"
+// to attach the license to, and including a comment whether the files may be
+// used in the current project.
+// See: http://go/android-license-faq
+license {
+    name: "external_libtextclassifier_abseil-cpp_license",
+    visibility: [":__subpackages__"],
+    license_kinds: [
+        "SPDX-license-identifier-Apache-2.0",
+        "legacy_unencumbered",
+    ],
+    license_text: [
+        "LICENSE",
+    ],
+}
+
 cc_library_static {
     name: "libtextclassifier_abseil",
     export_include_dirs: ["."],
diff --git a/coverage/Android.bp b/coverage/Android.bp
index 699c629..f9f5c88 100644
--- a/coverage/Android.bp
+++ b/coverage/Android.bp
@@ -1,3 +1,12 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 android_library {
     name: "TextClassifierCoverageLib",
 
diff --git a/java/Android.bp b/java/Android.bp
index 163512e..ca34a66 100644
--- a/java/Android.bp
+++ b/java/Android.bp
@@ -15,6 +15,15 @@
 //
 
 // A standalone TextClassifierService app for testing.
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 android_app {
     name: "TextClassifierService",
     static_libs: ["TextClassifierServiceLib"],
diff --git a/java/tests/instrumentation/Android.bp b/java/tests/instrumentation/Android.bp
index 43cb864..871be1e 100644
--- a/java/tests/instrumentation/Android.bp
+++ b/java/tests/instrumentation/Android.bp
@@ -14,6 +14,15 @@
 // limitations under the License.
 //
 
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 android_test {
     name: "TextClassifierServiceTest",
 
diff --git a/java/tests/instrumentation/src/com/android/textclassifier/DefaultTextClassifierServiceTest.java b/java/tests/instrumentation/src/com/android/textclassifier/DefaultTextClassifierServiceTest.java
index 1c4f7f8..d248eb0 100644
--- a/java/tests/instrumentation/src/com/android/textclassifier/DefaultTextClassifierServiceTest.java
+++ b/java/tests/instrumentation/src/com/android/textclassifier/DefaultTextClassifierServiceTest.java
@@ -232,7 +232,7 @@
                 .collect(Collectors.toList()));
     assertThat(loggedEvents).hasSize(1);
     TextClassifierApiUsageReported loggedEvent = loggedEvents.get(0);
-    assertThat(loggedEvent.getLatencyMillis()).isGreaterThan(0L);
+    assertThat(loggedEvent.getLatencyMillis()).isGreaterThan(0);
     assertThat(loggedEvent.getApiType()).isEqualTo(expectedApiType);
     assertThat(loggedEvent.getResultType()).isEqualTo(expectedResultApiType);
     assertThat(loggedEvent.getSessionId()).isEqualTo(SESSION_ID);
diff --git a/java/tests/instrumentation/src/com/android/textclassifier/TextClassifierApiTest.java b/java/tests/instrumentation/src/com/android/textclassifier/TextClassifierApiTest.java
index 27ea7f0..6d6887a 100644
--- a/java/tests/instrumentation/src/com/android/textclassifier/TextClassifierApiTest.java
+++ b/java/tests/instrumentation/src/com/android/textclassifier/TextClassifierApiTest.java
@@ -115,7 +115,7 @@
     assertThat(links).hasSize(1);
     assertThat(links.get(0).getEntityCount()).isGreaterThan(0);
     assertThat(links.get(0).getEntity(0)).isEqualTo(TextClassifier.TYPE_URL);
-    assertThat(links.get(0).getConfidenceScore(TextClassifier.TYPE_URL)).isGreaterThan(0f);
+    assertThat(links.get(0).getConfidenceScore(TextClassifier.TYPE_URL)).isGreaterThan(0);
   }
 
   @Test
@@ -127,7 +127,7 @@
 
     assertThat(textLanguage.getLocaleHypothesisCount()).isGreaterThan(0);
     assertThat(textLanguage.getLocale(0).getLanguage()).isEqualTo("ja");
-    assertThat(textLanguage.getConfidenceScore(ULocale.JAPANESE)).isGreaterThan(0f);
+    assertThat(textLanguage.getConfidenceScore(ULocale.JAPANESE)).isGreaterThan(0);
   }
 
   @Test
diff --git a/java/tests/instrumentation/src/com/android/textclassifier/common/statsd/TextClassifierApiUsageLoggerTest.java b/java/tests/instrumentation/src/com/android/textclassifier/common/statsd/TextClassifierApiUsageLoggerTest.java
index b9b7a95..e3e74b5 100644
--- a/java/tests/instrumentation/src/com/android/textclassifier/common/statsd/TextClassifierApiUsageLoggerTest.java
+++ b/java/tests/instrumentation/src/com/android/textclassifier/common/statsd/TextClassifierApiUsageLoggerTest.java
@@ -90,7 +90,7 @@
     TextClassifierApiUsageReported event = loggedEvents.get(0);
     assertThat(event.getApiType()).isEqualTo(ApiType.SUGGEST_SELECTION);
     assertThat(event.getResultType()).isEqualTo(ResultType.SUCCESS);
-    assertThat(event.getLatencyMillis()).isGreaterThan(0L);
+    assertThat(event.getLatencyMillis()).isGreaterThan(0);
     assertThat(event.getSessionId()).isEqualTo(SESSION_ID);
   }
 
@@ -119,7 +119,7 @@
     TextClassifierApiUsageReported event = loggedEvents.get(0);
     assertThat(event.getApiType()).isEqualTo(ApiType.CLASSIFY_TEXT);
     assertThat(event.getResultType()).isEqualTo(ResultType.FAIL);
-    assertThat(event.getLatencyMillis()).isGreaterThan(0L);
+    assertThat(event.getLatencyMillis()).isGreaterThan(0);
     assertThat(event.getSessionId()).isEqualTo(SESSION_ID);
   }
 
diff --git a/java/tests/instrumentation/src/com/android/textclassifier/subjects/EntitySubject.java b/java/tests/instrumentation/src/com/android/textclassifier/subjects/EntitySubject.java
new file mode 100644
index 0000000..38b53d4
--- /dev/null
+++ b/java/tests/instrumentation/src/com/android/textclassifier/subjects/EntitySubject.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.textclassifier.subjects;
+
+import static com.google.common.truth.Truth.assertAbout;
+
+import com.android.textclassifier.Entity;
+import com.google.common.truth.FailureMetadata;
+import com.google.common.truth.Subject;
+import javax.annotation.Nullable;
+
+/** Test helper for checking {@link com.android.textclassifier.Entity} results. */
+public final class EntitySubject extends Subject {
+
+  private static final float TOLERANCE = 0.0001f;
+
+  private final Entity entity;
+
+  public static EntitySubject assertThat(@Nullable Entity entity) {
+    return assertAbout(EntitySubject::new).that(entity);
+  }
+
+  private EntitySubject(FailureMetadata failureMetadata, @Nullable Entity entity) {
+    super(failureMetadata, entity);
+    this.entity = entity;
+  }
+
+  public void isMatchWithinTolerance(@Nullable Entity entity) {
+    if (!entity.getEntityType().equals(this.entity.getEntityType())) {
+      failWithActual("expected to have type", entity.getEntityType());
+    }
+    check("expected to have confidence score")
+        .that(entity.getScore())
+        .isWithin(TOLERANCE)
+        .of(this.entity.getScore());
+  }
+}
diff --git a/jni/Android.bp b/jni/Android.bp
index 5e7487b..4300d8e 100644
--- a/jni/Android.bp
+++ b/jni/Android.bp
@@ -12,6 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 java_library_static {
     name: "libtextclassifier-java",
     srcs: ["**/*.java"],
diff --git a/native/Android.bp b/native/Android.bp
index b521c4a..944acc5 100644
--- a/native/Android.bp
+++ b/native/Android.bp
@@ -12,9 +12,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 cc_library_headers {
     name: "libtextclassifier_hash_headers",
     vendor_available: true,
+    host_supported: true,
     export_include_dirs: ["."],
     apex_available: [
         "//apex_available:platform",
@@ -25,6 +35,8 @@
 
 cc_defaults {
     name: "libtextclassifier_hash_defaults",
+    vendor_available: true,
+    host_supported: true,
     srcs: [
         "utils/hash/farmhash.cc",
     ],
@@ -46,7 +58,6 @@
 cc_library_static {
     name: "libtextclassifier_hash_static",
     defaults: ["libtextclassifier_hash_defaults"],
-    vendor_available: true,
     sdk_version: "current",
     stl: "libc++_static",
     apex_available: [
@@ -100,6 +111,7 @@
     },
 
     header_libs: [
+        "jni_headers",
         "tensorflow_headers",
         "flatbuffer_headers",
         "libtextclassifier_flatbuffer_headers",
@@ -204,9 +216,6 @@
     ],
 
     compile_multilib: "prefer32",
-
-    // A workaround for code coverage. See b/166040889#comment23
-    sdk_variant_only: true,
 }
 
 // ------------------------------------
diff --git a/notification/Android.bp b/notification/Android.bp
index 966941d..277985b 100644
--- a/notification/Android.bp
+++ b/notification/Android.bp
@@ -15,6 +15,15 @@
 //
 
 // A library that contains all java classes with the AndroidManifest.
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 android_library {
     name: "TextClassifierNotificationLib",
     static_libs: ["TextClassifierNotificationLibNoManifest"],
diff --git a/notification/tests/Android.bp b/notification/tests/Android.bp
index d504496..903f6c4 100644
--- a/notification/tests/Android.bp
+++ b/notification/tests/Android.bp
@@ -14,6 +14,15 @@
 // limitations under the License.
 //
 
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "external_libtextclassifier_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["external_libtextclassifier_license"],
+}
+
 android_test {
     name: "TextClassifierNotificationTests",