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