urn_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package urn
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. )
  6. func TestUrn(t *testing.T) {
  7. for ii, tt := range tests {
  8. urn, ok := Parse(tt.in)
  9. if ok {
  10. require.True(t, tt.ok, herror(ii, tt))
  11. require.Equal(t, tt.obj.prefix, urn.prefix, herror(ii, tt))
  12. require.Equal(t, tt.obj.ID, urn.ID, herror(ii, tt))
  13. require.Equal(t, tt.obj.SS, urn.SS, herror(ii, tt))
  14. require.Equal(t, tt.str, urn.String(), herror(ii, tt))
  15. require.Equal(t, tt.norm, urn.Normalize().String(), herror(ii, tt))
  16. } else {
  17. require.False(t, tt.ok, herror(ii, tt))
  18. require.Empty(t, urn, herror(ii, tt))
  19. }
  20. }
  21. }
  22. func TestLexicalEquivalence(t *testing.T) {
  23. for ii, tt := range equivalenceTests {
  24. urnlx, oklx := Parse(tt.lx)
  25. urnrx, okrx := Parse(tt.rx)
  26. if oklx && okrx {
  27. require.True(t, urnlx.Equal(urnlx))
  28. require.True(t, urnrx.Equal(urnrx))
  29. if tt.eq {
  30. require.True(t, urnlx.Equal(urnrx), ierror(ii))
  31. require.True(t, urnrx.Equal(urnlx), ierror(ii))
  32. } else {
  33. require.False(t, urnlx.Equal(urnrx), ierror(ii))
  34. require.False(t, urnrx.Equal(urnlx), ierror(ii))
  35. }
  36. } else {
  37. t.Log("Something wrong in the testing table ...")
  38. }
  39. }
  40. }
  41. func TestDefaultPrefixWhenString(t *testing.T) {
  42. u := &URN{
  43. ID: "pippo",
  44. SS: "pluto",
  45. }
  46. require.Equal(t, "urn:pippo:pluto", u.String())
  47. }