Skip to content

Commit

Permalink
Merge pull request #284 from yoavAqua/expected-result
Browse files Browse the repository at this point in the history
Genereate expected result automatically for each test
  • Loading branch information
lizrice committed May 26, 2019
2 parents 53ef773 + ddb677b commit ff6443e
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
2 changes: 2 additions & 0 deletions check/check.go
Expand Up @@ -72,6 +72,7 @@ type Check struct {
State `json:"status"`
ActualValue string `json:"actual_value"`
Scored bool `json:"scored"`
ExpectedResult string `json:"expected_result"`
}

// Runner wraps the basic Run method.
Expand Down Expand Up @@ -188,6 +189,7 @@ func (c *Check) run() State {
finalOutput := c.Tests.execute(out.String())
if finalOutput != nil {
c.ActualValue = finalOutput.actualResult
c.ExpectedResult = finalOutput.ExpectedResult
if finalOutput.testResult {
c.State = PASS
} else {
Expand Down
23 changes: 22 additions & 1 deletion check/test.go
Expand Up @@ -58,6 +58,7 @@ type compare struct {
type testOutput struct {
testResult bool
actualResult string
ExpectedResult string
}

func failTestItem(s string) *testOutput {
Expand Down Expand Up @@ -135,8 +136,10 @@ func (t *testItem) execute(s string) *testOutput {
}
}

expectedResultPattern := ""
switch t.Compare.Op {
case "eq":
expectedResultPattern = "'%s' is equal to '%s'"
value := strings.ToLower(flagVal)
// Do case insensitive comparaison for booleans ...
if value == "false" || value == "true" {
Expand All @@ -146,6 +149,7 @@ func (t *testItem) execute(s string) *testOutput {
}

case "noteq":
expectedResultPattern = "'%s' is not equal to '%s'"
value := strings.ToLower(flagVal)
// Do case insensitive comparaison for booleans ...
if value == "false" || value == "true" {
Expand All @@ -155,32 +159,41 @@ func (t *testItem) execute(s string) *testOutput {
}

case "gt":
expectedResultPattern = "%s is greater then %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a > b

case "gte":
expectedResultPattern = "%s is greater or equal to %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a >= b

case "lt":
expectedResultPattern = "%s is lower then %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a < b

case "lte":
expectedResultPattern = "%s is lower or equal to %s"
a, b := toNumeric(flagVal, t.Compare.Value)
result.testResult = a <= b

case "has":
expectedResultPattern = "'%s' has '%s'"
result.testResult = strings.Contains(flagVal, t.Compare.Value)

case "nothave":
expectedResultPattern = " '%s' not have '%s'"
result.testResult = !strings.Contains(flagVal, t.Compare.Value)
}

result.ExpectedResult = fmt.Sprintf(expectedResultPattern, t.Flag, t.Compare.Value)
} else {
result.ExpectedResult = fmt.Sprintf("'%s' is present", t.Flag)
result.testResult = isset
}

} else {
result.ExpectedResult = fmt.Sprintf("'%s' is not present", t.Flag)
notset := !match
result.testResult = notset
}
Expand All @@ -206,8 +219,11 @@ func (ts *tests) execute(s string) *testOutput {
return finalOutput
}

expectedResultArr := make([]string, len(res))

for i, t := range ts.TestItems {
res[i] = *(t.execute(s))
expectedResultArr[i] = res[i].ExpectedResult
}

var result bool
Expand All @@ -221,11 +237,16 @@ func (ts *tests) execute(s string) *testOutput {
for i := range res {
result = result && res[i].testResult
}
// Generate an AND expected result
finalOutput.ExpectedResult = strings.Join(expectedResultArr, " AND ")

case or:
result = false
for i := range res {
result = result || res[i].testResult
}
// Generate an OR expected result
finalOutput.ExpectedResult = strings.Join(expectedResultArr, " OR ")
}

finalOutput.testResult = result
Expand Down

0 comments on commit ff6443e

Please sign in to comment.