添加理解 Java 中的 NumberFormatException 异常 的链接

This commit is contained in:
YuCheng Hu 2022-06-20 01:05:35 -04:00
parent 85b63c6f8d
commit ed4af4389d
1 changed files with 82 additions and 44 deletions

View File

@ -8,63 +8,101 @@ import static org.assertj.core.api.Assertions.assertThat;
public class PasswordStoreExamplesUnitTest { public class PasswordStoreExamplesUnitTest {
String stringPassword = "password"; String stringPassword = "password";
char[] charPassword = new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}; char[] charPassword = new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};
@Test @Test
public void givenStringHashCode_WhenStringValueChanged_ThenHashCodesNotEqualAndValesNotEqual() { public void givenStringHashCode_WhenStringValueChanged_ThenHashCodesNotEqualAndValesNotEqual() {
String originalHashCode = Integer.toHexString(stringPassword.hashCode()); String originalHashCode = Integer.toHexString(stringPassword.hashCode());
stringPassword = "********"; stringPassword = "********";
String changedHashCode = Integer.toHexString(stringPassword.hashCode()); String changedHashCode = Integer.toHexString(stringPassword.hashCode());
assertThat(originalHashCode).isNotEqualTo(changedHashCode); assertThat(originalHashCode).isNotEqualTo(changedHashCode);
assertThat(stringPassword).isNotEqualTo("password"); assertThat(stringPassword).isNotEqualTo("password");
} }
@Test @Test
public void givenStringHashCode_WhenStringValueChangedAndStringValueReassigned_ThenHashCodesEqualAndValesEqual() { public void givenStringHashCode_WhenStringValueChangedAndStringValueReassigned_ThenHashCodesEqualAndValesEqual() {
String originalHashCode = Integer.toHexString(stringPassword.hashCode()); String originalHashCode = Integer.toHexString(stringPassword.hashCode());
stringPassword = "********"; stringPassword = "********";
stringPassword = "password"; stringPassword = "password";
String reassignedHashCode = Integer.toHexString(stringPassword.hashCode()); String reassignedHashCode = Integer.toHexString(stringPassword.hashCode());
assertThat(originalHashCode).isEqualTo(reassignedHashCode); assertThat(originalHashCode).isEqualTo(reassignedHashCode);
assertThat(stringPassword).isEqualTo("password"); assertThat(stringPassword).isEqualTo("password");
} }
@Test @Test
public void givenStringHashCode_WhenStringValueReplaced_ThenHashCodesEqualAndValesEqual() { public void givenStringHashCode_WhenStringValueReplaced_ThenHashCodesEqualAndValesEqual() {
String originalHashCode = Integer.toHexString(stringPassword.hashCode()); String originalHashCode = Integer.toHexString(stringPassword.hashCode());
String newString = "********"; String newString = "********";
stringPassword.replace(stringPassword, newString); stringPassword.replace(stringPassword, newString);
String hashCodeAfterReplace = Integer.toHexString(stringPassword.hashCode()); String hashCodeAfterReplace = Integer.toHexString(stringPassword.hashCode());
assertThat(originalHashCode).isEqualTo(hashCodeAfterReplace); assertThat(originalHashCode).isEqualTo(hashCodeAfterReplace);
assertThat(stringPassword).isEqualTo("password"); assertThat(stringPassword).isEqualTo("password");
} }
@Test @Test
public void givenCharArrayHashCode_WhenArrayElementsValueChanged_ThenHashCodesEqualAndValesNotEqual() { public void givenCharArrayHashCode_WhenArrayElementsValueChanged_ThenHashCodesEqualAndValesNotEqual() {
String originalHashCode = Integer.toHexString(charPassword.hashCode()); String originalHashCode = Integer.toHexString(charPassword.hashCode());
Arrays.fill(charPassword, '*'); Arrays.fill(charPassword, '*');
String changedHashCode = Integer.toHexString(charPassword.hashCode()); String changedHashCode = Integer.toHexString(charPassword.hashCode());
assertThat(originalHashCode).isEqualTo(changedHashCode); assertThat(originalHashCode).isEqualTo(changedHashCode);
assertThat(charPassword).isNotEqualTo(new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}); assertThat(charPassword).isNotEqualTo(new char[]{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'});
} }
@Test @Test
public void whenCallingToStringOfString_ThenValuesEqual() { public void whenCallingToStringOfString_ThenValuesEqual() {
assertThat(stringPassword.toString()).isEqualTo("password"); assertThat(stringPassword.toString()).isEqualTo("password");
} }
@Test @Test
public void whenCallingToStringOfCharArray_ThenValuesNotEqual() { public void whenCallingToStringOfCharArray_ThenValuesNotEqual() {
assertThat(charPassword.toString()).isNotEqualTo("password"); 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());
}
} }