PageRenderTime 48ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/external/apache-harmony/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java

https://gitlab.com/brian0218/rk3188_r-box_android4.2.2_sdk
Java | 976 lines | 563 code | 108 blank | 305 comment | 51 complexity | 9492e5ff9ba9aceb240ae8803fe63304 MD5 | raw file
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.harmony.luni.tests.java.lang;
  18. import java.io.UnsupportedEncodingException;
  19. import java.util.Locale;
  20. import java.nio.charset.Charset;
  21. public class String2Test extends junit.framework.TestCase {
  22. String hw1 = "HelloWorld";
  23. String hw2 = "HelloWorld";
  24. String hwlc = "helloworld";
  25. String hwuc = "HELLOWORLD";
  26. String hello1 = "Hello";
  27. String world1 = "World";
  28. String comp11 = "Test String";
  29. Object obj = new Object();
  30. char[] buf = { 'W', 'o', 'r', 'l', 'd' };
  31. char[] rbuf = new char[5];
  32. /**
  33. * @tests java.lang.String#String()
  34. */
  35. public void test_Constructor() {
  36. // Test for method java.lang.String()
  37. assertTrue("Created incorrect string", new String().equals(""));
  38. }
  39. /**
  40. * @tests java.lang.String#String(byte[])
  41. */
  42. public void test_Constructor$B() {
  43. // Test for method java.lang.String(byte [])
  44. assertTrue("Failed to create string", new String(hw1.getBytes())
  45. .equals(hw1));
  46. }
  47. /**
  48. * @tests java.lang.String#String(byte[], int)
  49. */
  50. @SuppressWarnings("deprecation")
  51. public void test_Constructor$BI() {
  52. // Test for method java.lang.String(byte [], int)
  53. String s = new String(new byte[] { 65, 66, 67, 68, 69 }, 0);
  54. assertTrue("Incorrect string returned: " + s, s.equals("ABCDE"));
  55. s = new String(new byte[] { 65, 66, 67, 68, 69 }, 1);
  56. assertTrue("Did not use nonzero hibyte", !s.equals("ABCDE"));
  57. }
  58. /**
  59. * @tests java.lang.String#String(byte[], int, int)
  60. */
  61. public void test_Constructor$BII() {
  62. // Test for method java.lang.String(byte [], int, int)
  63. assertTrue("Failed to create string", new String(hw1.getBytes(), 0, hw1
  64. .getBytes().length).equals(hw1));
  65. boolean exception = false;
  66. try {
  67. new String(new byte[0], 0, Integer.MAX_VALUE);
  68. } catch (IndexOutOfBoundsException e) {
  69. exception = true;
  70. }
  71. assertTrue("Did not throw exception", exception);
  72. }
  73. /**
  74. * @tests java.lang.String#String(byte[], int, int, int)
  75. */
  76. @SuppressWarnings("deprecation")
  77. public void test_Constructor$BIII() {
  78. // Test for method java.lang.String(byte [], int, int, int)
  79. String s = new String(new byte[] { 65, 66, 67, 68, 69 }, 0, 1, 3);
  80. assertTrue("Incorrect string returned: " + s, s.equals("BCD"));
  81. s = new String(new byte[] { 65, 66, 67, 68, 69 }, 1, 0, 5);
  82. assertTrue("Did not use nonzero hibyte", !s.equals("ABCDE"));
  83. }
  84. /**
  85. * @tests java.lang.String#String(byte[], int, int, java.lang.String)
  86. */
  87. public void test_Constructor$BIILjava_lang_String() throws Exception {
  88. // Test for method java.lang.String(byte [], int, int, java.lang.String)
  89. String s = null;
  90. s = new String(new byte[] { 65, 66, 67, 68, 69 }, 0, 5, "8859_1");
  91. assertTrue("Incorrect string returned: " + s, s.equals("ABCDE"));
  92. // Regression for HARMONY-1111
  93. assertNotNull(new String(new byte[] { (byte) 0xC0 }, 0, 1, "UTF-8"));
  94. }
  95. /**
  96. * @tests java.lang.String#String(byte[], java.lang.String)
  97. */
  98. public void test_Constructor$BLjava_lang_String() throws Exception {
  99. // Test for method java.lang.String(byte [], java.lang.String)
  100. String s = null;
  101. s = new String(new byte[] { 65, 66, 67, 68, 69 }, "8859_1");
  102. assertTrue("Incorrect string returned: " + s, s.equals("ABCDE"));
  103. }
  104. /**
  105. * @tests java.lang.String#String(char[])
  106. */
  107. public void test_Constructor$C() {
  108. // Test for method java.lang.String(char [])
  109. assertEquals("Failed Constructor test", "World", new String(buf));
  110. }
  111. /**
  112. * @tests java.lang.String#String(char[], int, int)
  113. */
  114. public void test_Constructor$CII() {
  115. // Test for method java.lang.String(char [], int, int)
  116. char[] buf = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' };
  117. String s = new String(buf, 0, buf.length);
  118. assertTrue("Incorrect string created", hw1.equals(s));
  119. boolean exception = false;
  120. try {
  121. new String(new char[0], 0, Integer.MAX_VALUE);
  122. } catch (IndexOutOfBoundsException e) {
  123. exception = true;
  124. }
  125. assertTrue("Did not throw exception", exception);
  126. }
  127. /**
  128. * @tests java.lang.String#String(int[], int, int)
  129. */
  130. public void test_Constructor$III() {
  131. // Test for method java.lang.String(int [], int, int)
  132. try {
  133. new String(new int[0], 2, Integer.MAX_VALUE);
  134. fail("Did not throw exception");
  135. } catch (IndexOutOfBoundsException e) {
  136. // expected
  137. }
  138. }
  139. /**
  140. * @tests java.lang.String#String(java.lang.String)
  141. */
  142. public void test_ConstructorLjava_lang_String() {
  143. // Test for method java.lang.String(java.lang.String)
  144. String s = new String("Hello World");
  145. assertEquals("Failed to construct correct string", "Hello World", s);
  146. }
  147. /**
  148. * @tests java.lang.String#String(java.lang.StringBuffer)
  149. */
  150. public void test_ConstructorLjava_lang_StringBuffer() {
  151. // Test for method java.lang.String(java.lang.StringBuffer)
  152. StringBuffer sb = new StringBuffer();
  153. sb.append("HelloWorld");
  154. assertEquals("Created incorrect string", "HelloWorld", new String(sb));
  155. }
  156. /**
  157. * @tests java.lang.String#charAt(int)
  158. */
  159. public void test_charAtI() {
  160. // Test for method char java.lang.String.charAt(int)
  161. assertTrue("Incorrect character returned", hw1.charAt(5) == 'W'
  162. && (hw1.charAt(1) != 'Z'));
  163. }
  164. /**
  165. * @tests java.lang.String#compareTo(java.lang.String)
  166. */
  167. public void test_compareToLjava_lang_String() {
  168. // Test for method int java.lang.String.compareTo(java.lang.String)
  169. assertTrue("Returned incorrect value for first < second", "aaaaab"
  170. .compareTo("aaaaac") < 0);
  171. assertEquals("Returned incorrect value for first = second", 0, "aaaaac"
  172. .compareTo("aaaaac"));
  173. assertTrue("Returned incorrect value for first > second", "aaaaac"
  174. .compareTo("aaaaab") > 0);
  175. assertTrue("Considered case to not be of importance", !("A"
  176. .compareTo("a") == 0));
  177. try {
  178. "fixture".compareTo(null);
  179. fail("No NPE");
  180. } catch (NullPointerException e) {
  181. }
  182. }
  183. /**
  184. * @tests java.lang.String#compareToIgnoreCase(java.lang.String)
  185. */
  186. public void test_compareToIgnoreCaseLjava_lang_String() {
  187. // Test for method int
  188. // java.lang.String.compareToIgnoreCase(java.lang.String)
  189. assertTrue("Returned incorrect value for first < second", "aaaaab"
  190. .compareToIgnoreCase("aaaaac") < 0);
  191. assertEquals("Returned incorrect value for first = second", 0, "aaaaac"
  192. .compareToIgnoreCase("aaaaac"));
  193. assertTrue("Returned incorrect value for first > second", "aaaaac"
  194. .compareToIgnoreCase("aaaaab") > 0);
  195. assertEquals("Considered case to not be of importance", 0, "A"
  196. .compareToIgnoreCase("a"));
  197. assertTrue("0xbf should not compare = to 'ss'", "\u00df"
  198. .compareToIgnoreCase("ss") != 0);
  199. assertEquals("0x130 should compare = to 'i'", 0, "\u0130"
  200. .compareToIgnoreCase("i"));
  201. assertEquals("0x131 should compare = to 'i'", 0, "\u0131"
  202. .compareToIgnoreCase("i"));
  203. Locale defLocale = Locale.getDefault();
  204. try {
  205. Locale.setDefault(new Locale("tr", ""));
  206. assertEquals("Locale tr: 0x130 should compare = to 'i'", 0,
  207. "\u0130".compareToIgnoreCase("i"));
  208. assertEquals("Locale tr: 0x131 should compare = to 'i'", 0,
  209. "\u0131".compareToIgnoreCase("i"));
  210. } finally {
  211. Locale.setDefault(defLocale);
  212. }
  213. try {
  214. "fixture".compareToIgnoreCase(null);
  215. fail("No NPE");
  216. } catch (NullPointerException e) {
  217. }
  218. }
  219. /**
  220. * @tests java.lang.String#concat(java.lang.String)
  221. */
  222. public void test_concatLjava_lang_String() {
  223. // Test for method java.lang.String
  224. // java.lang.String.concat(java.lang.String)
  225. assertTrue("Concatenation failed to produce correct string", hello1
  226. .concat(world1).equals(hw1));
  227. boolean exception = false;
  228. try {
  229. String a = new String("test");
  230. String b = null;
  231. a.concat(b);
  232. } catch (NullPointerException e) {
  233. exception = true;
  234. }
  235. assertTrue("Concatenation failed to throw NP exception (1)", exception);
  236. exception = false;
  237. try {
  238. String a = new String("");
  239. String b = null;
  240. a.concat(b);
  241. } catch (NullPointerException e) {
  242. exception = true;
  243. }
  244. assertTrue("Concatenation failed to throw NP exception (2)", exception);
  245. String s1 = "";
  246. String s2 = "s2";
  247. String s3 = s1.concat(s2);
  248. assertEquals(s2, s3);
  249. // The RI returns a new string even when it's the same as the argument string.
  250. // assertNotSame(s2, s3);
  251. s3 = s2.concat(s1);
  252. assertEquals(s2, s3);
  253. // Neither Android nor the RI returns a new string when it's the same as *this*.
  254. // assertNotSame(s2, s3);
  255. s3 = s2.concat(s1);
  256. assertSame(s2, s3);
  257. }
  258. /**
  259. * @tests java.lang.String#copyValueOf(char[])
  260. */
  261. public void test_copyValueOf$C() {
  262. // Test for method java.lang.String java.lang.String.copyValueOf(char
  263. // [])
  264. char[] t = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' };
  265. assertEquals("copyValueOf returned incorrect String", "HelloWorld",
  266. String.copyValueOf(t));
  267. }
  268. /**
  269. * @tests java.lang.String#copyValueOf(char[], int, int)
  270. */
  271. public void test_copyValueOf$CII() {
  272. // Test for method java.lang.String java.lang.String.copyValueOf(char
  273. // [], int, int)
  274. char[] t = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' };
  275. assertEquals("copyValueOf returned incorrect String", "World", String
  276. .copyValueOf(t, 5, 5));
  277. }
  278. /**
  279. * @tests java.lang.String#endsWith(java.lang.String)
  280. */
  281. public void test_endsWithLjava_lang_String() {
  282. // Test for method boolean java.lang.String.endsWith(java.lang.String)
  283. assertTrue("Failed to fine ending string", hw1.endsWith("ld"));
  284. }
  285. /**
  286. * @tests java.lang.String#equals(java.lang.Object)
  287. */
  288. public void test_equalsLjava_lang_Object() {
  289. assertEquals("String not equal", hw1, hw2);
  290. assertEquals("Empty string equals check", "", "");
  291. assertEquals("Null string equals check", (String)null, (String)null);
  292. assertFalse("Unequal strings reports as equal", hw1.equals(comp11));
  293. assertFalse("Null string comparison failed", hw1.equals((String)null));
  294. }
  295. /**
  296. * @tests java.lang.String#equalsIgnoreCase(java.lang.String)
  297. */
  298. public void test_equalsIgnoreCaseLjava_lang_String() {
  299. // Test for method boolean
  300. // java.lang.String.equalsIgnoreCase(java.lang.String)
  301. assertTrue("lc version returned unequal to uc", hwlc
  302. .equalsIgnoreCase(hwuc));
  303. }
  304. /**
  305. * @tests java.lang.String#getBytes()
  306. */
  307. public void test_getBytes() {
  308. // Test for method byte [] java.lang.String.getBytes()
  309. byte[] sbytes = hw1.getBytes();
  310. for (int i = 0; i < hw1.length(); i++) {
  311. assertTrue("Returned incorrect bytes", sbytes[i] == (byte) hw1.charAt(i));
  312. }
  313. char[] chars = new char[1];
  314. for (int i = 0; i < 65536; i++) {
  315. // skip surrogates
  316. if (i == 0xd800)
  317. i = 0xe000;
  318. byte[] result = null;
  319. chars[0] = (char) i;
  320. String string = new String(chars);
  321. try {
  322. result = string.getBytes("8859_1");
  323. if (i < 256) {
  324. assertEquals((byte) i, result[0]);
  325. } else {
  326. /*
  327. * Substitute character should be 0x1A [1], but may be '?'
  328. * character. [1]
  329. * http://en.wikipedia.org/wiki/Substitute_character
  330. */
  331. assertTrue(result[0] == '?' || result[0] == 0x1a);
  332. }
  333. } catch (java.io.UnsupportedEncodingException e) {
  334. }
  335. try {
  336. result = string.getBytes("UTF8");
  337. int length = i < 0x80 ? 1 : (i < 0x800 ? 2 : 3);
  338. assertTrue("Wrong length UTF8: " + Integer.toHexString(i),
  339. result.length == length);
  340. assertTrue(
  341. "Wrong bytes UTF8: " + Integer.toHexString(i),
  342. (i < 0x80 && result[0] == i)
  343. || (i >= 0x80
  344. && i < 0x800
  345. && result[0] == (byte) (0xc0 | ((i & 0x7c0) >> 6)) && result[1] == (byte) (0x80 | (i & 0x3f)))
  346. || (i >= 0x800
  347. && result[0] == (byte) (0xe0 | (i >> 12))
  348. && result[1] == (byte) (0x80 | ((i & 0xfc0) >> 6)) && result[2] == (byte) (0x80 | (i & 0x3f))));
  349. } catch (java.io.UnsupportedEncodingException e) {
  350. }
  351. String bytes = null;
  352. try {
  353. bytes = new String(result, "UTF8");
  354. assertTrue("Wrong UTF8 byte length: " + bytes.length() + "("
  355. + i + ")", bytes.length() == 1);
  356. assertTrue(
  357. "Wrong char UTF8: "
  358. + Integer.toHexString(bytes.charAt(0)) + " ("
  359. + i + ")", bytes.charAt(0) == i);
  360. } catch (java.io.UnsupportedEncodingException e) {
  361. }
  362. }
  363. byte[] bytes = new byte[1];
  364. for (int i = 0; i < 256; i++) {
  365. bytes[0] = (byte) i;
  366. String result = null;
  367. try {
  368. result = new String(bytes, "8859_1");
  369. assertEquals("Wrong char length", 1, result.length());
  370. assertTrue("Wrong char value", result.charAt(0) == (char) i);
  371. } catch (java.io.UnsupportedEncodingException e) {
  372. }
  373. }
  374. }
  375. /**
  376. * @tests java.lang.String#getBytes(int, int, byte[], int)
  377. */
  378. @SuppressWarnings("deprecation")
  379. public void test_getBytesII$BI() {
  380. // Test for method void java.lang.String.getBytes(int, int, byte [],
  381. // int)
  382. byte[] buf = new byte[5];
  383. "Hello World".getBytes(6, 11, buf, 0);
  384. assertEquals("Returned incorrect bytes", "World", new String(buf));
  385. try {
  386. "Hello World".getBytes(-1, 1, null, 0);
  387. fail("Expected StringIndexOutOfBoundsException");
  388. } catch (StringIndexOutOfBoundsException e) {
  389. } catch (NullPointerException e) {
  390. fail("Threw wrong exception");
  391. }
  392. }
  393. /**
  394. * @tests java.lang.String#getBytes(java.lang.String)
  395. */
  396. public void test_getBytesLjava_lang_String() throws Exception {
  397. // Test for method byte [] java.lang.String.getBytes(java.lang.String)
  398. byte[] buf = "Hello World".getBytes();
  399. assertEquals("Returned incorrect bytes", "Hello World", new String(buf));
  400. try {
  401. "string".getBytes("8849_1");
  402. fail("No UnsupportedEncodingException");
  403. } catch (UnsupportedEncodingException e) {
  404. }
  405. byte[] bytes = "\u3048".getBytes("UTF-8");
  406. byte[] expected = new byte[] { (byte) 0xE3, (byte) 0x81, (byte) 0x88 };
  407. assertEquals(expected[0], bytes[0]);
  408. assertEquals(expected[1], bytes[1]);
  409. assertEquals(expected[2], bytes[2]);
  410. // Regression for HARMONY-663
  411. try {
  412. "string".getBytes("?Q?D??_??_6ffa?+vG?_??\u951f\ufffd??");
  413. fail("No UnsupportedEncodingException");
  414. } catch (UnsupportedEncodingException e) {
  415. // expected
  416. }
  417. // Regression for HARMONY-4135
  418. bytes = "-".getBytes("UTF-16");
  419. expected = new byte[] { -2, -1 };
  420. assertEquals(expected[0], bytes[0]);
  421. assertEquals(expected[1], bytes[1]);
  422. }
  423. /*
  424. * @tests java.lang.String#getBytes()
  425. */
  426. public void test_getBytes_NPE() throws Exception {
  427. try {
  428. "abc".getBytes((String) null);
  429. fail("Should throw NullPointerException");
  430. } catch (UnsupportedEncodingException whatTheRiDocumentsAndWeThrow) {
  431. } catch (NullPointerException whatTheRiActuallyThrows) {
  432. }
  433. try {
  434. "Hello World".getBytes(1, 2, null, 1);
  435. fail("Should throw NullPointerException");
  436. } catch (NullPointerException e) {
  437. // Expected
  438. }
  439. }
  440. /**
  441. * @tests java.lang.String#getChars(int, int, char[], int)
  442. */
  443. public void test_getCharsII$CI() {
  444. // Test for method void java.lang.String.getChars(int, int, char [],
  445. // int)
  446. hw1.getChars(5, hw1.length(), rbuf, 0);
  447. for (int i = 0; i < rbuf.length; i++)
  448. assertTrue("getChars returned incorrect char(s)", rbuf[i] == buf[i]);
  449. }
  450. /**
  451. * @tests java.lang.String#hashCode()
  452. */
  453. public void test_hashCode() {
  454. // Test for method int java.lang.String.hashCode()
  455. int hwHashCode = 0;
  456. final int hwLength = hw1.length();
  457. int powerOfThirtyOne = 1;
  458. for (int counter = hwLength - 1; counter >= 0; counter--) {
  459. hwHashCode += hw1.charAt(counter) * powerOfThirtyOne;
  460. powerOfThirtyOne *= 31;
  461. }
  462. assertEquals("String did not hash to correct value", hwHashCode, hw1.hashCode());
  463. assertEquals("The empty string \"\" did not hash to zero", 0, "".hashCode());
  464. assertEquals("Calculated wrong string hashcode", -1933545242, "Harmony".hashCode());
  465. }
  466. /**
  467. * @tests java.lang.String#indexOf(int)
  468. */
  469. public void test_indexOfI() {
  470. // Test for method int java.lang.String.indexOf(int)
  471. assertEquals("Invalid index returned", 1, hw1.indexOf('e'));
  472. assertEquals("Invalid index returned", 1, "a\ud800\udc00".indexOf(0x10000));
  473. }
  474. /**
  475. * @tests java.lang.String#indexOf(int, int)
  476. */
  477. public void test_indexOfII() {
  478. // Test for method int java.lang.String.indexOf(int, int)
  479. assertEquals("Invalid character index returned", 5, hw1.indexOf('W', 2));
  480. assertEquals("Invalid index returned", 2, "ab\ud800\udc00".indexOf(0x10000, 1));
  481. }
  482. /**
  483. * @tests java.lang.String#indexOf(java.lang.String)
  484. */
  485. public void test_indexOfLjava_lang_String() {
  486. // Test for method int java.lang.String.indexOf(java.lang.String)
  487. assertTrue("Failed to find string", hw1.indexOf("World") > 0);
  488. assertTrue("Failed to find string", !(hw1.indexOf("ZZ") > 0));
  489. }
  490. /**
  491. * @tests java.lang.String#indexOf(java.lang.String, int)
  492. */
  493. public void test_indexOfLjava_lang_StringI() {
  494. // Test for method int java.lang.String.indexOf(java.lang.String, int)
  495. assertTrue("Failed to find string", hw1.indexOf("World", 0) > 0);
  496. assertTrue("Found string outside index", !(hw1.indexOf("Hello", 6) > 0));
  497. assertEquals("Did not accept valid negative starting position", 0,
  498. hello1.indexOf("", -5));
  499. assertEquals("Reported wrong error code", 5, hello1.indexOf("", 5));
  500. assertEquals("Wrong for empty in empty", 0, "".indexOf("", 0));
  501. }
  502. /**
  503. * @tests java.lang.String#intern()
  504. */
  505. public void test_intern() {
  506. // Test for method java.lang.String java.lang.String.intern()
  507. assertTrue("Intern returned incorrect result", hw1.intern() == hw2
  508. .intern());
  509. }
  510. /**
  511. * @tests java.lang.String#lastIndexOf(int)
  512. */
  513. public void test_lastIndexOfI() {
  514. // Test for method int java.lang.String.lastIndexOf(int)
  515. assertEquals("Failed to return correct index", 5, hw1.lastIndexOf('W'));
  516. assertEquals("Returned index for non-existent char", -1, hw1
  517. .lastIndexOf('Z'));
  518. assertEquals("Failed to return correct index", 1, "a\ud800\udc00"
  519. .lastIndexOf(0x10000));
  520. }
  521. /**
  522. * @tests java.lang.String#lastIndexOf(int, int)
  523. */
  524. public void test_lastIndexOfII() {
  525. // Test for method int java.lang.String.lastIndexOf(int, int)
  526. assertEquals("Failed to return correct index", 5, hw1.lastIndexOf('W',
  527. 6));
  528. assertEquals("Returned index for char out of specified range", -1, hw1
  529. .lastIndexOf('W', 4));
  530. assertEquals("Returned index for non-existent char", -1, hw1
  531. .lastIndexOf('Z', 9));
  532. }
  533. /**
  534. * @tests java.lang.String#lastIndexOf(java.lang.String)
  535. */
  536. public void test_lastIndexOfLjava_lang_String() {
  537. // Test for method int java.lang.String.lastIndexOf(java.lang.String)
  538. assertEquals("Returned incorrect index", 5, hw1.lastIndexOf("World"));
  539. assertEquals("Found String outside of index", -1, hw1
  540. .lastIndexOf("HeKKKKKKKK"));
  541. }
  542. /**
  543. * @tests java.lang.String#lastIndexOf(java.lang.String, int)
  544. */
  545. public void test_lastIndexOfLjava_lang_StringI() {
  546. // Test for method int java.lang.String.lastIndexOf(java.lang.String,
  547. // int)
  548. assertEquals("Returned incorrect index", 5, hw1.lastIndexOf("World", 9));
  549. int result = hw1.lastIndexOf("Hello", 2);
  550. assertTrue("Found String outside of index: " + result, result == 0);
  551. assertEquals("Reported wrong error code", -1, hello1
  552. .lastIndexOf("", -5));
  553. assertEquals("Did not accept valid large starting position", 5, hello1
  554. .lastIndexOf("", 5));
  555. }
  556. /**
  557. * @tests java.lang.String#length()
  558. */
  559. public void test_length() {
  560. // Test for method int java.lang.String.length()
  561. assertEquals("Invalid length returned", 11, comp11.length());
  562. }
  563. /**
  564. * @tests java.lang.String#regionMatches(int, java.lang.String, int, int)
  565. */
  566. public void test_regionMatchesILjava_lang_StringII() {
  567. // Test for method boolean java.lang.String.regionMatches(int,
  568. // java.lang.String, int, int)
  569. String bogusString = "xxcedkedkleiorem lvvwr e''' 3r3r 23r";
  570. assertTrue("identical regions failed comparison", hw1.regionMatches(2,
  571. hw2, 2, 5));
  572. assertTrue("Different regions returned true", !hw1.regionMatches(2,
  573. bogusString, 2, 5));
  574. }
  575. /**
  576. * @tests java.lang.String#regionMatches(boolean, int, java.lang.String,
  577. * int, int)
  578. */
  579. public void test_regionMatchesZILjava_lang_StringII() {
  580. // Test for method boolean java.lang.String.regionMatches(boolean, int,
  581. // java.lang.String, int, int)
  582. String bogusString = "xxcedkedkleiorem lvvwr e''' 3r3r 23r";
  583. assertTrue("identical regions failed comparison", hw1.regionMatches(
  584. false, 2, hw2, 2, 5));
  585. assertTrue("identical regions failed comparison with different cases",
  586. hw1.regionMatches(true, 2, hw2, 2, 5));
  587. assertTrue("Different regions returned true", !hw1.regionMatches(true,
  588. 2, bogusString, 2, 5));
  589. assertTrue("identical regions failed comparison with different cases",
  590. hw1.regionMatches(false, 2, hw2, 2, 5));
  591. }
  592. /**
  593. * @tests java.lang.String#replace(char, char)
  594. */
  595. public void test_replaceCC() {
  596. // Test for method java.lang.String java.lang.String.replace(char, char)
  597. assertEquals("Failed replace", "HezzoWorzd", hw1.replace('l', 'z'));
  598. }
  599. /**
  600. * @tests java.lang.String#replace(CharSequence, CharSequence)
  601. */
  602. public void test_replaceLjava_langCharSequenceLjava_langCharSequence() {
  603. assertEquals("Failed replace", "aaccdd", "aabbdd".replace(
  604. new StringBuffer("bb"), "cc"));
  605. assertEquals("Failed replace by bigger seq", "cccbccc", "aba".replace(
  606. "a", "ccc"));
  607. assertEquals("Failed replace by smaller seq", "$bba^", "$aaaaa^"
  608. .replace(new StringBuilder("aa"), "b"));
  609. assertEquals("Failed to replace empty string", "%%a%%b%%c%%",
  610. "abc".replace("", "%%"));
  611. assertEquals("Failed to replace with empty string", "aacc",
  612. "aabbcc".replace("b", ""));
  613. assertEquals("Failed to replace in empty string", "abc",
  614. "".replace("", "abc"));
  615. }
  616. /**
  617. * @tests java.lang.String#startsWith(java.lang.String)
  618. */
  619. public void test_startsWithLjava_lang_String() {
  620. // Test for method boolean java.lang.String.startsWith(java.lang.String)
  621. assertTrue("Failed to find string", hw1.startsWith("Hello"));
  622. assertTrue("Found incorrect string", !hw1.startsWith("T"));
  623. }
  624. /**
  625. * @tests java.lang.String#startsWith(java.lang.String, int)
  626. */
  627. public void test_startsWithLjava_lang_StringI() {
  628. // Test for method boolean java.lang.String.startsWith(java.lang.String,
  629. // int)
  630. assertTrue("Failed to find string", hw1.startsWith("World", 5));
  631. assertTrue("Found incorrect string", !hw1.startsWith("Hello", 5));
  632. }
  633. /**
  634. * @tests java.lang.String#substring(int)
  635. */
  636. public void test_substringI() {
  637. // Test for method java.lang.String java.lang.String.substring(int)
  638. assertEquals("Incorrect substring returned", "World", hw1.substring(5));
  639. assertTrue("not identical", hw1.substring(0) == hw1);
  640. }
  641. /**
  642. * @tests java.lang.String#substring(int, int)
  643. */
  644. public void test_substringII() {
  645. // Test for method java.lang.String java.lang.String.substring(int, int)
  646. assertTrue("Incorrect substring returned", hw1.substring(0, 5).equals(
  647. "Hello")
  648. && (hw1.substring(5, 10).equals("World")));
  649. assertTrue("not identical", hw1.substring(0, hw1.length()) == hw1);
  650. }
  651. /**
  652. * @tests java.lang.String#substring(int, int)
  653. */
  654. public void test_substringErrorMessage() {
  655. try {
  656. hw1.substring(-1, 1);
  657. } catch (StringIndexOutOfBoundsException ex) {
  658. String msg = ex.getMessage();
  659. assertTrue("Expected message to contain -1: " + msg, msg
  660. .indexOf("-1") != -1);
  661. }
  662. try {
  663. hw1.substring(4, 1);
  664. } catch (StringIndexOutOfBoundsException ex) {
  665. String msg = ex.getMessage();
  666. assertTrue("Expected message to contain -3: " + msg, msg
  667. .indexOf("-3") != -1);
  668. }
  669. try {
  670. hw1.substring(0, 100);
  671. } catch (StringIndexOutOfBoundsException ex) {
  672. String msg = ex.getMessage();
  673. assertTrue("Expected message to contain 100: " + msg, msg
  674. .indexOf("100") != -1);
  675. }
  676. }
  677. /**
  678. * @tests java.lang.String#toCharArray()
  679. */
  680. public void test_toCharArray() {
  681. // Test for method char [] java.lang.String.toCharArray()
  682. String s = new String(buf, 0, buf.length);
  683. char[] schars = s.toCharArray();
  684. for (int i = 0; i < s.length(); i++)
  685. assertTrue("Returned incorrect char aray", buf[i] == schars[i]);
  686. }
  687. /**
  688. * @tests java.lang.String#toLowerCase()
  689. */
  690. public void test_toLowerCase() {
  691. // Test for method java.lang.String java.lang.String.toLowerCase()
  692. assertTrue("toLowerCase case conversion did not succeed", hwuc
  693. .toLowerCase().equals(hwlc));
  694. assertEquals(
  695. "a) Sigma has ordinary lower case value when isolated with Unicode 4.0",
  696. "\u03c3", "\u03a3".toLowerCase());
  697. assertEquals(
  698. "b) Sigma has final form lower case value at end of word with Unicode 4.0",
  699. "a\u03c2", "a\u03a3".toLowerCase());
  700. assertEquals("toLowerCase case conversion did not succeed",
  701. "\uD801\uDC44", "\uD801\uDC1C".toLowerCase());
  702. }
  703. /**
  704. * @tests java.lang.String#toLowerCase(java.util.Locale)
  705. */
  706. public void test_toLowerCaseLjava_util_Locale() {
  707. // Test for method java.lang.String
  708. // java.lang.String.toLowerCase(java.util.Locale)
  709. assertTrue("toLowerCase case conversion did not succeed", hwuc
  710. .toLowerCase(java.util.Locale.getDefault()).equals(hwlc));
  711. assertEquals("Invalid \\u0049 for English", "\u0069", "\u0049"
  712. .toLowerCase(Locale.ENGLISH));
  713. assertEquals("Invalid \\u0049 for Turkish", "\u0131", "\u0049"
  714. .toLowerCase(new Locale("tr", "")));
  715. }
  716. /**
  717. * @tests java.lang.String#toString()
  718. */
  719. public void test_toString() {
  720. // Test for method java.lang.String java.lang.String.toString()
  721. assertTrue("Incorrect string returned", hw1.toString().equals(hw1));
  722. }
  723. /**
  724. * @tests java.lang.String#toUpperCase()
  725. */
  726. public void test_toUpperCase() {
  727. // Test for method java.lang.String java.lang.String.toUpperCase()
  728. assertTrue("Returned string is not UpperCase", hwlc.toUpperCase()
  729. .equals(hwuc));
  730. assertEquals("Wrong conversion", "SS", "\u00df".toUpperCase());
  731. String s = "a\u00df\u1f56";
  732. assertTrue("Invalid conversion", !s.toUpperCase().equals(s));
  733. assertEquals("toUpperCase case conversion did not succeed",
  734. "\uD801\uDC1C", "\uD801\uDC44".toUpperCase());
  735. }
  736. /**
  737. * @tests java.lang.String#toUpperCase(java.util.Locale)
  738. */
  739. public void test_toUpperCaseLjava_util_Locale() {
  740. // Test for method java.lang.String
  741. // java.lang.String.toUpperCase(java.util.Locale)
  742. assertTrue("Returned string is not UpperCase", hwlc.toUpperCase()
  743. .equals(hwuc));
  744. assertEquals("Invalid \\u0069 for English", "\u0049", "\u0069"
  745. .toUpperCase(Locale.ENGLISH));
  746. assertEquals("Invalid \\u0069 for Turkish", "\u0130", "\u0069"
  747. .toUpperCase(new Locale("tr", "")));
  748. }
  749. /**
  750. * @tests java.lang.String#toUpperCase(java.util.Locale)
  751. */
  752. public void test_toUpperCaseLjava_util_Locale_subtest0() {
  753. // Test for method java.lang.String
  754. // java.lang.String.toUpperCase(java.util.Locale)
  755. }
  756. /**
  757. * @tests java.lang.String#trim()
  758. */
  759. public void test_trim() {
  760. // Test for method java.lang.String java.lang.String.trim()
  761. assertTrue("Incorrect string returned", " HelloWorld ".trim().equals(
  762. hw1));
  763. }
  764. /**
  765. * @tests java.lang.String#valueOf(char[])
  766. */
  767. public void test_valueOf$C() {
  768. // Test for method java.lang.String java.lang.String.valueOf(char [])
  769. assertEquals("Returned incorrect String", "World", String.valueOf(buf));
  770. }
  771. /**
  772. * @tests java.lang.String#valueOf(char[], int, int)
  773. */
  774. public void test_valueOf$CII() {
  775. // Test for method java.lang.String java.lang.String.valueOf(char [],
  776. // int, int)
  777. char[] t = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' };
  778. assertEquals("copyValueOf returned incorrect String", "World", String
  779. .valueOf(t, 5, 5));
  780. }
  781. /**
  782. * @tests java.lang.String#valueOf(char)
  783. */
  784. public void test_valueOfC() {
  785. // Test for method java.lang.String java.lang.String.valueOf(char)
  786. for (int i = 0; i < 65536; i++)
  787. assertTrue("Incorrect valueOf(char) returned: " + i, String
  788. .valueOf((char) i).charAt(0) == (char) i);
  789. }
  790. /**
  791. * @tests java.lang.String#valueOf(double)
  792. */
  793. public void test_valueOfD() {
  794. // Test for method java.lang.String java.lang.String.valueOf(double)
  795. assertEquals("Incorrect double string returned",
  796. "1.7976931348623157E308", String.valueOf(Double.MAX_VALUE));
  797. }
  798. /**
  799. * @tests java.lang.String#valueOf(float)
  800. */
  801. public void test_valueOfF() {
  802. // Test for method java.lang.String java.lang.String.valueOf(float)
  803. assertTrue("incorrect float string returned--got: "
  804. + String.valueOf(1.0F) + " wanted: 1.0", String.valueOf(1.0F)
  805. .equals("1.0"));
  806. assertTrue("incorrect float string returned--got: "
  807. + String.valueOf(0.9F) + " wanted: 0.9", String.valueOf(0.9F)
  808. .equals("0.9"));
  809. assertTrue("incorrect float string returned--got: "
  810. + String.valueOf(109.567F) + " wanted: 109.567", String
  811. .valueOf(109.567F).equals("109.567"));
  812. }
  813. /**
  814. * @tests java.lang.String#valueOf(int)
  815. */
  816. public void test_valueOfI() {
  817. // Test for method java.lang.String java.lang.String.valueOf(int)
  818. assertEquals("returned invalid int string", "1", String.valueOf(1));
  819. }
  820. /**
  821. * @tests java.lang.String#valueOf(long)
  822. */
  823. public void test_valueOfJ() {
  824. // Test for method java.lang.String java.lang.String.valueOf(long)
  825. assertEquals("returned incorrect long string", "927654321098", String
  826. .valueOf(927654321098L));
  827. }
  828. /**
  829. * @tests java.lang.String#valueOf(java.lang.Object)
  830. */
  831. public void test_valueOfLjava_lang_Object() {
  832. // Test for method java.lang.String
  833. // java.lang.String.valueOf(java.lang.Object)
  834. assertTrue("Incorrect Object string returned", obj.toString().equals(
  835. String.valueOf(obj)));
  836. }
  837. /**
  838. * @tests java.lang.String#valueOf(boolean)
  839. */
  840. public void test_valueOfZ() {
  841. // Test for method java.lang.String java.lang.String.valueOf(boolean)
  842. assertTrue("Incorrect boolean string returned", String.valueOf(false)
  843. .equals("false")
  844. && (String.valueOf(true).equals("true")));
  845. }
  846. /**
  847. * @tests java.lang.String#contentEquals(CharSequence cs)
  848. */
  849. public void test_contentEqualsLjava_lang_CharSequence() {
  850. // Test for method java.lang.String
  851. // java.lang.String.contentEquals(CharSequence cs)
  852. assertFalse("Incorrect result of compare", "qwerty".contentEquals(""));
  853. }
  854. /**
  855. * @tests java.lang.String#format(Locale, String, Object[])
  856. */
  857. @SuppressWarnings("boxing")
  858. public void test_format() {
  859. assertEquals("13% of sum is 0x11", String.format("%d%% of %s is 0x%x",
  860. 13, "sum", 17));
  861. assertEquals("empty format", "", String.format("", 123, this));
  862. try {
  863. String.format(null);
  864. fail("NPE is expected on null format");
  865. } catch (NullPointerException ok) {
  866. }
  867. }
  868. }