@@ -17,10 +17,16 @@ use iceoryx2_bb_system_types::file_path::*;
17
17
use iceoryx2_bb_system_types:: group_name:: * ;
18
18
use iceoryx2_bb_system_types:: path:: * ;
19
19
use iceoryx2_bb_system_types:: user_name:: * ;
20
+ use iceoryx2_bb_testing:: assert_that;
21
+
22
+ #[ test]
23
+ fn display_error_enum_works ( ) {
24
+ assert_that ! ( format!( "{}" , SemanticStringError :: InvalidContent ) , eq "SemanticStringError::InvalidContent" ) ;
25
+ assert_that ! ( format!( "{}" , SemanticStringError :: ExceedsMaximumLength ) , eq "SemanticStringError::ExceedsMaximumLength" ) ;
26
+ }
20
27
21
28
#[ generic_tests:: define]
22
29
mod semantic_string {
23
- use iceoryx2_bb_testing:: assert_that;
24
30
25
31
use super :: * ;
26
32
@@ -130,6 +136,13 @@ mod semantic_string {
130
136
131
137
assert_that ! ( sut. strip_prefix( b"a0123" ) , eq Ok ( false ) ) ;
132
138
assert_that ! ( sut. as_bytes( ) , eq b"a4567" ) ;
139
+
140
+ let result = sut. strip_prefix ( b"a45" ) ;
141
+ if result. is_ok ( ) {
142
+ assert_that ! ( sut. as_bytes( ) , eq b"67" ) ;
143
+ } else {
144
+ assert_that ! ( result. err( ) . unwrap( ) , eq SemanticStringError :: InvalidContent ) ;
145
+ }
133
146
}
134
147
135
148
#[ test]
@@ -140,6 +153,13 @@ mod semantic_string {
140
153
141
154
assert_that ! ( sut. strip_suffix( b"a4567" ) , eq Ok ( false ) ) ;
142
155
assert_that ! ( sut. as_bytes( ) , eq b"a0123" ) ;
156
+
157
+ let result = sut. strip_suffix ( b"a0123" ) ;
158
+ if result. is_ok ( ) {
159
+ assert_that ! ( sut. as_bytes( ) , eq b"" ) ;
160
+ } else {
161
+ assert_that ! ( result. err( ) . unwrap( ) , eq SemanticStringError :: InvalidContent ) ;
162
+ }
143
163
}
144
164
145
165
#[ test]
@@ -153,6 +173,13 @@ mod semantic_string {
153
173
assert_that ! ( sut. truncate( 6 ) , is_ok) ;
154
174
assert_that ! ( sut, len 4 ) ;
155
175
assert_that ! ( sut. as_bytes( ) , eq b"a012" ) ;
176
+
177
+ let result = sut. truncate ( 0 ) ;
178
+ if result. is_ok ( ) {
179
+ assert_that ! ( sut, is_empty) ;
180
+ } else {
181
+ assert_that ! ( result. err( ) . unwrap( ) , eq SemanticStringError :: InvalidContent ) ;
182
+ }
156
183
}
157
184
158
185
#[ test]
@@ -164,6 +191,56 @@ mod semantic_string {
164
191
assert_that ! ( sut, is_err) ;
165
192
}
166
193
194
+ #[ test]
195
+ fn is_full_works < const CAPACITY : usize , Sut : SemanticString < CAPACITY > > ( ) {
196
+ let sut = Sut :: new ( b"a01234567" ) . unwrap ( ) ;
197
+ assert_that ! ( sut. is_full( ) , eq false ) ;
198
+ }
199
+
200
+ #[ test]
201
+ fn capacity_works < const CAPACITY : usize , Sut : SemanticString < CAPACITY > > ( ) {
202
+ let sut = Sut :: new ( b"a01234567" ) . unwrap ( ) ;
203
+ assert_that ! ( sut. capacity( ) , eq CAPACITY ) ;
204
+ }
205
+
206
+ #[ test]
207
+ fn insert_too_much_bytes_fails < const CAPACITY : usize , Sut : SemanticString < CAPACITY > > ( ) {
208
+ let mut sut = Sut :: new ( b"a01234567" ) . unwrap ( ) ;
209
+ let mut bytes = vec ! [ ] ;
210
+ for _ in 0 ..8192 {
211
+ bytes. push ( b'a' )
212
+ }
213
+
214
+ let result = sut. insert_bytes ( 0 , & bytes) ;
215
+ assert_that ! ( result, is_err) ;
216
+ assert_that ! (
217
+ result. err( ) . unwrap( ) , eq
218
+ SemanticStringError :: ExceedsMaximumLength
219
+ ) ;
220
+ }
221
+
222
+ #[ test]
223
+ fn pop_until_empty_works < const CAPACITY : usize , Sut : SemanticString < CAPACITY > > ( ) {
224
+ let mut sut = Sut :: new ( b"aaa" ) . unwrap ( ) ;
225
+
226
+ let mut do_pop = || {
227
+ let result = sut. pop ( ) ;
228
+ if result. is_ok ( ) {
229
+ assert_that ! ( result. unwrap( ) . unwrap( ) , eq b'a' ) ;
230
+ } else {
231
+ assert_that ! ( result. err( ) . unwrap( ) , eq SemanticStringError :: InvalidContent ) ;
232
+ }
233
+ } ;
234
+
235
+ do_pop ( ) ;
236
+ do_pop ( ) ;
237
+ do_pop ( ) ;
238
+
239
+ if sut. is_empty ( ) {
240
+ assert_that ! ( sut. pop( ) . unwrap( ) , eq None ) ;
241
+ }
242
+ }
243
+
167
244
#[ instantiate_tests( <{ FileName :: max_len( ) } , FileName >) ]
168
245
mod file_name { }
169
246
0 commit comments