stringsubject.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package assert
  2. import (
  3. "strings"
  4. "github.com/v2ray/v2ray-core/common/serial"
  5. )
  6. func StringLiteral(value string) *StringSubject {
  7. return String(serial.StringT((value)))
  8. }
  9. func String(value serial.String) *StringSubject {
  10. return &StringSubject{value: value}
  11. }
  12. type StringSubject struct {
  13. Subject
  14. value serial.String
  15. }
  16. func (subject *StringSubject) Named(name string) *StringSubject {
  17. subject.Subject.Named(name)
  18. return subject
  19. }
  20. func (subject *StringSubject) DisplayString() string {
  21. return subject.Subject.DisplayString(subject.value.String())
  22. }
  23. func (subject *StringSubject) Equals(expectation string) {
  24. if subject.value.String() != expectation {
  25. subject.Fail(subject.DisplayString(), "is equal to", serial.StringT(expectation))
  26. }
  27. }
  28. func (subject *StringSubject) NotEquals(expectation string) {
  29. if subject.value.String() == expectation {
  30. subject.Fail(subject.DisplayString(), "is not equal to ", serial.StringT(expectation))
  31. }
  32. }
  33. func (subject *StringSubject) Contains(substring serial.String) {
  34. if !strings.Contains(subject.value.String(), substring.String()) {
  35. subject.Fail(subject.DisplayString(), "contains", substring)
  36. }
  37. }
  38. func (subject *StringSubject) NotContains(substring serial.String) {
  39. if strings.Contains(subject.value.String(), substring.String()) {
  40. subject.Fail(subject.DisplayString(), "doesn't contain", substring)
  41. }
  42. }