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 }