1
1
package com .serenitydojo .strings ;
2
2
3
+ import org .assertj .core .api .Assertions ;
3
4
import org .junit .Test ;
4
5
6
+ import java .util .ArrayList ;
7
+ import java .util .Collections ;
8
+ import java .util .List ;
9
+
5
10
import static org .assertj .core .api .Assertions .assertThat ;
6
11
7
12
public class WhenWorkingWithStrings {
@@ -29,7 +34,29 @@ public void reverseAPairOfStrings() {
29
34
30
35
var result = reverse ("Duck" , "Orange" );
31
36
assertThat (result ).isEqualTo ("Orange Duck" );
37
+ }
32
38
39
+ @ Test
40
+ public void reverseAListOfStrings () {
41
+ var result = reverseList ("Duck" , "Orange" );
42
+ assertThat (result ).containsExactly ("Orange" ,"Duck" );
43
+ }
44
+
45
+ private String reverse (String ... values ) {
46
+ StringBuilder reversedValue = new StringBuilder ();
47
+ for (int i = values .length - 1 ; i >= 0 ; i --) {
48
+ reversedValue .append (values [i ]);
49
+ reversedValue .append (" " );
50
+ }
51
+ return reversedValue .toString ().trim ();
52
+ }
53
+
54
+ private List <String > reverseList (String ... values ) {
55
+ List <String > reversed = new ArrayList <>();
56
+ for (int i = values .length - 1 ; i >= 0 ; i --) {
57
+ reversed .add (values [i ]);
58
+ }
59
+ return reversed ;
33
60
}
34
61
35
62
/**
@@ -49,16 +76,81 @@ private String capitalise(String... words) {
49
76
var lowerCaseEnding = word .toLowerCase ().substring (1 );
50
77
var capitalisedWord = upperCaseFirstLetter + lowerCaseEnding ;
51
78
result .append (capitalisedWord );
79
+ result .append (" " );
52
80
}
53
- return result .toString ();
81
+ return result .toString (). trim () ;
54
82
}
55
83
84
+ /**
85
+ * Replace all of the red shirts by orange shirts
86
+ */
56
87
@ Test
57
- public void reverseAListOfStrings () {
88
+ public void colourSwitch () {
89
+ List <String > colouredShirts = List .of ("red shirt" , "light red shirt" , "blue shirt" , "green shirt" );
90
+
91
+ List <String > updatedShirts = new ArrayList <>();
92
+ for (String shirt : colouredShirts ) {
93
+ updatedShirts .add (shirt .replace ("red" , "orange" ));
94
+ }
58
95
96
+ assertThat (updatedShirts ).containsExactly ("orange shirt" , "light orange shirt" , "blue shirt" , "green shirt" );
59
97
}
60
98
61
- private String reverse (String a , String b ) {
62
- return b + " " + a ;
99
+ /**
100
+ * Find all the string values that contain red (reguardless of case)
101
+ */
102
+ @ Test
103
+ public void colourFilter () {
104
+ List <String > terms = List .of ("red" , "Light Red" , "Orange-red wash" , "green" ,"ruby red" , "blue" );
105
+
106
+ List <String > reds = new ArrayList <>();
107
+
108
+ for (String color : terms ) {
109
+ if (color .toLowerCase ().contains ("red" )) {
110
+ reds .add (color );
111
+ }
112
+ }
113
+ assertThat (reds ).containsExactly ("red" , "Light Red" , "Orange-red wash" , "ruby red" );
63
114
}
115
+
116
+ //
117
+ // Using the Collections utility class
118
+ //
119
+ @ Test
120
+ public void sortingElementsInAList () {
121
+ List <String > terms = List .of ("red" , "yellow" , "orange" , "green" ,"ruby red" , "blue" );
122
+
123
+ List <String > sortedTerms = new ArrayList <>(terms );
124
+
125
+ Collections .sort (sortedTerms );
126
+
127
+ assertThat (sortedTerms ).containsExactly ("blue" , "green" , "orange" , "red" , "ruby red" , "yellow" );
128
+
129
+ }
130
+
131
+ @ Test
132
+ public void replacingElements () {
133
+ List <String > terms = List .of ("red" , "yellow" , "orange" , "green" ,"ruby red" , "blue" );
134
+
135
+ List <String > sortedTerms = new ArrayList <>(terms );
136
+
137
+ Collections .replaceAll (sortedTerms ,"yellow" ,"beige" );
138
+
139
+ assertThat (sortedTerms ).containsExactly ("red" , "beige" , "orange" , "green" ,"ruby red" , "blue" );
140
+
141
+ }
142
+
143
+
144
+ @ Test
145
+ public void findingMaximumAndMinimums () {
146
+ List <Integer > numbers = List .of (10 ,20 ,30 ,40 ,50 );
147
+
148
+ int max = Collections .max (numbers );
149
+ int min = Collections .min (numbers );
150
+
151
+ assertThat (max ).isEqualTo (50 );
152
+ assertThat (min ).isEqualTo (10 );
153
+
154
+ }
155
+
64
156
}
0 commit comments