mkvtoolnix/tests/unit/util.h
2015-01-03 16:54:54 +01:00

79 lines
1.8 KiB
C++

/*
mkvmerge -- utility for splicing together matroska files
from component media subtypes
Distributed under the GPL
see the file COPYING for details
or visit http://www.gnu.org/copyleft/gpl.html
definitions for helper functions for unit tests
Written by Moritz Bunkus <moritz@bunkus.org>.
*/
#ifndef MTX_TESTS_UNIT_UTIL_H
#define MTX_TESTS_UNIT_UTIL_H
#include "common/common_pch.h"
#include <ebml/EbmlElement.h>
#include "gtest/gtest.h"
#include "common/strings/formatting.h"
#define ASSERT_EBML_EQ(a, b) ASSERT_PRED_FORMAT2(EbmlEquals, (a), (b))
#define EXPECT_EBML_EQ(a, b) EXPECT_PRED_FORMAT2(EbmlEquals, (a), (b))
namespace mtxut {
using namespace libebml;
void dump(EbmlElement *element, bool with_values = false, unsigned int level = 0);
::testing::AssertionResult EbmlEquals(char const *a_expr, char const *b_expr, EbmlElement &a, EbmlElement &b);
class ebml_equals_c {
private:
std::vector<std::string> m_path;
std::string m_error;
public:
ebml_equals_c();
bool compare_impl(EbmlElement &a, EbmlElement &b);
std::string get_error() const;
bool set_error(std::string const &error, EbmlElement *cmp = nullptr);
bool set_error(boost::format const &error, EbmlElement *cmp = nullptr);
public:
static bool check(EbmlElement &a, EbmlElement &b, std::string &error);
};
}
inline bool
operator ==(memory_c const &a,
std::string const &b) {
return (a.get_size() == b.length()) && !memcmp(a.get_buffer(), b.c_str(), b.length());
}
inline bool
operator ==(std::string const &a,
memory_c const &b) {
return b == a;
}
inline bool
operator ==(memory_cptr const &a,
std::string const &b) {
return *a == b;
}
inline bool
operator ==(std::string const &a,
memory_cptr const &b) {
return *b == a;
}
#endif // MTX_TESTS_UNIT_UTIL_H