github.com/diamondburned/arikawa/v2@v2.1.0/discord/snowflake_test.go (about)

     1  package discord
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  )
     7  
     8  func TestSnowflake(t *testing.T) {
     9  	t.Run("parse", func(t *testing.T) {
    10  		_, err := ParseSnowflake("175928847299117063")
    11  		if err != nil {
    12  			t.Fatal("Failed to parse snowflake:", err)
    13  		}
    14  	})
    15  
    16  	const value = 175928847299117063
    17  	var expect = time.Date(2016, 04, 30, 11, 18, 25, 796*int(time.Millisecond), time.UTC)
    18  
    19  	t.Run("methods", func(t *testing.T) {
    20  		s := Snowflake(value)
    21  
    22  		if ts := s.Time(); !ts.Equal(expect) {
    23  			t.Fatal("Unexpected time (expected/got):", expect, ts)
    24  		}
    25  
    26  		if s.Worker() != 1 {
    27  			t.Fatal("Unexpected worker:", s.Worker())
    28  		}
    29  
    30  		if s.PID() != 0 {
    31  			t.Fatal("Unexpected PID:", s.PID())
    32  		}
    33  
    34  		if s.Increment() != 7 {
    35  			t.Fatal("Unexpected increment:", s.Increment())
    36  		}
    37  	})
    38  
    39  	t.Run("IsValid", func(t *testing.T) {
    40  		t.Run("0", func(t *testing.T) {
    41  			if Snowflake(0).IsValid() {
    42  				t.Fatal("0 isn't a valid Snowflake")
    43  			}
    44  		})
    45  
    46  		t.Run("null", func(t *testing.T) {
    47  			if NullSnowflake.IsValid() {
    48  				t.Fatal("NullSnowflake isn't a valid Snowflake")
    49  			}
    50  		})
    51  
    52  		t.Run("valid", func(t *testing.T) {
    53  			var testFlake Snowflake = 123
    54  
    55  			if !testFlake.IsValid() {
    56  				t.Fatal(testFlake, "is a valid Snowflake")
    57  			}
    58  		})
    59  	})
    60  
    61  	t.Run("new", func(t *testing.T) {
    62  		if s := NewSnowflake(expect); !s.Time().Equal(expect) {
    63  			t.Fatal("Unexpected new snowflake from expected time:", s)
    64  		}
    65  	})
    66  }