@@ -407,6 +407,43 @@ func TestTrimWithWhitespacesAtTheStartAndEnd(t *testing.T) {
407407 }
408408}
409409
410+ func TestReverseStringBuilder (t * testing.T ) {
411+ tests := []struct {
412+ name string
413+ insert []string
414+ want string
415+ }{
416+ {"Reverse odd length string builder" , []string {"A" , "B" , "C" }, "CBA" },
417+ {"Reverse even length string builder" , []string {"A" , "B" }, "BA" },
418+ {"Reverse string builder of size 1" , []string {"A" }, "A" },
419+ {"Reverse empty string builder" , []string {}, "" },
420+ }
421+ for _ , tt := range tests {
422+ t .Run (tt .name , func (t * testing.T ) {
423+ sb := & StringBuilder {}
424+
425+ for _ , s := range tt .insert {
426+ sb = sb .Append (s )
427+ }
428+
429+ sb = sb .Reverse ()
430+
431+ if got := sb .ToString (); got != tt .want {
432+ t .Errorf ("StringBuilder.Reverse() = %v, want %v" , got , tt .want )
433+ }
434+ })
435+ }
436+ }
437+
438+ func TestReuseReversedStringBuilder (t * testing.T ) {
439+ sb := StringBuilder {}
440+
441+ sb = * sb .Append ("A" ).Append ("B" ).Append ("C" ).Reverse ().Append ("X" )
442+ if got := sb .ToString (); got != "CBAX" {
443+ t .Errorf ("StringBuilder.Reverse() = %v, want %v" , got , "CBAX" )
444+ }
445+ }
446+
410447func slicesEqual (a []int , b []int ) bool {
411448 if len (a ) != len (b ) {
412449 return false
0 commit comments