sync: Add tests for RWMonitor as well

This commit is contained in:
Sasha Koshka 2024-12-29 02:33:32 -05:00
parent eebe3d2179
commit 597e3189ca

View File

@ -45,3 +45,46 @@ func TestMonitorConcurrent (test *testing.T) {
} ()
}
}
func TestRWMonitor (test *testing.T) {
mon := NewRWMonitor(9)
func () {
value, done := mon.Borrow()
defer done()
test.Log(value)
if value != 9 { test.Fatal("not equal") }
} ()
func () {
value, done := mon.BorrowReturn()
value += 3
defer done(value)
} ()
func () {
value, done := mon.RBorrow()
defer done()
test.Log(value)
if value != 12 { test.Fatal("not equal") }
} ()
mon.Set(11)
func () {
value, done := mon.RBorrow()
defer done()
test.Log(value)
if value != 11 { test.Fatal("not equal") }
} ()
}
func TestRWMonitorConcurrent (test *testing.T) {
mon := NewRWMonitor(map[int] int { })
for index := 0; index < 16; index ++ {
go func () {
for index := 0; index < 8192; index ++ {
func () {
value, done := mon.Borrow()
defer done()
value[rand.Int()] = rand.Int()
} ()
}
} ()
}
}