github.com/andersfylling/snowflake/v5@v5.0.1/utils_test.go (about)

     1  package snowflake
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  )
     7  
     8  func TestParseSnowflakeString(t *testing.T) {
     9  	// test panic
    10  	defer func() {
    11  		if r := recover(); r != nil {
    12  			t.Error(r)
    13  		}
    14  	}()
    15  
    16  	id := "435639843545"
    17  	if ParseSnowflakeString(id).String() != id {
    18  		t.Errorf("Incorrect string parsing for ID, base 10. Wants %s, got %s", id, ParseSnowflakeString(id).String())
    19  	}
    20  	ParseSnowflakeString("11")
    21  	ParseSnowflakeString("0")
    22  	ParseSnowflakeString("")
    23  }
    24  
    25  func TestParseSnowflakeStringWithPanicTriggerLetters(t *testing.T) {
    26  	// test panic
    27  	defer func() {
    28  		if r := recover(); r == nil {
    29  			t.Errorf("ParseID did not panic")
    30  		}
    31  	}()
    32  
    33  	id := "435639sd843545gf453s"
    34  	if ParseSnowflakeString(id).String() != id {
    35  		t.Errorf("Incorrect string parsing for ID, base 10. Wants %s, got %s", id, ParseSnowflakeString(id).String())
    36  	}
    37  }
    38  
    39  func TestParseSnowflakeStringWithPanicTriggerOverflow(t *testing.T) {
    40  	// test panic
    41  	defer func() {
    42  		if r := recover(); r == nil {
    43  			t.Errorf("ParseID did not panic")
    44  		}
    45  	}()
    46  
    47  	id := "184467440737095516151" // string(uint64(0) - 1) + "1"
    48  	if ParseSnowflakeString(id).String() != id {
    49  		t.Errorf("Incorrect string parsing for ID, base 10. Wants %s, got %s", id, ParseSnowflakeString(id).String())
    50  	}
    51  }
    52  
    53  func TestGetSnowflake(t *testing.T) {
    54  	data := []interface{}{
    55  		"348563",
    56  		int(2345),
    57  		int(-2345),
    58  		uint(8345),
    59  		int8(1),
    60  		int16(1),
    61  		int32(1),
    62  		int64(1),
    63  		uint8(1),
    64  		uint16(1),
    65  		uint32(1),
    66  		uint64(1),
    67  		Snowflake(3),
    68  		Snowflake(246),
    69  	}
    70  	for _, v := range data {
    71  		s, err := GetSnowflake(v)
    72  		if err != nil || s.IsZero() {
    73  			t.Error("cannot parse", reflect.TypeOf(v).Name(), "of value", v)
    74  		}
    75  	}
    76  
    77  	type unknown struct {}
    78  	s, err := GetSnowflake(unknown{})
    79  	if s != 0 {
    80  		t.Error("snowflake should not have a value")
    81  	}
    82  	if err == nil {
    83  		t.Error("should fail to process a unknown type")
    84  	}
    85  }