maildir_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package fs
  2. import (
  3. "fmt"
  4. "testing"
  5. "time"
  6. "github.com/google/go-cmp/cmp"
  7. )
  8. func TestFlagsFromString(t *testing.T) {
  9. flags, err := flagsFromString("RTDSF")
  10. if err != nil {
  11. t.Errorf("Flag parsing errored unexpectedly: %s\n", err)
  12. }
  13. expect := []Flag{FlagDraft, FlagFlagged, FlagAnswered, FlagSeen, FlagDeleted}
  14. if !cmp.Equal(flags, expect) {
  15. t.Errorf("Flags mismatch: %s", cmp.Diff(expect, flags))
  16. }
  17. _, err = flagsFromString("RDX")
  18. if err != ErrUnknownFlag {
  19. t.Error("Flag parsing should have errored")
  20. }
  21. _, err = flagsFromString("DDF")
  22. if err != ErrMalformedName {
  23. t.Error("Flag parsing should have errored")
  24. }
  25. }
  26. func TestMailFileString(t *testing.T) {
  27. clock := mockClock{}
  28. timestamp := clock.Now()
  29. progressive := 4
  30. pid := 1312
  31. hostname := "myplace"
  32. name := "main_account" // known md5sum: f2cf513ad46d4d9b9684103e468803a0
  33. uid := 33243
  34. mf := &MailFile{timestamp: timestamp, progressive: progressive, pid: pid, hostname: hostname}
  35. mf.SetFlags([]Flag{FlagSeen, FlagAnswered})
  36. mf.SetMd5FromName(name)
  37. mf.SetUid(uid)
  38. expect := fmt.Sprintf(
  39. "%d_%d.%d.%s,U=%d,FMD5=f2cf513ad46d4d9b9684103e468803a0:2,RS",
  40. timestamp.Unix(),
  41. progressive,
  42. pid,
  43. hostname,
  44. uid)
  45. result := fmt.Sprint(mf)
  46. if expect != result {
  47. t.Errorf("Mismatch\n\tExpect: %s\n\tResult: %s\n", expect, result)
  48. t.Logf("diff: %s", cmp.Diff(expect, result))
  49. }
  50. }
  51. func TestNewMailFile(t *testing.T) {
  52. mf, err := NewMailFile("12345_0.1312.myplace,U=666,FMD5=f2cf513ad46d4d9b9684103e468803a0:2,")
  53. if err != nil {
  54. t.Errorf("Unexpected error: %s\n", err)
  55. }
  56. expect := &MailFile{
  57. timestamp: time.Unix(12345, 0),
  58. progressive: 0,
  59. pid: 1312,
  60. hostname: "myplace",
  61. uid: 666,
  62. md5: "f2cf513ad46d4d9b9684103e468803a0",
  63. flags: []Flag{},
  64. }
  65. if !cmp.Equal(mf, expect, cmp.AllowUnexported(MailFile{})) {
  66. t.Errorf("MailFile mismatch: %s", cmp.Diff(expect, mf, cmp.AllowUnexported(MailFile{})))
  67. }
  68. }