gobot.io/x/gobot/v2@v2.1.0/utils_test.go (about) 1 package gobot 2 3 import ( 4 "strings" 5 "testing" 6 "time" 7 8 "gobot.io/x/gobot/v2/gobottest" 9 ) 10 11 func TestEvery(t *testing.T) { 12 i := 0 13 begin := time.Now() 14 sem := make(chan time.Time, 1) 15 Every(2*time.Millisecond, func() { 16 i++ 17 if i == 2 { 18 sem <- time.Now() 19 } 20 }) 21 <-sem 22 if time.Since(begin) < 4*time.Millisecond { 23 t.Error("Test should have taken at least 4 milliseconds") 24 } 25 } 26 27 func TestEveryWhenStopped(t *testing.T) { 28 sem := make(chan bool) 29 30 done := Every(100*time.Millisecond, func() { 31 sem <- true 32 }) 33 34 select { 35 case <-sem: 36 done.Stop() 37 case <-time.After(190 * time.Millisecond): 38 done.Stop() 39 t.Errorf("Every was not called") 40 } 41 42 select { 43 case <-time.After(190 * time.Millisecond): 44 case <-sem: 45 t.Error("Every should have stopped") 46 } 47 } 48 49 func TestAfter(t *testing.T) { 50 i := 0 51 sem := make(chan bool) 52 53 After(100*time.Millisecond, func() { 54 i++ 55 sem <- true 56 }) 57 58 select { 59 case <-sem: 60 case <-time.After(190 * time.Millisecond): 61 t.Errorf("After was not called") 62 } 63 64 gobottest.Assert(t, i, 1) 65 } 66 67 func TestFromScale(t *testing.T) { 68 gobottest.Assert(t, FromScale(5, 0, 10), 0.5) 69 } 70 71 func TestToScale(t *testing.T) { 72 gobottest.Assert(t, ToScale(500, 0, 10), 10.0) 73 gobottest.Assert(t, ToScale(-1, 0, 10), 0.0) 74 gobottest.Assert(t, ToScale(0.5, 0, 10), 5.0) 75 } 76 77 func TestRescale(t *testing.T) { 78 gobottest.Assert(t, Rescale(500, 0, 1000, 0, 10), 5.0) 79 gobottest.Assert(t, Rescale(-1.0, -1, 0, 490, 350), 490.0) 80 } 81 82 func TestRand(t *testing.T) { 83 a := Rand(10000) 84 b := Rand(10000) 85 if a == b { 86 t.Errorf("%v should not equal %v", a, b) 87 } 88 } 89 90 func TestDefaultName(t *testing.T) { 91 name := DefaultName("tester") 92 gobottest.Assert(t, strings.Contains(name, "tester"), true) 93 }