package discord import ( "testing" "time" ) func TestSnowflake(t *testing.T) { t.Run("parse", func(t *testing.T) { _, err := ParseSnowflake("175928847299117063") if err != nil { t.Fatal("Failed to parse snowflake:", err) } }) const value = 175928847299117063 var expect = time.Date(2016, 04, 30, 11, 18, 25, 796*int(time.Millisecond), time.UTC) t.Run("methods", func(t *testing.T) { s := Snowflake(value) if ts := s.Time(); !ts.Equal(expect) { t.Fatal("Unexpected time (expected/got):", expect, ts) } if s.Worker() != 1 { t.Fatal("Unexpected worker:", s.Worker()) } if s.PID() != 0 { t.Fatal("Unexpected PID:", s.PID()) } if s.Increment() != 7 { t.Fatal("Unexpected increment:", s.Increment()) } }) t.Run("IsValid", func(t *testing.T) { t.Run("0", func(t *testing.T) { if Snowflake(0).IsValid() { t.Fatal("0 isn't a valid Snowflake") } }) t.Run("null", func(t *testing.T) { if NullSnowflake.IsValid() { t.Fatal("NullSnowflake isn't a valid Snowflake") } }) t.Run("valid", func(t *testing.T) { var testFlake Snowflake = 123 if !testFlake.IsValid() { t.Fatal(testFlake, "is a valid Snowflake") } }) }) t.Run("new", func(t *testing.T) { if s := NewSnowflake(expect); !s.Time().Equal(expect) { t.Fatal("Unexpected new snowflake from expected time:", s) } }) }