github.com/diamondburned/arikawa/v2@v2.1.0/state/store/defaultstore/message_test.go (about) 1 package defaultstore 2 3 import ( 4 "testing" 5 6 "github.com/diamondburned/arikawa/v2/discord" 7 ) 8 9 func populate12Store() *Message { 10 store := NewMessage(10) 11 12 // Insert a regular list of messages. 13 store.MessageSet(discord.Message{ID: 11, ChannelID: 1}) 14 store.MessageSet(discord.Message{ID: 9, ChannelID: 1}) 15 store.MessageSet(discord.Message{ID: 7, ChannelID: 1}) 16 store.MessageSet(discord.Message{ID: 5, ChannelID: 1}) 17 store.MessageSet(discord.Message{ID: 3, ChannelID: 1}) 18 store.MessageSet(discord.Message{ID: 1, ChannelID: 1}) 19 20 // Try to insert newer messages after inserting new messages. 21 store.MessageSet(discord.Message{ID: 12, ChannelID: 1}) 22 store.MessageSet(discord.Message{ID: 10, ChannelID: 1}) 23 store.MessageSet(discord.Message{ID: 8, ChannelID: 1}) 24 store.MessageSet(discord.Message{ID: 6, ChannelID: 1}) 25 store.MessageSet(discord.Message{ID: 4, ChannelID: 1}) 26 27 // These messages should be discarded. 28 store.MessageSet(discord.Message{ID: 2, ChannelID: 1}) 29 store.MessageSet(discord.Message{ID: 0, ChannelID: 1}) 30 31 return store 32 } 33 34 func TestMessageSet(t *testing.T) { 35 store := populate12Store() 36 37 messages, _ := store.Messages(1) 38 39 const ( 40 start discord.MessageID = 2 41 end discord.MessageID = 12 42 ) 43 44 for i := start; i < end; i++ { 45 index := i - start 46 expect := end - i + start 47 48 if msgID := messages[index].ID; msgID != expect { 49 t.Errorf("message at %d has mismatch ID %d, expecting %d", i, msgID, expect) 50 } 51 } 52 } 53 54 func TestMessagesUpdate(t *testing.T) { 55 store := populate12Store() 56 57 store.MessageSet(discord.Message{ID: 5, ChannelID: 1, Content: "edited 1"}) 58 store.MessageSet(discord.Message{ID: 6, ChannelID: 1, Content: "edited 2"}) 59 store.MessageSet(discord.Message{ID: 5, ChannelID: 1, Content: "edited 3"}) 60 61 expect := map[discord.MessageID]string{ 62 5: "edited 3", 63 6: "edited 2", 64 } 65 66 messages, _ := store.Messages(1) 67 68 for i := 0; i < store.MaxMessages(); i++ { 69 msg := messages[i] 70 content, ok := expect[msg.ID] 71 if ok && msg.Content != content { 72 t.Errorf("id %d expected %q, got %q", i, content, msg.Content) 73 } 74 } 75 }