File tree Expand file tree Collapse file tree 1 file changed +76
-0
lines changed
core-scala/src/test/scala/com/baeldung/scala Expand file tree Collapse file tree 1 file changed +76
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .baeldung .scala
2
+
3
+ import org .junit .Test
4
+ import org .scalatest .{Matchers , WordSpec }
5
+
6
+ class SortingUnitTest extends WordSpec with Matchers {
7
+
8
+ case class User (name : String , age : Int ) extends Ordered [User ] {
9
+ override def compare (that : User ): Int =
10
+ java.lang.Integer .compare(age, that.age)
11
+ }
12
+
13
+ val users = List (
14
+ User (" Mike" , 43 ),
15
+ User (" Mike" , 16 ),
16
+ User (" Kelly" , 21 )
17
+ )
18
+
19
+ @ Test
20
+ def givenUsers_whenSorted_thenSortUsingOrdered (): Unit = {
21
+ users.sorted shouldBe List (
22
+ User (" Mike" , 16 ),
23
+ User (" Kelly" , 21 ),
24
+ User (" Mike" , 43 ),
25
+ )
26
+ }
27
+
28
+ @ Test
29
+ def givenUsers_whenSorted_thenSortUsingOrdering (): Unit = {
30
+ implicit val userOrdering : Ordering [User ] = Ordering .by(_.age)
31
+
32
+ users.sorted shouldBe List (
33
+ User (" Mike" , 16 ),
34
+ User (" Kelly" , 21 ),
35
+ User (" Mike" , 43 ),
36
+ )
37
+ }
38
+
39
+ @ Test
40
+ def givenUsers_whenSorted_thenSortUsingReverseOrdering (): Unit = {
41
+ implicit val userOrdering : Ordering [User ] = Ordering .by[User , Int ](_.age).reverse
42
+
43
+ users.sorted shouldBe List (
44
+ User (" Mike" , 43 ),
45
+ User (" Kelly" , 21 ),
46
+ User (" Mike" , 16 ),
47
+ )
48
+ }
49
+
50
+ @ Test
51
+ def givenUsers_whenSortBy_thenSortByField (): Unit = {
52
+ users.sortBy(_.name) shouldBe List (
53
+ User (" Kelly" , 21 ),
54
+ User (" Mike" , 43 ),
55
+ User (" Mike" , 16 ),
56
+ )
57
+ }
58
+
59
+ @ Test
60
+ def givenUsers_whenSortWith_thenSortWithCompareFunction (): Unit = {
61
+ users.sortWith(_.age > _.age) shouldBe List (
62
+ User (" Mike" , 43 ),
63
+ User (" Kelly" , 21 ),
64
+ User (" Mike" , 16 ),
65
+ )
66
+ }
67
+
68
+ @ Test
69
+ def givenUsers_whenSortBy_thenSortByMultipleFields (): Unit = {
70
+ users.sortBy(u => (u.name, u.age)) shouldBe List (
71
+ User (" Kelly" , 21 ),
72
+ User (" Mike" , 16 ),
73
+ User (" Mike" , 43 ),
74
+ )
75
+ }
76
+ }
You can’t perform that action at this time.
0 commit comments