@@ -682,3 +682,99 @@ func compareSlices(t *testing.T, a, b []string, name string) {
682682 }
683683 }
684684}
685+
686+ type joinErrorsTest struct {
687+ name string
688+ errs []error
689+ expected string
690+ }
691+
692+ func TestJoinErrors (t * testing.T ) {
693+ tests := []joinErrorsTest {
694+ {
695+ name : "empty slice" ,
696+ errs : []error {},
697+ expected : "" ,
698+ },
699+ {
700+ name : "single error" ,
701+ errs : []error {errors .New ("first error" )},
702+ expected : "first error" ,
703+ },
704+ {
705+ name : "two errors" ,
706+ errs : []error {errors .New ("first error" ), errors .New ("second error" )},
707+ expected : "first error\n second error" ,
708+ },
709+ {
710+ name : "multiple errors" ,
711+ errs : []error {
712+ errors .New ("first error" ),
713+ errors .New ("second error" ),
714+ errors .New ("third error" ),
715+ },
716+ expected : "first error\n second error\n third error" ,
717+ },
718+ {
719+ name : "nil slice" ,
720+ errs : nil ,
721+ expected : "" ,
722+ },
723+ }
724+
725+ for _ , tt := range tests {
726+ t .Run (tt .name , func (t * testing.T ) {
727+ result := redis .JoinErrors (tt .errs )
728+ if result != tt .expected {
729+ t .Errorf ("joinErrors() = %q, want %q" , result , tt .expected )
730+ }
731+ })
732+ }
733+ }
734+
735+ func BenchmarkJoinErrors (b * testing.B ) {
736+ benchmarks := []joinErrorsTest {
737+ {
738+ name : "empty slice" ,
739+ errs : []error {},
740+ expected : "" ,
741+ },
742+ {
743+ name : "single error" ,
744+ errs : []error {errors .New ("first error" )},
745+ expected : "first error" ,
746+ },
747+ {
748+ name : "two errors" ,
749+ errs : []error {errors .New ("first error" ), errors .New ("second error" )},
750+ expected : "first error\n second error" ,
751+ },
752+ {
753+ name : "multiple errors" ,
754+ errs : []error {
755+ errors .New ("first error" ),
756+ errors .New ("second error" ),
757+ errors .New ("third error" ),
758+ },
759+ expected : "first error\n second error\n third error" ,
760+ },
761+ {
762+ name : "nil slice" ,
763+ errs : nil ,
764+ expected : "" ,
765+ },
766+ }
767+ for _ , bm := range benchmarks {
768+ b .Run (bm .name , func (b * testing.B ) {
769+ b .ResetTimer ()
770+ b .RunParallel (func (pb * testing.PB ) {
771+ for pb .Next () {
772+ result := redis .JoinErrors (bm .errs )
773+ if result != bm .expected {
774+ b .Errorf ("joinErrors() = %q, want %q" , result , bm .expected )
775+ }
776+ }
777+ })
778+ })
779+ }
780+ }
0 commit comments