@@ -146,6 +146,30 @@ fn literal_raw_string() {
146146        . unwrap_err ( ) ; 
147147} 
148148
149+ #[ cfg( procmacro2_semver_exempt) ]  
150+ #[ test]  
151+ fn  literal_string_value ( )  { 
152+     for  string in  [ "" ,  "..." ,  "...\t ..." ,  "...\\ ..." ,  "...\0 ..." ,  "...\u{1} ..." ]  { 
153+         assert_eq ! ( string,  Literal :: string( string) . str_value( ) . unwrap( ) ) ; 
154+         assert_eq ! ( 
155+             string, 
156+             format!( "r\" {string}\" " ) 
157+                 . parse:: <Literal >( ) 
158+                 . unwrap( ) 
159+                 . str_value( ) 
160+                 . unwrap( ) , 
161+         ) ; 
162+         assert_eq ! ( 
163+             string, 
164+             format!( "r##\" {string}\" ##" ) 
165+                 . parse:: <Literal >( ) 
166+                 . unwrap( ) 
167+                 . str_value( ) 
168+                 . unwrap( ) , 
169+         ) ; 
170+     } 
171+ } 
172+ 
149173#[ test]  
150174fn  literal_byte_character ( )  { 
151175    #[ track_caller]  
@@ -191,6 +215,42 @@ fn literal_byte_string() {
191215    "br\" \u{a0} \" " . parse :: < TokenStream > ( ) . unwrap_err ( ) ; 
192216} 
193217
218+ #[ cfg( procmacro2_semver_exempt) ]  
219+ #[ test]  
220+ fn  literal_byte_string_value ( )  { 
221+     for  bytestr in  [ 
222+         & b"" [ ..] , 
223+         b"..." , 
224+         b"...\t ..." , 
225+         b"...\\ ..." , 
226+         b"...\0 ..." , 
227+         b"...\xF0 ..." , 
228+     ]  { 
229+         assert_eq ! ( 
230+             bytestr, 
231+             Literal :: byte_string( bytestr) . byte_str_value( ) . unwrap( ) , 
232+         ) ; 
233+         if  let  Ok ( string)  = str:: from_utf8 ( bytestr)  { 
234+             assert_eq ! ( 
235+                 bytestr, 
236+                 format!( "br\" {string}\" " ) 
237+                     . parse:: <Literal >( ) 
238+                     . unwrap( ) 
239+                     . byte_str_value( ) 
240+                     . unwrap( ) , 
241+             ) ; 
242+             assert_eq ! ( 
243+                 bytestr, 
244+                 format!( "br##\" {string}\" ##" ) 
245+                     . parse:: <Literal >( ) 
246+                     . unwrap( ) 
247+                     . byte_str_value( ) 
248+                     . unwrap( ) , 
249+             ) ; 
250+         } 
251+     } 
252+ } 
253+ 
194254#[ test]  
195255fn  literal_c_string ( )  { 
196256    #[ track_caller]  
@@ -262,6 +322,42 @@ fn literal_c_string() {
262322    } 
263323} 
264324
325+ #[ cfg( procmacro2_semver_exempt) ]  
326+ #[ test]  
327+ fn  literal_c_string_value ( )  { 
328+     for  cstr in  [ 
329+         c"" , 
330+         c"..." , 
331+         c"...\t ..." , 
332+         c"...\\ ..." , 
333+         c"...\u{1} ..." , 
334+         c"...\xF0 ..." , 
335+     ]  { 
336+         assert_eq ! ( 
337+             cstr. to_bytes_with_nul( ) , 
338+             Literal :: c_string( cstr) . cstr_value( ) . unwrap( ) , 
339+         ) ; 
340+         if  let  Ok ( string)  = cstr. to_str ( )  { 
341+             assert_eq ! ( 
342+                 cstr. to_bytes_with_nul( ) , 
343+                 format!( "cr\" {string}\" " ) 
344+                     . parse:: <Literal >( ) 
345+                     . unwrap( ) 
346+                     . cstr_value( ) 
347+                     . unwrap( ) , 
348+             ) ; 
349+             assert_eq ! ( 
350+                 cstr. to_bytes_with_nul( ) , 
351+                 format!( "cr##\" {string}\" ##" ) 
352+                     . parse:: <Literal >( ) 
353+                     . unwrap( ) 
354+                     . cstr_value( ) 
355+                     . unwrap( ) , 
356+             ) ; 
357+         } 
358+     } 
359+ } 
360+ 
265361#[ test]  
266362fn  literal_character ( )  { 
267363    #[ track_caller]  
0 commit comments