Merge "Add unit tests for DevicePolicyEventLogger."
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyEventLoggerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyEventLoggerTest.java
new file mode 100644
index 0000000..b24bca8
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyEventLoggerTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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.server.devicepolicy;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.app.admin.DevicePolicyEventLogger;
+import android.content.ComponentName;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Unit tests for {@link DevicePolicyEventLogger}.
+ * <p/>
+ * Run with <code>atest DevicePolicyEventLoggerTest</code>.
+ */
+@RunWith(AndroidJUnit4.class)
+public class DevicePolicyEventLoggerTest {
+    @Test
+    public void testAllFields() {
+        final DevicePolicyEventLogger eventLogger = DevicePolicyEventLogger
+                .createEvent(5)
+                .setBoolean(true)
+                .setStrings("string1", "string2", "string3")
+                .setAdmin(new ComponentName("com.test.package", ".TestAdmin"))
+                .setInt(4321)
+                .setTimePeriod(1234L);
+        assertThat(eventLogger.getEventId()).isEqualTo(5);
+        assertThat(eventLogger.getBoolean()).isTrue();
+        assertThat(eventLogger.getStringArray())
+                .isEqualTo(new String[] {"string1", "string2", "string3"});
+        assertThat(eventLogger.getAdminPackageName()).isEqualTo("com.test.package");
+        assertThat(eventLogger.getInt()).isEqualTo(4321);
+        assertThat(eventLogger.getTimePeriod()).isEqualTo(1234L);
+    }
+
+    @Test
+    public void testStrings() {
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setStrings("string1", "string2", "string3").getStringArray())
+                .isEqualTo(new String[] {"string1", "string2", "string3"});
+
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setStrings("string1", new String[] {"string2", "string3"}).getStringArray())
+                .isEqualTo(new String[] {"string1", "string2", "string3"});
+
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setStrings("string1", "string2", new String[] {"string3"}).getStringArray())
+                .isEqualTo(new String[] {"string1", "string2", "string3"});
+
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setStrings((String) null).getStringArray())
+                .isEqualTo(new String[] {null});
+
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setStrings((String[]) null).getStringArray())
+                .isEqualTo(null);
+
+        assertThrows(NullPointerException.class, () -> DevicePolicyEventLogger
+                .createEvent(0)
+                .setStrings("string1", "string2", null));
+    }
+
+    @Test
+    public void testAdmins() {
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setAdmin("com.package.name")
+                .getAdminPackageName())
+                .isEqualTo("com.package.name");
+
+        assertThat(DevicePolicyEventLogger
+                .createEvent(0)
+                .setAdmin(new ComponentName("com.package.name", ".TestAdmin"))
+                .getAdminPackageName())
+                .isEqualTo("com.package.name");
+    }
+
+    @Test
+    public void testDefaultValues() {
+        final DevicePolicyEventLogger eventLogger = DevicePolicyEventLogger
+                .createEvent(0);
+        assertThat(eventLogger.getEventId()).isEqualTo(0);
+        assertThat(eventLogger.getBoolean()).isFalse();
+        assertThat(eventLogger.getStringArray()).isEqualTo(null);
+        assertThat(eventLogger.getAdminPackageName()).isEqualTo(null);
+        assertThat(eventLogger.getInt()).isEqualTo(0);
+        assertThat(eventLogger.getTimePeriod()).isEqualTo(0L);
+    }
+}