You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

expression_resolver_test.go 1.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package expr
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestParseExpressionStruct(t *testing.T) {
  7. tests := []struct {
  8. expressionStr string
  9. expected *ExpressionStruct
  10. expectError bool
  11. }{
  12. {
  13. expressionStr: "$type{content}",
  14. expected: &ExpressionStruct{
  15. typeStart: 0,
  16. typeEnd: 5,
  17. typ: "type",
  18. end: 13,
  19. content: "content",
  20. },
  21. expectError: false,
  22. },
  23. {
  24. expressionStr: "$type.content",
  25. expected: &ExpressionStruct{
  26. typeStart: 0,
  27. typeEnd: 5,
  28. typ: "type",
  29. end: 13,
  30. content: "content",
  31. },
  32. expectError: false,
  33. },
  34. {
  35. expressionStr: "invalid expression",
  36. expected: nil,
  37. expectError: true,
  38. },
  39. }
  40. for _, test := range tests {
  41. result, err := parseExpressionStruct(test.expressionStr)
  42. if test.expectError {
  43. assert.Error(t, err, "Expected an error for input '%s'", test.expressionStr)
  44. } else {
  45. assert.NoError(t, err, "Did not expect an error for input '%s'", test.expressionStr)
  46. assert.NotNil(t, result, "Expected a non-nil result for input '%s'", test.expressionStr)
  47. assert.Equal(t, *test.expected, *result, "Expected result %+v, got %+v for input '%s'", test.expected, result, test.expressionStr)
  48. }
  49. }
  50. }