@@ -3,11 +3,12 @@ package com.varabyte.truthish.subjects
3
3
import com.varabyte.truthish.failure.DetailsFor
4
4
import com.varabyte.truthish.failure.Report
5
5
import com.varabyte.truthish.failure.Summaries
6
+ import com.varabyte.truthish.failure.copyValuesFrom
6
7
7
- class StringSubject (private val actual : String ) : ComparableSubject<String >(actual) {
8
+ class CharSequenceSubject (private val actual : CharSequence ) : NotNullSubject<CharSequence >(actual) {
8
9
9
10
fun isEmpty () {
10
- if (! actual.isEmpty ()) {
11
+ if (actual.isNotEmpty ()) {
11
12
report(Report (Summaries .EXPECTED_EMPTY , DetailsFor .actual(actual)))
12
13
}
13
14
}
@@ -19,7 +20,7 @@ class StringSubject(private val actual: String) : ComparableSubject<String>(actu
19
20
}
20
21
21
22
fun isBlank () {
22
- if (! actual.isBlank ()) {
23
+ if (actual.isNotBlank ()) {
23
24
report(Report (Summaries .EXPECTED_BLANK , DetailsFor .actual(actual)))
24
25
}
25
26
}
@@ -148,4 +149,29 @@ class StringSubject(private val actual: String) : ComparableSubject<String>(actu
148
149
fun doesNotContainMatch (regex : String ) {
149
150
doesNotContainMatch(Regex (regex))
150
151
}
151
- }
152
+ }
153
+
154
+ class StringSubject (private val actual : String ) : ComparableSubject<String>(actual) {
155
+ private val delegateSubject
156
+ get() = CharSequenceSubject (actual).copyValuesFrom(this )
157
+
158
+ fun isEmpty () { delegateSubject.isEmpty() }
159
+ fun isNotEmpty () { delegateSubject.isNotEmpty() }
160
+ fun isBlank () { delegateSubject.isBlank() }
161
+ fun isNotBlank () { delegateSubject.isNotBlank() }
162
+ fun hasLength (expectedLength : Int ) { delegateSubject.hasLength(expectedLength) }
163
+ fun startsWith (expected : CharSequence ) { delegateSubject.startsWith(expected) }
164
+ fun doesNotStartWith (expected : CharSequence ) { delegateSubject.doesNotStartWith(expected) }
165
+ fun endsWith (expected : CharSequence ) { delegateSubject.endsWith(expected) }
166
+ fun doesNotEndWith (expected : CharSequence ) { delegateSubject.doesNotEndWith(expected) }
167
+ fun matches (regex : Regex ) { delegateSubject.matches(regex) }
168
+ fun matches (regex : String ) { delegateSubject.matches(regex) }
169
+ fun doesNotMatch (regex : Regex ) { delegateSubject.doesNotMatch(regex) }
170
+ fun doesNotMatch (regex : String ) { delegateSubject.doesNotMatch(regex) }
171
+ fun contains (expected : CharSequence ) { delegateSubject.contains(expected) }
172
+ fun containsMatch (regex : Regex ) { delegateSubject.containsMatch(regex) }
173
+ fun containsMatch (regex : String ) { delegateSubject.containsMatch(regex) }
174
+ fun doesNotContain (expected : CharSequence ) { delegateSubject.doesNotContain(expected) }
175
+ fun doesNotContainMatch (regex : Regex ) { delegateSubject.doesNotContainMatch(regex) }
176
+ fun doesNotContainMatch (regex : String ) { delegateSubject.doesNotContainMatch(regex) }
177
+ }
0 commit comments