github.com/haraldrudell/parl@v0.4.176/atomic-min_test.go (about)

     1  /*
     2  © 2023–present Harald Rudell <harald.rudell@gmail.com> (https://haraldrudell.github.io/haraldrudell/)
     3  ISC License
     4  */
     5  
     6  package parl
     7  
     8  import (
     9  	"math"
    10  	"testing"
    11  )
    12  
    13  func TestAtomicMin(t *testing.T) {
    14  	var value1 uint64 = math.MaxUint64 - 2
    15  	var value2 uint64 = 1
    16  	var value3 uint64 = 3
    17  
    18  	var value uint64
    19  	var hasValue bool
    20  
    21  	var min AtomicMin[uint64]
    22  
    23  	if _, hasValue = min.Min(); hasValue {
    24  		t.Error("1 hasValue true")
    25  	}
    26  
    27  	if !min.Value(value1) {
    28  		t.Error("2 not min")
    29  	}
    30  
    31  	if value, hasValue = min.Min(); !hasValue {
    32  		t.Error("3 hasValue false")
    33  	}
    34  	if value != value1 {
    35  		t.Errorf("3 value %d exp %d", value, value1)
    36  	}
    37  
    38  	if !min.Value(value2) {
    39  		t.Error("4 not min")
    40  	}
    41  
    42  	if value, hasValue = min.Min(); !hasValue {
    43  		t.Error("5 hasValue false")
    44  	}
    45  	if value != value2 {
    46  		t.Errorf("5 value %d exp %d", value, value2)
    47  	}
    48  
    49  	if min.Value(value3) {
    50  		t.Error("6 min")
    51  	}
    52  
    53  	if value, hasValue = min.Min(); !hasValue {
    54  		t.Error("7 hasValue false")
    55  	}
    56  	if value != value2 {
    57  		t.Errorf("7 value %d exp %d", value, value2)
    58  	}
    59  
    60  }