-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathresource_test.go
30 lines (22 loc) · 967 Bytes
/
resource_test.go
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
package simgo
import "testing"
func TestResourceRequestRelease(t *testing.T) {
sim := NewSimulation()
res := NewResource(sim, 1)
sim.Process(func(proc Process) {
// resource is not empty, immediate request
req_ev := res.Request()
assertf(t, len(res.reqs) == 0, "len(res.reqs) == %d", len(res.reqs))
assertf(t, res.Available() == 0, "res.Available() == %d", res.Available())
assertf(t, req_ev.Triggered(), "req_ev.Triggered() == false")
// resource is empty, request queued
req_ev = res.Request()
assertf(t, len(res.reqs) == 1, "len(res.reqs) == %d", len(res.reqs))
assertf(t, res.Available() == 0, "res.Available() == %d", res.Available())
assertf(t, !req_ev.Triggered(), "req_ev.Triggered() == true")
res.Release()
assertf(t, len(res.reqs) == 0, "len(res.reqs) == %d", len(res.reqs))
assertf(t, res.Available() == 0, "res.Available() == %d", res.Available())
assertf(t, req_ev.Triggered(), "req_ev.Triggered() == false")
})
}