-
Notifications
You must be signed in to change notification settings - Fork 2
/
ArgumentDslTest.scala
66 lines (54 loc) · 1.42 KB
/
ArgumentDslTest.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package freecli
package argument
import shapeless._
import core.all._
import argument.all._
import testkit.Test
class ArgumentDslTest extends Test {
describe("Arguments Dsl tests") {
it("allow plain arg") {
string: ArgumentDsl[String]
}
it("allow adding name") {
string -~ name("string"): ArgumentDsl[String]
}
it("allow adding description") {
string -~ des("string"): ArgumentDsl[String]
}
it("allow adding placholder and description") {
string -~ name("name") -~ des("string"): ArgumentDsl[String]
}
it("allow merging arguments") {
string -~ name("first") ::
string -~ name("second") -~ des("string") ::
int ::
string ::
boolean: ArgumentDsl[String :: String :: Int :: String :: Boolean :: HNil]
}
it("group single") {
case class A(a1: String)
group[A] {
string -~ name("first")
}
}
it("group to case class") {
case class A(a1: String, a2: String, a3: Int, a4: String, a5: Boolean)
group[A] {
string -~ name("first") ::
string -~ name("second") -~ des("string") ::
int ::
string ::
boolean
}
}
it("group to tuple") {
groupT {
string -~ name("first") ::
string -~ name("second") -~ des("string") ::
int ::
string ::
boolean
}: ArgumentDsl[(String, String, Int, String, Boolean)]
}
}
}