summaryrefslogtreecommitdiff
path: root/shared/src/test/scala/escale/SimpleTest.scala
blob: 6f52b06dd693e0a61e5e32fba688fe1d79176195 (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
package escale

import scala.async.Async.{async, await}
import utest._
import scala.concurrent.ExecutionContext.Implicits.global

object SimpleTest extends TestSuite {
  val tests = Tests{
    "put and take" - {
      val ch = Channel[Int](0)
      val p1 = async{
        await(ch.put(1))
        await(ch.put(2))
        await(ch.put(3))
        await(ch.put(4))
      }
      async{
        await(ch.take())
        await(ch.take())
        await(ch.take())
        await(ch.take())
      }
      p1
    }
    "put and take while"- {
      val ch = Channel[Int](0)
      ch.put(1)

      val p1 = async {
        await(ch.put(2))
        await(ch.put(3))
        await(ch.put(4))
        await(ch.put(5))
      }

      val p2 = async {
        var sum = 0
        var a = 0
        while ({ a = await(ch.take()); a } < 5) {
          sum += a
        }
        assert(sum == 10)
      }
      p2
    }
  }
}