address.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package assert
  2. import (
  3. v2net "github.com/v2ray/v2ray-core/common/net"
  4. "github.com/v2ray/v2ray-core/common/serial"
  5. "github.com/v2ray/v2ray-core/testing/assert"
  6. )
  7. func Address(value v2net.Address) *AddressSubject {
  8. return &AddressSubject{value: value}
  9. }
  10. type AddressSubject struct {
  11. assert.Subject
  12. value v2net.Address
  13. }
  14. func (subject *AddressSubject) Named(name string) *AddressSubject {
  15. subject.Subject.Named(name)
  16. return subject
  17. }
  18. func (subject *AddressSubject) DisplayString() string {
  19. return subject.Subject.DisplayString(subject.value.String())
  20. }
  21. func (subject *AddressSubject) Equals(another v2net.Address) {
  22. if subject.value.IsIPv4() && another.IsIPv4() {
  23. IP(subject.value.IP()).Equals(another.IP())
  24. } else if subject.value.IsIPv6() && another.IsIPv6() {
  25. IP(subject.value.IP()).Equals(another.IP())
  26. } else if subject.value.IsDomain() && another.IsDomain() {
  27. assert.StringLiteral(subject.value.Domain()).Equals(another.Domain())
  28. } else {
  29. subject.Fail(subject.DisplayString(), "equals to", another)
  30. }
  31. }
  32. func (subject *AddressSubject) IsIPv4() {
  33. if !subject.value.IsIPv4() {
  34. subject.Fail(subject.DisplayString(), "is", serial.StringLiteral("an IPv4 address"))
  35. }
  36. }
  37. func (subject *AddressSubject) IsNotIPv4() {
  38. if subject.value.IsIPv4() {
  39. subject.Fail(subject.DisplayString(), "is not", serial.StringLiteral("an IPv4 address"))
  40. }
  41. }
  42. func (subject *AddressSubject) IsIPv6() {
  43. if !subject.value.IsIPv6() {
  44. subject.Fail(subject.DisplayString(), "is", serial.StringLiteral("an IPv6 address"))
  45. }
  46. }
  47. func (subject *AddressSubject) IsNotIPv6() {
  48. if subject.value.IsIPv6() {
  49. subject.Fail(subject.DisplayString(), "is not", serial.StringLiteral("an IPv6 address"))
  50. }
  51. }
  52. func (subject *AddressSubject) IsDomain() {
  53. if !subject.value.IsDomain() {
  54. subject.Fail(subject.DisplayString(), "is", serial.StringLiteral("a domain address"))
  55. }
  56. }
  57. func (subject *AddressSubject) IsNotDomain() {
  58. if subject.value.IsDomain() {
  59. subject.Fail(subject.DisplayString(), "is not", serial.StringLiteral("a domain address"))
  60. }
  61. }