@@ -199,9 +199,107 @@ mod tests {
199199
200200 logger. clear ( ) ;
201201
202- // This should have no effect.
202+ // This should have no effect since it is a string .
203203 logger. append_with_args ( "0123456789" , & [ Argument :: Precision ( 2 ) ] ) ;
204204 assert ! ( & * logger == "0123456789" . as_bytes( ) ) ;
205+
206+ logger. clear ( ) ;
207+
208+ logger. append_with_args ( 2u8 , & [ Argument :: Precision ( 8 ) ] ) ;
209+ assert ! ( & * logger == "0.00000002" . as_bytes( ) ) ;
210+
211+ logger. clear ( ) ;
212+
213+ logger. append_with_args ( 2u8 , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
214+ assert ! ( & * logger == "0.0000000@" . as_bytes( ) ) ;
215+
216+ let mut logger = Logger :: < 20 > :: default ( ) ;
217+
218+ logger. append_with_args ( 2u8 , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
219+ assert ! ( & * logger == "0.00000000000000000@" . as_bytes( ) ) ;
220+
221+ logger. clear ( ) ;
222+
223+ logger. append_with_args ( 20_000u16 , & [ Argument :: Precision ( 10 ) ] ) ;
224+ assert ! ( & * logger == "0.0000020000" . as_bytes( ) ) ;
225+
226+ let mut logger = Logger :: < 3 > :: default ( ) ;
227+
228+ logger. append_with_args ( 2u64 , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
229+ assert ! ( & * logger == "0.@" . as_bytes( ) ) ;
230+
231+ logger. clear ( ) ;
232+
233+ logger. append_with_args ( 2u64 , & [ Argument :: Precision ( 1 ) ] ) ;
234+ assert ! ( & * logger == "0.2" . as_bytes( ) ) ;
235+
236+ logger. clear ( ) ;
237+
238+ logger. append_with_args ( -2i64 , & [ Argument :: Precision ( 1 ) ] ) ;
239+ assert ! ( & * logger == "-0@" . as_bytes( ) ) ;
240+
241+ let mut logger = Logger :: < 1 > :: default ( ) ;
242+
243+ logger. append_with_args ( -2i64 , & [ Argument :: Precision ( 1 ) ] ) ;
244+ assert ! ( & * logger == "@" . as_bytes( ) ) ;
245+
246+ let mut logger = Logger :: < 2 > :: default ( ) ;
247+
248+ logger. append_with_args ( -2i64 , & [ Argument :: Precision ( 1 ) ] ) ;
249+ assert ! ( & * logger == "-@" . as_bytes( ) ) ;
250+
251+ let mut logger = Logger :: < 20 > :: default ( ) ;
252+
253+ logger. append_with_args ( u64:: MAX , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
254+ assert ! ( & * logger == "0.00000000000000000@" . as_bytes( ) ) ;
255+
256+ // 255 precision + leading 0 + decimal point
257+ let mut logger = Logger :: < 257 > :: default ( ) ;
258+ logger. append_with_args ( u64:: MAX , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
259+ assert ! ( logger. starts_with( "0.00000000000000" . as_bytes( ) ) ) ;
260+ assert ! ( logger. ends_with( "18446744073709551615" . as_bytes( ) ) ) ;
261+
262+ logger. clear ( ) ;
263+
264+ logger. append_with_args ( u32:: MAX , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
265+ assert ! ( logger. starts_with( "0.00000000000000" . as_bytes( ) ) ) ;
266+ assert ! ( logger. ends_with( "4294967295" . as_bytes( ) ) ) ;
267+
268+ logger. clear ( ) ;
269+
270+ logger. append_with_args ( u16:: MAX , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
271+ assert ! ( logger. starts_with( "0.00000000000000" . as_bytes( ) ) ) ;
272+ assert ! ( logger. ends_with( "65535" . as_bytes( ) ) ) ;
273+
274+ logger. clear ( ) ;
275+
276+ logger. append_with_args ( u8:: MAX , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
277+ assert ! ( logger. starts_with( "0.00000000000000" . as_bytes( ) ) ) ;
278+ assert ! ( logger. ends_with( "255" . as_bytes( ) ) ) ;
279+
280+ // 255 precision + sign + leading 0 + decimal point
281+ let mut logger = Logger :: < 258 > :: default ( ) ;
282+ logger. append_with_args ( i64:: MIN , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
283+ assert ! ( logger. starts_with( "-0.00000000000000" . as_bytes( ) ) ) ;
284+ assert ! ( logger. ends_with( "9223372036854775808" . as_bytes( ) ) ) ;
285+
286+ logger. clear ( ) ;
287+
288+ logger. append_with_args ( i32:: MIN , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
289+ assert ! ( logger. starts_with( "-0.00000000000000" . as_bytes( ) ) ) ;
290+ assert ! ( logger. ends_with( "2147483648" . as_bytes( ) ) ) ;
291+
292+ logger. clear ( ) ;
293+
294+ logger. append_with_args ( i16:: MIN , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
295+ assert ! ( logger. starts_with( "-0.00000000000000" . as_bytes( ) ) ) ;
296+ assert ! ( logger. ends_with( "32768" . as_bytes( ) ) ) ;
297+
298+ logger. clear ( ) ;
299+
300+ logger. append_with_args ( i8:: MIN , & [ Argument :: Precision ( u8:: MAX ) ] ) ;
301+ assert ! ( logger. starts_with( "-0.00000000000000" . as_bytes( ) ) ) ;
302+ assert ! ( logger. ends_with( "128" . as_bytes( ) ) ) ;
205303 }
206304
207305 #[ test]
@@ -235,6 +333,46 @@ mod tests {
235333
236334 logger. append_with_args ( "0123456789" , & [ Argument :: TruncateStart ( 9 ) ] ) ;
237335 assert ! ( & * logger == "..@" . as_bytes( ) ) ;
336+
337+ let mut logger = Logger :: < 1 > :: default ( ) ;
338+
339+ logger. append_with_args ( "test" , & [ Argument :: TruncateStart ( 0 ) ] ) ;
340+ assert ! ( & * logger == "" . as_bytes( ) ) ;
341+
342+ logger. clear ( ) ;
343+
344+ logger. append_with_args ( "test" , & [ Argument :: TruncateStart ( 1 ) ] ) ;
345+ assert ! ( & * logger == "@" . as_bytes( ) ) ;
346+
347+ let mut logger = Logger :: < 2 > :: default ( ) ;
348+
349+ logger. append_with_args ( "test" , & [ Argument :: TruncateStart ( 2 ) ] ) ;
350+ assert ! ( & * logger == ".@" . as_bytes( ) ) ;
351+
352+ let mut logger = Logger :: < 3 > :: default ( ) ;
353+
354+ logger. append_with_args ( "test" , & [ Argument :: TruncateStart ( 3 ) ] ) ;
355+ assert ! ( & * logger == "..@" . as_bytes( ) ) ;
356+
357+ let mut logger = Logger :: < 1 > :: default ( ) ;
358+
359+ logger. append_with_args ( "test" , & [ Argument :: TruncateEnd ( 0 ) ] ) ;
360+ assert ! ( & * logger == "" . as_bytes( ) ) ;
361+
362+ logger. clear ( ) ;
363+
364+ logger. append_with_args ( "test" , & [ Argument :: TruncateEnd ( 1 ) ] ) ;
365+ assert ! ( & * logger == "@" . as_bytes( ) ) ;
366+
367+ let mut logger = Logger :: < 2 > :: default ( ) ;
368+
369+ logger. append_with_args ( "test" , & [ Argument :: TruncateEnd ( 2 ) ] ) ;
370+ assert ! ( & * logger == ".@" . as_bytes( ) ) ;
371+
372+ let mut logger = Logger :: < 3 > :: default ( ) ;
373+
374+ logger. append_with_args ( "test" , & [ Argument :: TruncateEnd ( 3 ) ] ) ;
375+ assert ! ( & * logger == "..@" . as_bytes( ) ) ;
238376 }
239377
240378 #[ test]
0 commit comments