summaryrefslogtreecommitdiff
path: root/core/src/test/scala/mill/discover/LabelingTests.scala
blob: fa41737369e1abc45a4c837206491e7c0ddef187 (plain) (blame)
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
package mill.discover

import mill.define.Task
import mill.util.TestGraphs
import utest._
import Discovered.mapping
import mill.discover.Mirror.Segment.Label
object LabelingTests extends TestSuite{

  val tests = Tests{
    val graphs = new TestGraphs()
    import graphs._

    'labeling - {

      def check(mapping: Discovered.Mapping[_], t: Task[_], relPath: Option[String]) = {


        val names: Seq[(Task[_], Seq[Mirror.Segment])] = mapping.value.mapValues(_.segments).toSeq
        val nameMap = names.toMap

        val targetLabel = nameMap.get(t).map(_.map{case Label(v) => v}.mkString("."))
        assert(targetLabel == relPath)
      }
      'singleton - check(mapping(singleton), singleton.single, Some("single"))
      'pair - {
        check(mapping(pair), pair.up, Some("up"))
        check(mapping(pair), pair.down, Some("down"))
      }

      'anonTriple - {
        check(mapping(anonTriple), anonTriple.up, Some("up"))
        check(mapping(anonTriple), anonTriple.down.inputs(0), None)
        check(mapping(anonTriple), anonTriple.down, Some("down"))
      }

      'diamond - {
        check(mapping(diamond), diamond.up, Some("up"))
        check(mapping(diamond), diamond.left, Some("left"))
        check(mapping(diamond), diamond.right, Some("right"))
        check(mapping(diamond), diamond.down, Some("down"))
      }

      'anonDiamond - {
        check(mapping(anonDiamond), anonDiamond.up, Some("up"))
        check(mapping(anonDiamond), anonDiamond.down.inputs(0), None)
        check(mapping(anonDiamond), anonDiamond.down.inputs(1), None)
        check(mapping(anonDiamond), anonDiamond.down, Some("down"))
      }

    }

  }
}