Sha256: 19a0dde65b13d09946cc05fe94248e46dbb1bfdbb97d248e614e3890e0801ab9

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

#ifndef BANDIT_CONTAIN_H
#define BANDIT_CONTAIN_H

#include <cstring>
#include <vector>

#include "Matcher.h"

namespace bandit { namespace Matchers {

    template<typename T>
    class Contain : public Matcher
    {
    public:
        explicit Contain(const T& element) : Matcher(), _element(element) {}

        template<typename U>
        bool matches(const U& container) const
	{
	    return container.find(_element) != container.end();
	}

        template<typename U>
        bool matches(const std::vector<U>& container) const
	{
	    return std::find(container.begin(), container.end(), _element) != container.end();
	}

	bool matches(const char *const container) const
	{
	    return (_element != NULL) && (container != NULL) && (strstr(container, _element) != NULL);
	}

	bool matches(char *const container) const
	{
	    return (_element != NULL) && (container != NULL) && (strstr(container, _element) != NULL);
	}

    protected:
	std::string failure_message_end() const
	{
	    std::ostringstream ss;
	    ss << "contain <" << _element << ">";
	    return ss.str();
	}

    private:
        const T& _element;
    };

    template<typename T>
    Contain<T> contain(const T& element)
    {
        return Contain<T>(element);
    }
}}

#endif	// BANDIT_CONTAIN_H

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tree-sitter-0.1.0 ext/tree-sitter/tree-sitter/externals/bandit/bandit/assertion_frameworks/matchers/Contain.h
tree-sitter-0.0.1 ext/tree-sitter/tree-sitter/externals/bandit/bandit/assertion_frameworks/matchers/Contain.h