github.com/MetalBlockchain/metalgo@v1.11.9/utils/maybe/maybe_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package maybe 5 6 import ( 7 "slices" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestMaybeClone(t *testing.T) { 14 require := require.New(t) 15 16 // Case: Value is maybe 17 { 18 val := []byte{1, 2, 3} 19 originalVal := slices.Clone(val) 20 m := Some(val) 21 mClone := Bind(m, slices.Clone[[]byte]) 22 m.value[0] = 0 23 require.NotEqual(mClone.value, m.value) 24 require.Equal(originalVal, mClone.value) 25 } 26 27 // Case: Value is nothing 28 { 29 m := Nothing[[]byte]() 30 mClone := Bind(m, slices.Clone[[]byte]) 31 require.True(mClone.IsNothing()) 32 } 33 } 34 35 func TestMaybeString(t *testing.T) { 36 require := require.New(t) 37 38 // Case: Value is maybe 39 { 40 val := []int{1, 2, 3} 41 m := Some(val) 42 require.Equal("Some[[]int]{[1 2 3]}", m.String()) 43 } 44 45 // Case: Value is nothing 46 { 47 m := Nothing[int]() 48 require.Equal("Nothing[int]", m.String()) 49 } 50 } 51 52 func TestMaybeEquality(t *testing.T) { 53 require := require.New(t) 54 require.True(Equal(Nothing[int](), Nothing[int](), func(i int, i2 int) bool { 55 return i == i2 56 })) 57 require.False(Equal(Nothing[int](), Some(1), func(i int, i2 int) bool { 58 return i == i2 59 })) 60 require.False(Equal(Some(1), Nothing[int](), func(i int, i2 int) bool { 61 return i == i2 62 })) 63 require.True(Equal(Some(1), Some(1), func(i int, i2 int) bool { 64 return i == i2 65 })) 66 }