@@ -57,7 +57,7 @@ public function it_can_sort_by_one_field_with_specifying_desc_sort_order()
5757 }
5858
5959 /** @test */
60- public function it_can_sort_by_two_fields_without_specifying_sort_order ()
60+ public function it_can_sort_by_two_fields_without_specifying_sort_order_and_asc_would_be_used_for_both ()
6161 {
6262 $ array = [
6363 ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
@@ -75,4 +75,64 @@ public function it_can_sort_by_two_fields_without_specifying_sort_order()
7575
7676 $ this ->assertEquals ($ expected , multiarray_sort_by ($ array , 'name ' , 'model ' ));
7777 }
78+
79+ /** @test */
80+ public function it_can_sort_by_two_fields_with_specifying_asc_sort_order_only_for_the_first ()
81+ {
82+ $ array = [
83+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
84+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLE Coupe ' , 'price ' => 110000 ],
85+ ['name ' => 'BMW ' , 'model ' => 'X6 ' , 'price ' => 77000 ],
86+ ['name ' => 'Porsche ' , 'model ' => 'Cayenne ' , 'price ' => 117000 ],
87+ ];
88+
89+ $ expected = [
90+ ['name ' => 'BMW ' , 'model ' => 'X6 ' , 'price ' => 77000 ],
91+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLE Coupe ' , 'price ' => 110000 ],
92+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
93+ ['name ' => 'Porsche ' , 'model ' => 'Cayenne ' , 'price ' => 117000 ],
94+ ];
95+
96+ $ this ->assertEquals ($ expected , multiarray_sort_by ($ array , 'name ' , SORT_ASC , 'model ' ));
97+ }
98+
99+ /** @test */
100+ public function it_can_sort_by_two_fields_with_specifying_asc_sort_order_only_for_the_second ()
101+ {
102+ $ array = [
103+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
104+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLE Coupe ' , 'price ' => 110000 ],
105+ ['name ' => 'BMW ' , 'model ' => 'X6 ' , 'price ' => 77000 ],
106+ ['name ' => 'Porsche ' , 'model ' => 'Cayenne ' , 'price ' => 117000 ],
107+ ];
108+
109+ $ expected = [
110+ ['name ' => 'BMW ' , 'model ' => 'X6 ' , 'price ' => 77000 ],
111+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLE Coupe ' , 'price ' => 110000 ],
112+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
113+ ['name ' => 'Porsche ' , 'model ' => 'Cayenne ' , 'price ' => 117000 ],
114+ ];
115+
116+ $ this ->assertEquals ($ expected , multiarray_sort_by ($ array , 'name ' , 'model ' , SORT_ASC ));
117+ }
118+
119+ /** @test */
120+ public function it_can_sort_by_two_fields_with_specifying_asc_sort_order_for_both ()
121+ {
122+ $ array = [
123+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
124+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLE Coupe ' , 'price ' => 110000 ],
125+ ['name ' => 'BMW ' , 'model ' => 'X6 ' , 'price ' => 77000 ],
126+ ['name ' => 'Porsche ' , 'model ' => 'Cayenne ' , 'price ' => 117000 ],
127+ ];
128+
129+ $ expected = [
130+ ['name ' => 'BMW ' , 'model ' => 'X6 ' , 'price ' => 77000 ],
131+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLE Coupe ' , 'price ' => 110000 ],
132+ ['name ' => 'Mercedes-Benz ' , 'model ' => 'GLS ' , 'price ' => 120000 ],
133+ ['name ' => 'Porsche ' , 'model ' => 'Cayenne ' , 'price ' => 117000 ],
134+ ];
135+
136+ $ this ->assertEquals ($ expected , multiarray_sort_by ($ array , 'name ' , SORT_ASC , 'model ' , SORT_ASC ));
137+ }
78138}
0 commit comments