go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/rate/wait_test.go (about)

     1  /*
     2  
     3  Copyright (c) 2023 - Present. Will Charczuk. All rights reserved.
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository.
     5  
     6  */
     7  
     8  package rate
     9  
    10  import (
    11  	"testing"
    12  	"time"
    13  
    14  	. "go.charczuk.com/sdk/assert"
    15  )
    16  
    17  func Test_Wait_Calculate(t *testing.T) {
    18  	wait := Wait{2 * 1024, time.Second}.Calculate(
    19  		4*1024,
    20  		time.Second,
    21  	)
    22  	ItsEqual(t, time.Second, wait)
    23  
    24  	wait = Wait{4 * 1024, time.Second}.Calculate(2*1024, time.Second)
    25  	ItsEqual(t, -500*time.Millisecond, wait)
    26  
    27  	// originally 4 kilobytes a second
    28  	// or 240 kilobytes in a minute (i.e 60 seconds, or 60 * 4)
    29  	wait = Wait{2 * 1024, time.Second}.Calculate(240*1024, time.Minute)
    30  	ItsEqual(t, time.Minute, wait, "THINK ABOUT IT. HOW MANY MINUTES PRODUCED 240kb")
    31  
    32  	wait = Wait{2 * 1024, time.Second}.Calculate(3*1024, time.Second)
    33  	ItsEqual(t, 500*time.Millisecond, wait)
    34  }