Fix the issue in testCalculateLength

Should set maxChars dynamically according to carrier's capability
about long sms.

BUG:25328604
Change-Id: Ief28d60576e5b17c5e56fb56b8858439e4831bc2
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java
index d90e394..2db9ba1 100644
--- a/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java
@@ -301,11 +301,19 @@
         int[] result = SmsMessage.calculateLength(LONG_TEXT_WITH_32BIT_CHARS, false);
         assertEquals(3, result[0]);
         assertEquals(LONG_TEXT_WITH_32BIT_CHARS.length(), result[1]);
+        // 3 parts, each with (SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2) 16-bit
+        // characters. We need to subtract one because a 32-bit character crosses the
+        // boundary of 2 parts.
+        int preMaxChars = 3 * SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2 - 1;
+        // If EMS is not supported, break down EMS into single segment SMS
+        // and add page info "x/y".
+        // In the case of UCS2 encoding type, we need 8 bytes for this
+        // but we only have 6 bytes from UDH, so truncate the limit for
+        // each segment by 2 bytes (1 char). This log sms has three segments,
+        // so truncate the limit by 3 char in total
+        int maxChars = SmsMessage.hasEmsSupport() ? preMaxChars : preMaxChars - 3;
         assertRemaining(LONG_TEXT_WITH_32BIT_CHARS.length(), result[2],
-                // 3 parts, each with (SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2) 16-bit
-                // characters. We need to subtract one because a 32-bit character crosses the
-                // boundary of 2 parts.
-                3 * SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2 - 1);
+                maxChars);
         assertEquals(SmsMessage.ENCODING_16BIT, result[3]);
     }