Skip to content

Commit

Permalink
Merge pull request #70 from dskonev-ozon/release/issue-69
Browse files Browse the repository at this point in the history
[ISSUE-69] Add InDelta asserts wrapper
  • Loading branch information
koodeex authored Jul 12, 2023
2 parents fe554ce + b82ff8c commit 3919c53
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 0 deletions.
5 changes: 5 additions & 0 deletions pkg/framework/asserts_wrapper/helper/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,8 @@ func (a *a) Zero(i interface{}, msgAndArgs ...interface{}) {
func (a *a) NotZero(i interface{}, msgAndArgs ...interface{}) {
a.asserts.NotZero(a.t, i, msgAndArgs...)
}

// InDelta ...
func (a *a) InDelta(expected, actual interface{}, delta float64, msgAndArgs ...interface{}) {
a.asserts.InDelta(a.t, expected, actual, delta, msgAndArgs...)
}
1 change: 1 addition & 0 deletions pkg/framework/asserts_wrapper/helper/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,5 @@ type AssertsHelper interface {
Condition(condition assert.Comparison, msgAndArgs ...interface{})
Zero(i interface{}, msgAndArgs ...interface{})
NotZero(i interface{}, msgAndArgs ...interface{})
InDelta(expected, actual interface{}, delta float64, msgAndArgs ...interface{})
}
1 change: 1 addition & 0 deletions pkg/framework/asserts_wrapper/wrapper/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,5 @@ type AssertsWrapper interface {
Condition(provider Provider, condition assert.Comparison, msgAndArgs ...interface{})
Zero(provider Provider, i interface{}, msgAndArgs ...interface{})
NotZero(provider Provider, i interface{}, msgAndArgs ...interface{})
InDelta(provider Provider, expected, actual interface{}, delta float64, msgAndArgs ...interface{})
}
17 changes: 17 additions & 0 deletions pkg/framework/asserts_wrapper/wrapper/wrapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,23 @@ func (a *asserts) NotZero(provider Provider, i interface{}, msgAndArgs ...interf
}
}

// InDelta ...
func (a *asserts) InDelta(provider Provider, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) {
assertName := "In Delta"

success := a.resultHelper.withNewStep(
a.t,
provider,
assertName,
func(t TestingT) bool { return assert.InDelta(t, expected, actual, delta, msgAndArgs...) },
allure.NewParameters("Expected", expected, "Actual", actual, "Delta", delta),
msgAndArgs...,
)
if !success && a.resultHelper.required {
a.t.FailNow()
}
}

// formatUnequalValues takes two values of arbitrary types and returns string
// representations appropriate to be presented to the user.
//
Expand Down
116 changes: 116 additions & 0 deletions pkg/framework/asserts_wrapper/wrapper/wrapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1742,6 +1742,64 @@ func TestAssertNotZero_Fail(t *testing.T) {
require.Equal(t, "\n%s", mockT.errorFString)
}

func TestAssertInDelta_Success(t *testing.T) {
mockT := newMock()

expected := 10.1
actual := 9.9
delta := 0.2
NewAsserts(mockT).InDelta(mockT, expected, actual, delta)

steps := mockT.steps
require.Len(t, steps, 1)
require.Equal(t, "ASSERT: In Delta", steps[0].Name)
require.Equal(t, allure.Passed, steps[0].Status)

params := steps[0].Parameters
require.Len(t, params, 3)
require.Equal(t, "Expected", params[0].Name)
require.Equal(t, fmt.Sprintf("%v", expected), params[0].GetValue())

require.Equal(t, "Actual", params[1].Name)
require.Equal(t, fmt.Sprintf("%v", actual), params[1].GetValue())

require.Equal(t, "Delta", params[2].Name)
require.Equal(t, fmt.Sprintf("%v", delta), params[2].GetValue())

require.False(t, mockT.errorF)
require.False(t, mockT.failNow)
require.Empty(t, mockT.errorFString)
}

func TestAssertInDelta_Fail(t *testing.T) {
mockT := newMock()

expected := 10
actual := 11.1
delta := float64(1)
NewAsserts(mockT).InDelta(mockT, expected, actual, delta)

steps := mockT.steps
require.Len(t, steps, 1)
require.Equal(t, "ASSERT: In Delta", steps[0].Name)
require.Equal(t, allure.Failed, steps[0].Status)

params := steps[0].Parameters
require.Len(t, params, 3)
require.Equal(t, "Expected", params[0].Name)
require.Equal(t, fmt.Sprintf("%v", expected), params[0].GetValue())

require.Equal(t, "Actual", params[1].Name)
require.Equal(t, fmt.Sprintf("%v", actual), params[1].GetValue())

require.Equal(t, "Delta", params[2].Name)
require.Equal(t, fmt.Sprintf("%v", delta), params[2].GetValue())

require.True(t, mockT.errorF)
require.False(t, mockT.failNow)
require.Equal(t, "\n%s", mockT.errorFString)
}

func TestRequireExactly_Success(t *testing.T) {
mockT := newMock()
NewRequire(mockT).Exactly(mockT, 1, 1)
Expand Down Expand Up @@ -3433,3 +3491,61 @@ func TestRequireNotZero_Fail(t *testing.T) {
require.True(t, mockT.failNow)
require.Equal(t, "\n%s", mockT.errorFString)
}

func TestRequireInDelta_Success(t *testing.T) {
mockT := newMock()

expected := 10.1
actual := 9.9
delta := 0.2
NewRequire(mockT).InDelta(mockT, expected, actual, delta)

steps := mockT.steps
require.Len(t, steps, 1)
require.Equal(t, "REQUIRE: In Delta", steps[0].Name)
require.Equal(t, allure.Passed, steps[0].Status)

params := steps[0].Parameters
require.Len(t, params, 3)
require.Equal(t, "Expected", params[0].Name)
require.Equal(t, fmt.Sprintf("%v", expected), params[0].GetValue())

require.Equal(t, "Actual", params[1].Name)
require.Equal(t, fmt.Sprintf("%v", actual), params[1].GetValue())

require.Equal(t, "Delta", params[2].Name)
require.Equal(t, fmt.Sprintf("%v", delta), params[2].GetValue())

require.False(t, mockT.errorF)
require.False(t, mockT.failNow)
require.Empty(t, mockT.errorFString)
}

func TestRequireInDelta_Fail(t *testing.T) {
mockT := newMock()

expected := 10
actual := 11.1
delta := float64(1)
NewRequire(mockT).InDelta(mockT, expected, actual, delta)

steps := mockT.steps
require.Len(t, steps, 1)
require.Equal(t, "REQUIRE: In Delta", steps[0].Name)
require.Equal(t, allure.Failed, steps[0].Status)

params := steps[0].Parameters
require.Len(t, params, 3)
require.Equal(t, "Expected", params[0].Name)
require.Equal(t, fmt.Sprintf("%v", expected), params[0].GetValue())

require.Equal(t, "Actual", params[1].Name)
require.Equal(t, fmt.Sprintf("%v", actual), params[1].GetValue())

require.Equal(t, "Delta", params[2].Name)
require.Equal(t, fmt.Sprintf("%v", delta), params[2].GetValue())

require.True(t, mockT.errorF)
require.True(t, mockT.failNow)
require.Equal(t, "\n%s", mockT.errorFString)
}
1 change: 1 addition & 0 deletions pkg/framework/provider/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,5 @@ type Asserts interface {
Condition(condition assert.Comparison, msgAndArgs ...interface{})
Zero(i interface{}, msgAndArgs ...interface{})
NotZero(i interface{}, msgAndArgs ...interface{})
InDelta(expected, actual interface{}, delta float64, msgAndArgs ...interface{})
}

0 comments on commit 3919c53

Please sign in to comment.