From ed4af4389d6c8e57eb3d3f3bd9ae1ecb49267e91 Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Mon, 20 Jun 2022 01:05:35 -0400 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=90=86=E8=A7=A3=20Java=20?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=20NumberFormatException=20=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20=E7=9A=84=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PasswordStoreExamplesUnitTest.java | 126 ++++++++++++------ 1 file changed, 82 insertions(+), 44 deletions(-) diff --git a/core-java-modules/core-java-strings/src/test/java/com/ossez/chararraypassword/PasswordStoreExamplesUnitTest.java b/core-java-modules/core-java-strings/src/test/java/com/ossez/chararraypassword/PasswordStoreExamplesUnitTest.java index 5ba9fb83c4..17080c9ff7 100644 --- a/core-java-modules/core-java-strings/src/test/java/com/ossez/chararraypassword/PasswordStoreExamplesUnitTest.java +++ b/core-java-modules/core-java-strings/src/test/java/com/ossez/chararraypassword/PasswordStoreExamplesUnitTest.java @@ -8,63 +8,101 @@ import static org.assertj.core.api.Assertions.assertThat; public class PasswordStoreExamplesUnitTest { - String stringPassword = "password"; - char[] charPassword = new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}; + String stringPassword = "password"; + char[] charPassword = new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}; - @Test - public void givenStringHashCode_WhenStringValueChanged_ThenHashCodesNotEqualAndValesNotEqual() { - String originalHashCode = Integer.toHexString(stringPassword.hashCode()); + @Test + public void givenStringHashCode_WhenStringValueChanged_ThenHashCodesNotEqualAndValesNotEqual() { + String originalHashCode = Integer.toHexString(stringPassword.hashCode()); - stringPassword = "********"; - String changedHashCode = Integer.toHexString(stringPassword.hashCode()); + stringPassword = "********"; + String changedHashCode = Integer.toHexString(stringPassword.hashCode()); - assertThat(originalHashCode).isNotEqualTo(changedHashCode); - assertThat(stringPassword).isNotEqualTo("password"); - } + assertThat(originalHashCode).isNotEqualTo(changedHashCode); + assertThat(stringPassword).isNotEqualTo("password"); + } - @Test - public void givenStringHashCode_WhenStringValueChangedAndStringValueReassigned_ThenHashCodesEqualAndValesEqual() { - String originalHashCode = Integer.toHexString(stringPassword.hashCode()); + @Test + public void givenStringHashCode_WhenStringValueChangedAndStringValueReassigned_ThenHashCodesEqualAndValesEqual() { + String originalHashCode = Integer.toHexString(stringPassword.hashCode()); - stringPassword = "********"; - stringPassword = "password"; - String reassignedHashCode = Integer.toHexString(stringPassword.hashCode()); + stringPassword = "********"; + stringPassword = "password"; + String reassignedHashCode = Integer.toHexString(stringPassword.hashCode()); - assertThat(originalHashCode).isEqualTo(reassignedHashCode); - assertThat(stringPassword).isEqualTo("password"); - } + assertThat(originalHashCode).isEqualTo(reassignedHashCode); + assertThat(stringPassword).isEqualTo("password"); + } - @Test - public void givenStringHashCode_WhenStringValueReplaced_ThenHashCodesEqualAndValesEqual() { - String originalHashCode = Integer.toHexString(stringPassword.hashCode()); + @Test + public void givenStringHashCode_WhenStringValueReplaced_ThenHashCodesEqualAndValesEqual() { + String originalHashCode = Integer.toHexString(stringPassword.hashCode()); - String newString = "********"; - stringPassword.replace(stringPassword, newString); + String newString = "********"; + stringPassword.replace(stringPassword, newString); - String hashCodeAfterReplace = Integer.toHexString(stringPassword.hashCode()); + String hashCodeAfterReplace = Integer.toHexString(stringPassword.hashCode()); - assertThat(originalHashCode).isEqualTo(hashCodeAfterReplace); - assertThat(stringPassword).isEqualTo("password"); - } + assertThat(originalHashCode).isEqualTo(hashCodeAfterReplace); + assertThat(stringPassword).isEqualTo("password"); + } - @Test - public void givenCharArrayHashCode_WhenArrayElementsValueChanged_ThenHashCodesEqualAndValesNotEqual() { - String originalHashCode = Integer.toHexString(charPassword.hashCode()); + @Test + public void givenCharArrayHashCode_WhenArrayElementsValueChanged_ThenHashCodesEqualAndValesNotEqual() { + String originalHashCode = Integer.toHexString(charPassword.hashCode()); - Arrays.fill(charPassword, '*'); - String changedHashCode = Integer.toHexString(charPassword.hashCode()); + Arrays.fill(charPassword, '*'); + String changedHashCode = Integer.toHexString(charPassword.hashCode()); - assertThat(originalHashCode).isEqualTo(changedHashCode); - assertThat(charPassword).isNotEqualTo(new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}); - } + assertThat(originalHashCode).isEqualTo(changedHashCode); + assertThat(charPassword).isNotEqualTo(new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}); + } - @Test - public void whenCallingToStringOfString_ThenValuesEqual() { - assertThat(stringPassword.toString()).isEqualTo("password"); - } + @Test + public void whenCallingToStringOfString_ThenValuesEqual() { + assertThat(stringPassword.toString()).isEqualTo("password"); + } - @Test - public void whenCallingToStringOfCharArray_ThenValuesNotEqual() { - assertThat(charPassword.toString()).isNotEqualTo("password"); - } + @Test + public void whenCallingToStringOfCharArray_ThenValuesNotEqual() { + assertThat(charPassword.toString()).isNotEqualTo("password"); + } + + @Test + public void immutableForString() { + String stringPassword = "password"; + System.out.print("Original String password value: "); + System.out.println(stringPassword); + System.out.println("Original String password hashCode: " + Integer.toHexString(stringPassword.hashCode())); + + String newString = "********"; + stringPassword.replace(stringPassword, newString); + + System.out.print("String password value after trying to replace it: "); + System.out.println(stringPassword); + System.out.println("hashCode after trying to replace the original String: " + Integer.toHexString(stringPassword.hashCode())); + } + + @Test + public void immutableForCharArray() { + char[] charPassword = new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}; + + System.out.print("Original char password value: "); + System.out.println(charPassword); + System.out.println("Original char password hashCode: " + Integer.toHexString(charPassword.hashCode())); + + Arrays.fill(charPassword, '*'); + + System.out.print("Changed char password value: "); + System.out.println(charPassword); + System.out.println("Changed char password hashCode: " + Integer.toHexString(charPassword.hashCode())); + } + + @Test + public void accidentallyPassword_print() { + String passwordString = "password"; + char[] passwordArray = new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}; + System.out.println("Printing String password -> " + passwordString); + System.out.println("Printing char[] password -> " + passwordArray.toString()); + } }