diff --git a/tests/src/com/android/mail/providers/protos/mock/MockUiProviderTests.java b/tests/src/com/android/mail/providers/protos/mock/MockUiProviderTests.java
index 98b8327..4e73a7c 100644
--- a/tests/src/com/android/mail/providers/protos/mock/MockUiProviderTests.java
+++ b/tests/src/com/android/mail/providers/protos/mock/MockUiProviderTests.java
@@ -148,7 +148,7 @@
                 }
             }
         }
-        assertEquals(count, 2);
+        assertEquals(2, count);
         count = 0;
         ArrayList<Uri> messageUris = new ArrayList<Uri>();
         for (Uri u : convUris) {
@@ -177,7 +177,7 @@
                 }
             }
         }
-        assertEquals(count, 4);
+        assertEquals(102, count);
         count = 0;
         ArrayList<Uri> attachmentUris = new ArrayList<Uri>();
         for (Uri u : messageUris) {
@@ -209,7 +209,7 @@
                 }
             }
         }
-        assertEquals(count, 2);
+        assertEquals(2, count);
         count = 0;
         for (Uri u : attachmentUris) {
             Cursor attachmentCursor = provider.query(u, UIProvider.ATTACHMENT_PROJECTION, null,
@@ -229,7 +229,7 @@
                 }
             }
         }
-        assertEquals(count, 2);
+        assertEquals(2, count);
     }
 
     private void traverseUri(Uri uri) {
