// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include <array> #include <map> #include <utility> #include <vector> #include <iostream> namespace VideoStitch { namespace Testing { template <typename KeyType, typename ValueType> std::ostream &operator<<(std::ostream &stream, const std::map<KeyType, ValueType> &map) { for (auto &kv : map) { stream << kv.first << " --> " << kv.second << std::endl; } return stream; } template <typename FirstType, typename SecondType> std::ostream &operator<<(std::ostream &stream, const std::pair<FirstType, SecondType> &pair) { stream << "(" << pair.first << ", " << pair.second << ")" << std::endl; return stream; } template <class ClassType, size_t size> std::ostream &operator<<(std::ostream &stream, const std::array<ClassType, size> &array) { stream << "("; for (const auto &v : array) { stream << v << ","; } stream << ")" << std::endl; return stream; } template <class ClassType> std::ostream &operator<<(std::ostream &stream, const std::vector<ClassType> &vector) { stream << "("; for (const auto &v : vector) { stream << v << ","; } stream << ")" << std::endl; return stream; } } // namespace Testing } // namespace VideoStitch