hasher_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package hasher
  2. import (
  3. "testing"
  4. "git.andreafazzi.eu/andrea/probo/client"
  5. "github.com/remogatto/prettytest"
  6. )
  7. type testSuite struct {
  8. prettytest.Suite
  9. }
  10. func TestRunner(t *testing.T) {
  11. prettytest.Run(
  12. t,
  13. new(testSuite),
  14. )
  15. }
  16. func (t *testSuite) TestQuizHashes() {
  17. h := NewDefaultHash(DefaultSHA256HashingFn)
  18. firstQuizRequest := &client.CreateQuizRequest{
  19. Question: &client.CreateQuestionRequest{
  20. Text: "Question 1"},
  21. Answers: []*client.CreateAnswerRequest{
  22. {Text: "Answer 2", Correct: false},
  23. {Text: "Answer 3", Correct: false},
  24. {Text: "Answer 1", Correct: true},
  25. },
  26. }
  27. secondQuizRequest := &client.CreateQuizRequest{
  28. Question: &client.CreateQuestionRequest{
  29. Text: "Question 1"},
  30. Answers: []*client.CreateAnswerRequest{
  31. {Text: "Answer 1", Correct: false},
  32. {Text: "Answer 2", Correct: false},
  33. {Text: "Answer 3", Correct: true},
  34. },
  35. }
  36. thirdQuizRequest := &client.CreateQuizRequest{
  37. Question: &client.CreateQuestionRequest{
  38. Text: "Question 2"},
  39. Answers: []*client.CreateAnswerRequest{
  40. {Text: "Answer 1", Correct: false},
  41. {Text: "Answer 2", Correct: false},
  42. {Text: "Answer 3", Correct: true},
  43. },
  44. }
  45. hashesFromFirstRequest := h.QuizHashes(firstQuizRequest)
  46. hashesFromSecondRequest := h.QuizHashes(secondQuizRequest)
  47. hashesFromThirdRequest := h.QuizHashes(thirdQuizRequest)
  48. t.Equal(5, len(hashesFromFirstRequest))
  49. t.True(hashesFromFirstRequest[1] == hashesFromSecondRequest[2], "Answers' hashes should maintain original request's order")
  50. t.True(hashesFromFirstRequest[4] == hashesFromSecondRequest[4], "Quiz hash should be the same because quizzes are duplicated")
  51. t.True(hashesFromFirstRequest[1] != hashesFromThirdRequest[1], "Questions' hashes should not be the same because texts are different")
  52. t.True(hashesFromFirstRequest[4] != hashesFromThirdRequest[4], "Quiz hash should not be the same because quizzes are not duplicated")
  53. }