MCPcopy Create free account
hub / github.com/gavv/httpexpect / NotInDeltaRelative

Method NotInDeltaRelative

number.go:438–534  ·  view source on GitHub ↗

NotInDeltaRelative succeeds if two numbers aren't within relative delta of each other. The relative delta is expressed as a decimal. For example, to determine if a number and a value are within 1% of each other, use 0.01. A number and a value are within relative delta if Abs(number-value) / Abs(nu

(value, delta float64)

Source from the content-addressed store, hash-verified

436// number := NewNumber(t, 123.0)
437// number.NotInDeltaRelative(126.5, 0.01)
438func (n *Number) NotInDeltaRelative(value, delta float64) *Number {
439 opChain := n.chain.enter("NotInDeltaRelative()")
440 defer opChain.leave()
441
442 if opChain.failed() {
443 return n
444 }
445
446 if math.IsNaN(delta) || math.IsInf(delta, 0) {
447 opChain.fail(AssertionFailure{
448 Type: AssertUsage,
449 Errors: []error{
450 fmt.Errorf("unexpected non-number delta argument: %v", delta),
451 },
452 })
453 return n
454 }
455
456 if delta < 0 {
457 opChain.fail(AssertionFailure{
458 Type: AssertUsage,
459 Errors: []error{
460 fmt.Errorf("unexpected negative delta argument: %v", delta),
461 },
462 })
463 return n
464 }
465
466 // Fail if any of the numbers is NaN with specific error message
467 anyNumIsNaN := math.IsNaN(n.value) || math.IsNaN(value)
468 if anyNumIsNaN {
469 var assertionErrors []error
470 assertionErrors = append(
471 assertionErrors,
472 errors.New("expected: can compare values with relative delta"),
473 )
474 if math.IsNaN(n.value) {
475 assertionErrors = append(
476 assertionErrors,
477 errors.New("actual value is NaN"),
478 )
479 }
480 if math.IsNaN(value) {
481 assertionErrors = append(
482 assertionErrors,
483 errors.New("expected value is NaN"),
484 )
485 }
486 opChain.fail(AssertionFailure{
487 Type: AssertEqual,
488 Actual: &AssertionValue{n.value},
489 Expected: &AssertionValue{value},
490 Delta: &AssertionValue{relativeDelta(delta)},
491 Errors: assertionErrors,
492 })
493 return n
494 }
495

Callers 2

TestNumber_FailedChainFunction · 0.80

Calls 7

relativeDeltaTypeAlias · 0.85
deltaRelativeErrorCheckFunction · 0.85
enterMethod · 0.80
leaveMethod · 0.80
failedMethod · 0.80
failMethod · 0.80
ErrorfMethod · 0.65

Tested by 2

TestNumber_FailedChainFunction · 0.64