1+ package com .ctci .arraysandstrings ;
2+
3+ import org .junit .jupiter .api .*;
4+
5+ public class IsUniqueTest {
6+
7+ @ Nested
8+ @ DisplayName ("Test cases for hasDifferentIndividualCharacters() method" )
9+ class TestCasesForHasDifferentIndividualCharacters {
10+
11+ @ Test
12+ public void testHasDifferentIndividualCharacters_StringIsNull_ReturnFalse () {
13+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters (null ));
14+ }
15+
16+ @ Test
17+ public void testHasDifferentIndividualCharacters_StringIsEmpty_ReturnFalse () {
18+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("" ));
19+ }
20+
21+ @ Test
22+ public void testHasDifferentIndividualCharacters_StringLengthSmallerOrEqual128_ReturnFalse () {
23+ StringBuilder stringBuilder = new StringBuilder ();
24+
25+ for (int i = 0 ; i < 128 ; i ++) {
26+ stringBuilder .append ((char ) i );
27+ }
28+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters (stringBuilder .toString ()));
29+
30+ stringBuilder .setLength (0 );
31+ for (int i = 1 ; i < 127 ; i ++) {
32+ stringBuilder .append ((char ) i );
33+ }
34+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters (stringBuilder .toString ()));
35+ }
36+
37+ @ Test
38+ public void testHasDifferentIndividualCharacters_StringLengthLargerThan128_ReturnFalse () {
39+ StringBuilder stringBuilder = new StringBuilder ();
40+
41+ for (int i = 0 ; i < 128 ; i ++) {
42+ stringBuilder .append ((char ) i );
43+ }
44+ stringBuilder .append ("a" );
45+
46+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters (stringBuilder .toString ()));
47+ }
48+
49+ @ Test
50+ public void testHasDifferentIndividualCharacters_DuplicateAtHead_ReturnFalse () {
51+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("aab" ));
52+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("AAb" ));
53+
54+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("ááb" ));
55+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("ÁÁb" ));
56+
57+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("1123456" ));
58+ }
59+
60+ @ Test
61+ public void testHasDifferentIndividualCharacters_DuplicateAtMiddle_ReturnFalse () {
62+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("abcbd" ));
63+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("aBcBd" ));
64+
65+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("aưcưd" ));
66+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("aƯcƯd" ));
67+
68+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("123436" ));
69+ }
70+
71+ @ Test
72+ public void testHasDifferentIndividualCharacters_DuplicateAtTail_ReturnFalse () {
73+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("aba" ));
74+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("AbA" ));
75+
76+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("ăbă" ));
77+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("ĂbĂ" ));
78+
79+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("1234566" ));
80+ }
81+
82+ @ Test
83+ public void testHasDifferentIndividualCharacters_OnlyOneCharacter_ReturnTrue () {
84+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("a" ));
85+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("1" ));
86+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("A" ));
87+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("#" ));
88+ }
89+
90+ @ Test
91+ public void testHasDifferentIndividualCharacters_OnlyOneCharacter_ReturnFalse () {
92+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("á" ));
93+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("Ô" ));
94+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("€" ));
95+ }
96+
97+ @ Test
98+ public void testHasDifferentIndividualCharacters_InvalidString_ReturnFalse () {
99+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("ۇ" ));
100+ Assertions .assertFalse (IsUnique .hasDifferentIndividualCharacters ("áÂ" ));
101+ }
102+
103+ @ Test
104+ public void testHasDifferentIndividualCharacters_ValidString_ReturnTrue () {
105+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("aAb" ));
106+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("abcBd" ));
107+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters ("abA" ));
108+ Assertions .assertTrue (IsUnique .hasDifferentIndividualCharacters (
109+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ));
110+ }
111+ }
112+ }
0 commit comments