Skip to content
This repository was archived by the owner on Jan 24, 2025. It is now read-only.

Commit f8ca07a

Browse files
committed
Fix not preserving order of tuple elements
1 parent d96cf56 commit f8ca07a

File tree

2 files changed

+48
-46
lines changed

2 files changed

+48
-46
lines changed

core/src/main/scala/com/softwaremill/diffx/DiffTupleInstances.scala

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.softwaremill.diffx
22

3+
import scala.collection.immutable.ListMap
4+
35
trait DiffTupleInstances {
46

57
implicit def dTuple2[T1, T2](implicit d1: Diff[T1], d2: Diff[T2]): Diff[Tuple2[T1, T2]] = new Diff[Tuple2[T1, T2]] {
@@ -8,7 +10,7 @@ trait DiffTupleInstances {
810
right: (T1, T2),
911
context: DiffContext
1012
): DiffResult = {
11-
val results = List("_1" -> d1.apply(left._1, right._1), "_2" -> d2.apply(left._2, right._2)).toMap
13+
val results = ListMap("_1" -> d1.apply(left._1, right._1), "_2" -> d2.apply(left._2, right._2))
1214
DiffResultObject("Tuple2", results)
1315
}
1416
}
@@ -20,11 +22,11 @@ trait DiffTupleInstances {
2022
right: (T1, T2, T3),
2123
context: DiffContext
2224
): DiffResult = {
23-
val results = List(
25+
val results = ListMap(
2426
"_1" -> d1.apply(left._1, right._1),
2527
"_2" -> d2.apply(left._2, right._2),
2628
"_3" -> d3.apply(left._3, right._3)
27-
).toMap
29+
)
2830
DiffResultObject("Tuple3", results)
2931
}
3032
}
@@ -40,12 +42,12 @@ trait DiffTupleInstances {
4042
right: (T1, T2, T3, T4),
4143
context: DiffContext
4244
): DiffResult = {
43-
val results = List(
45+
val results = ListMap(
4446
"_1" -> d1.apply(left._1, right._1),
4547
"_2" -> d2.apply(left._2, right._2),
4648
"_3" -> d3.apply(left._3, right._3),
4749
"_4" -> d4.apply(left._4, right._4)
48-
).toMap
50+
)
4951
DiffResultObject("Tuple4", results)
5052
}
5153
}
@@ -62,13 +64,13 @@ trait DiffTupleInstances {
6264
right: (T1, T2, T3, T4, T5),
6365
context: DiffContext
6466
): DiffResult = {
65-
val results = List(
67+
val results = ListMap(
6668
"_1" -> d1.apply(left._1, right._1),
6769
"_2" -> d2.apply(left._2, right._2),
6870
"_3" -> d3.apply(left._3, right._3),
6971
"_4" -> d4.apply(left._4, right._4),
7072
"_5" -> d5.apply(left._5, right._5)
71-
).toMap
73+
)
7274
DiffResultObject("Tuple5", results)
7375
}
7476
}
@@ -86,14 +88,14 @@ trait DiffTupleInstances {
8688
right: (T1, T2, T3, T4, T5, T6),
8789
context: DiffContext
8890
): DiffResult = {
89-
val results = List(
91+
val results = ListMap(
9092
"_1" -> d1.apply(left._1, right._1),
9193
"_2" -> d2.apply(left._2, right._2),
9294
"_3" -> d3.apply(left._3, right._3),
9395
"_4" -> d4.apply(left._4, right._4),
9496
"_5" -> d5.apply(left._5, right._5),
9597
"_6" -> d6.apply(left._6, right._6)
96-
).toMap
98+
)
9799
DiffResultObject("Tuple6", results)
98100
}
99101
}
@@ -112,15 +114,15 @@ trait DiffTupleInstances {
112114
right: (T1, T2, T3, T4, T5, T6, T7),
113115
context: DiffContext
114116
): DiffResult = {
115-
val results = List(
117+
val results = ListMap(
116118
"_1" -> d1.apply(left._1, right._1),
117119
"_2" -> d2.apply(left._2, right._2),
118120
"_3" -> d3.apply(left._3, right._3),
119121
"_4" -> d4.apply(left._4, right._4),
120122
"_5" -> d5.apply(left._5, right._5),
121123
"_6" -> d6.apply(left._6, right._6),
122124
"_7" -> d7.apply(left._7, right._7)
123-
).toMap
125+
)
124126
DiffResultObject("Tuple7", results)
125127
}
126128
}
@@ -140,7 +142,7 @@ trait DiffTupleInstances {
140142
right: (T1, T2, T3, T4, T5, T6, T7, T8),
141143
context: DiffContext
142144
): DiffResult = {
143-
val results = List(
145+
val results = ListMap(
144146
"_1" -> d1.apply(left._1, right._1),
145147
"_2" -> d2.apply(left._2, right._2),
146148
"_3" -> d3.apply(left._3, right._3),
@@ -149,7 +151,7 @@ trait DiffTupleInstances {
149151
"_6" -> d6.apply(left._6, right._6),
150152
"_7" -> d7.apply(left._7, right._7),
151153
"_8" -> d8.apply(left._8, right._8)
152-
).toMap
154+
)
153155
DiffResultObject("Tuple8", results)
154156
}
155157
}
@@ -170,7 +172,7 @@ trait DiffTupleInstances {
170172
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9),
171173
context: DiffContext
172174
): DiffResult = {
173-
val results = List(
175+
val results = ListMap(
174176
"_1" -> d1.apply(left._1, right._1),
175177
"_2" -> d2.apply(left._2, right._2),
176178
"_3" -> d3.apply(left._3, right._3),
@@ -180,7 +182,7 @@ trait DiffTupleInstances {
180182
"_7" -> d7.apply(left._7, right._7),
181183
"_8" -> d8.apply(left._8, right._8),
182184
"_9" -> d9.apply(left._9, right._9)
183-
).toMap
185+
)
184186
DiffResultObject("Tuple9", results)
185187
}
186188
}
@@ -203,7 +205,7 @@ trait DiffTupleInstances {
203205
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10),
204206
context: DiffContext
205207
): DiffResult = {
206-
val results = List(
208+
val results = ListMap(
207209
"_1" -> d1.apply(left._1, right._1),
208210
"_2" -> d2.apply(left._2, right._2),
209211
"_3" -> d3.apply(left._3, right._3),
@@ -214,7 +216,7 @@ trait DiffTupleInstances {
214216
"_8" -> d8.apply(left._8, right._8),
215217
"_9" -> d9.apply(left._9, right._9),
216218
"_10" -> d10.apply(left._10, right._10)
217-
).toMap
219+
)
218220
DiffResultObject("Tuple10", results)
219221
}
220222
}
@@ -238,7 +240,7 @@ trait DiffTupleInstances {
238240
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11),
239241
context: DiffContext
240242
): DiffResult = {
241-
val results = List(
243+
val results = ListMap(
242244
"_1" -> d1.apply(left._1, right._1),
243245
"_2" -> d2.apply(left._2, right._2),
244246
"_3" -> d3.apply(left._3, right._3),
@@ -250,7 +252,7 @@ trait DiffTupleInstances {
250252
"_9" -> d9.apply(left._9, right._9),
251253
"_10" -> d10.apply(left._10, right._10),
252254
"_11" -> d11.apply(left._11, right._11)
253-
).toMap
255+
)
254256
DiffResultObject("Tuple11", results)
255257
}
256258
}
@@ -275,7 +277,7 @@ trait DiffTupleInstances {
275277
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12),
276278
context: DiffContext
277279
): DiffResult = {
278-
val results = List(
280+
val results = ListMap(
279281
"_1" -> d1.apply(left._1, right._1),
280282
"_2" -> d2.apply(left._2, right._2),
281283
"_3" -> d3.apply(left._3, right._3),
@@ -288,7 +290,7 @@ trait DiffTupleInstances {
288290
"_10" -> d10.apply(left._10, right._10),
289291
"_11" -> d11.apply(left._11, right._11),
290292
"_12" -> d12.apply(left._12, right._12)
291-
).toMap
293+
)
292294
DiffResultObject("Tuple12", results)
293295
}
294296
}
@@ -314,7 +316,7 @@ trait DiffTupleInstances {
314316
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13),
315317
context: DiffContext
316318
): DiffResult = {
317-
val results = List(
319+
val results = ListMap(
318320
"_1" -> d1.apply(left._1, right._1),
319321
"_2" -> d2.apply(left._2, right._2),
320322
"_3" -> d3.apply(left._3, right._3),
@@ -328,7 +330,7 @@ trait DiffTupleInstances {
328330
"_11" -> d11.apply(left._11, right._11),
329331
"_12" -> d12.apply(left._12, right._12),
330332
"_13" -> d13.apply(left._13, right._13)
331-
).toMap
333+
)
332334
if (results.values.forall(_.isIdentical)) {
333335
IdenticalValue(left)
334336
} else {
@@ -359,7 +361,7 @@ trait DiffTupleInstances {
359361
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14),
360362
context: DiffContext
361363
): DiffResult = {
362-
val results = List(
364+
val results = ListMap(
363365
"_1" -> d1.apply(left._1, right._1),
364366
"_2" -> d2.apply(left._2, right._2),
365367
"_3" -> d3.apply(left._3, right._3),
@@ -374,7 +376,7 @@ trait DiffTupleInstances {
374376
"_12" -> d12.apply(left._12, right._12),
375377
"_13" -> d13.apply(left._13, right._13),
376378
"_14" -> d14.apply(left._14, right._14)
377-
).toMap
379+
)
378380
DiffResultObject("Tuple14", results)
379381
}
380382
}
@@ -402,7 +404,7 @@ trait DiffTupleInstances {
402404
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15),
403405
context: DiffContext
404406
): DiffResult = {
405-
val results = List(
407+
val results = ListMap(
406408
"_1" -> d1.apply(left._1, right._1),
407409
"_2" -> d2.apply(left._2, right._2),
408410
"_3" -> d3.apply(left._3, right._3),
@@ -418,7 +420,7 @@ trait DiffTupleInstances {
418420
"_13" -> d13.apply(left._13, right._13),
419421
"_14" -> d14.apply(left._14, right._14),
420422
"_15" -> d15.apply(left._15, right._15)
421-
).toMap
423+
)
422424
DiffResultObject("Tuple15", results)
423425
}
424426
}
@@ -447,7 +449,7 @@ trait DiffTupleInstances {
447449
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16),
448450
context: DiffContext
449451
): DiffResult = {
450-
val results = List(
452+
val results = ListMap(
451453
"_1" -> d1.apply(left._1, right._1),
452454
"_2" -> d2.apply(left._2, right._2),
453455
"_3" -> d3.apply(left._3, right._3),
@@ -464,7 +466,7 @@ trait DiffTupleInstances {
464466
"_14" -> d14.apply(left._14, right._14),
465467
"_15" -> d15.apply(left._15, right._15),
466468
"_16" -> d16.apply(left._16, right._16)
467-
).toMap
469+
)
468470
DiffResultObject("Tuple16", results)
469471
}
470472
}
@@ -494,7 +496,7 @@ trait DiffTupleInstances {
494496
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17),
495497
context: DiffContext
496498
): DiffResult = {
497-
val results = List(
499+
val results = ListMap(
498500
"_1" -> d1.apply(left._1, right._1),
499501
"_2" -> d2.apply(left._2, right._2),
500502
"_3" -> d3.apply(left._3, right._3),
@@ -512,7 +514,7 @@ trait DiffTupleInstances {
512514
"_15" -> d15.apply(left._15, right._15),
513515
"_16" -> d16.apply(left._16, right._16),
514516
"_17" -> d17.apply(left._17, right._17)
515-
).toMap
517+
)
516518
DiffResultObject("Tuple17", results)
517519
}
518520
}
@@ -543,7 +545,7 @@ trait DiffTupleInstances {
543545
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18),
544546
context: DiffContext
545547
): DiffResult = {
546-
val results = List(
548+
val results = ListMap(
547549
"_1" -> d1.apply(left._1, right._1),
548550
"_2" -> d2.apply(left._2, right._2),
549551
"_3" -> d3.apply(left._3, right._3),
@@ -562,7 +564,7 @@ trait DiffTupleInstances {
562564
"_16" -> d16.apply(left._16, right._16),
563565
"_17" -> d17.apply(left._17, right._17),
564566
"_18" -> d18.apply(left._18, right._18)
565-
).toMap
567+
)
566568
DiffResultObject("Tuple18", results)
567569
}
568570
}
@@ -594,7 +596,7 @@ trait DiffTupleInstances {
594596
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19),
595597
context: DiffContext
596598
): DiffResult = {
597-
val results = List(
599+
val results = ListMap(
598600
"_1" -> d1.apply(left._1, right._1),
599601
"_2" -> d2.apply(left._2, right._2),
600602
"_3" -> d3.apply(left._3, right._3),
@@ -614,7 +616,7 @@ trait DiffTupleInstances {
614616
"_17" -> d17.apply(left._17, right._17),
615617
"_18" -> d18.apply(left._18, right._18),
616618
"_19" -> d19.apply(left._19, right._19)
617-
).toMap
619+
)
618620
DiffResultObject("Tuple19", results)
619621
}
620622
}
@@ -648,7 +650,7 @@ trait DiffTupleInstances {
648650
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20),
649651
context: DiffContext
650652
): DiffResult = {
651-
val results = List(
653+
val results = ListMap(
652654
"_1" -> d1.apply(left._1, right._1),
653655
"_2" -> d2.apply(left._2, right._2),
654656
"_3" -> d3.apply(left._3, right._3),
@@ -669,7 +671,7 @@ trait DiffTupleInstances {
669671
"_18" -> d18.apply(left._18, right._18),
670672
"_19" -> d19.apply(left._19, right._19),
671673
"_20" -> d20.apply(left._20, right._20)
672-
).toMap
674+
)
673675
DiffResultObject("Tuple20", results)
674676
}
675677
}
@@ -704,7 +706,7 @@ trait DiffTupleInstances {
704706
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21),
705707
context: DiffContext
706708
): DiffResult = {
707-
val results = List(
709+
val results = ListMap(
708710
"_1" -> d1.apply(left._1, right._1),
709711
"_2" -> d2.apply(left._2, right._2),
710712
"_3" -> d3.apply(left._3, right._3),
@@ -726,7 +728,7 @@ trait DiffTupleInstances {
726728
"_19" -> d19.apply(left._19, right._19),
727729
"_20" -> d20.apply(left._20, right._20),
728730
"_21" -> d21.apply(left._21, right._21)
729-
).toMap
731+
)
730732
DiffResultObject("Tuple21", results)
731733
}
732734
}
@@ -787,7 +789,7 @@ trait DiffTupleInstances {
787789
right: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22),
788790
context: DiffContext
789791
): DiffResult = {
790-
val results = List(
792+
val results = ListMap(
791793
"_1" -> d1.apply(left._1, right._1),
792794
"_2" -> d2.apply(left._2, right._2),
793795
"_3" -> d3.apply(left._3, right._3),
@@ -810,7 +812,7 @@ trait DiffTupleInstances {
810812
"_20" -> d20.apply(left._20, right._20),
811813
"_21" -> d21.apply(left._21, right._21),
812814
"_22" -> d22.apply(left._22, right._22)
813-
).toMap
815+
)
814816
DiffResultObject("Tuple22", results)
815817
}
816818
}

0 commit comments

Comments
 (0)