dotcloud/docker

View on GitHub
integration-cli/checker/checker.go

Summary

Maintainability
A
0 mins
Test Coverage
// Package checker provides helpers for gotest.tools/assert.
// Please remove this package whenever possible.
package checker // import "github.com/docker/docker/integration-cli/checker"

import (
    "fmt"

    "gotest.tools/v3/assert"
    "gotest.tools/v3/assert/cmp"
)

// Compare defines the interface to compare values
type Compare func(x interface{}) assert.BoolOrComparison

// False checks if the value is false
func False() Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return !x.(bool)
    }
}

// True checks if the value is true
func True() Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return x
    }
}

// Equals checks if the value is equal to the given value
func Equals(y interface{}) Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return cmp.Equal(x, y)
    }
}

// Contains checks if the value contains the given value
func Contains(y interface{}) Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return cmp.Contains(x, y)
    }
}

// Not checks if two values are not
func Not(c Compare) Compare {
    return func(x interface{}) assert.BoolOrComparison {
        r := c(x)
        switch r := r.(type) {
        case bool:
            return !r
        case cmp.Comparison:
            return !r().Success()
        default:
            panic(fmt.Sprintf("unexpected type %T", r))
        }
    }
}

// DeepEquals checks if two values are equal
func DeepEquals(y interface{}) Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return cmp.DeepEqual(x, y)
    }
}

// HasLen checks if the value has the expected number of elements
func HasLen(y int) Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return cmp.Len(x, y)
    }
}

// IsNil checks if the value is nil
func IsNil() Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return cmp.Nil(x)
    }
}

// GreaterThan checks if the value is greater than the given value
func GreaterThan(y int) Compare {
    return func(x interface{}) assert.BoolOrComparison {
        return x.(int) > y
    }
}