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  }