add logger and some tests
This commit is contained in:
parent
67eab0a97f
commit
4fc81c4c04
19
bin/main.cpp
19
bin/main.cpp
@ -1,7 +1,7 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <forward_list>
|
#include <forward_list>
|
||||||
#include <iostream>
|
|
||||||
|
#include "hack/logger/logger.hpp"
|
||||||
|
|
||||||
#include "hack/mt/algorithms/sort.hpp"
|
#include "hack/mt/algorithms/sort.hpp"
|
||||||
#include "hack/mt/algorithms/max.hpp"
|
#include "hack/mt/algorithms/max.hpp"
|
||||||
@ -14,7 +14,7 @@ auto main(int argc, char *argv[]) -> int
|
|||||||
{
|
{
|
||||||
hack::patterns::ring_buffer<int, 10> rb;
|
hack::patterns::ring_buffer<int, 10> rb;
|
||||||
for (int i = 1; i < 12; ++i) rb.put(i);
|
for (int i = 1; i < 12; ++i) rb.put(i);
|
||||||
while(!rb.empty()) std::cout << rb.get().value() << std::endl;
|
hack::log()(rb);
|
||||||
}
|
}
|
||||||
|
|
||||||
// mt::sort
|
// mt::sort
|
||||||
@ -25,20 +25,15 @@ auto main(int argc, char *argv[]) -> int
|
|||||||
hack::mt::algorithms::sort(v);
|
hack::mt::algorithms::sort(v);
|
||||||
hack::mt::algorithms::sort(l);
|
hack::mt::algorithms::sort(l);
|
||||||
|
|
||||||
for (auto d : v)
|
hack::log()(v);
|
||||||
std::cout << d << " ";
|
hack::log()(l);
|
||||||
std::cout << std::endl;
|
|
||||||
|
|
||||||
for (auto d : l)
|
|
||||||
std::cout << d << " ";
|
|
||||||
std::cout << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// mt::max
|
// mt::max
|
||||||
{
|
{
|
||||||
int a = 4, b = 5;
|
int a = 4, b = 5;
|
||||||
int& c = a;
|
int& c = a;
|
||||||
std::cout << hack::mt::algorithms::max(4, 5) << std::endl;
|
hack::log()(hack::mt::algorithms::max(4, 5));
|
||||||
std::cout << hack::mt::algorithms::max(c, b) << std::endl;
|
hack::log()(hack::mt::algorithms::max(c, b));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
#include "hack/iterators/sequence_ostream_iterator.hpp"
|
#include "hack/iterators/sequence_ostream_iterator.hpp"
|
||||||
#include "hack/iterators/associative_ostream_iterator.hpp"
|
#include "hack/iterators/associative_ostream_iterator.hpp"
|
||||||
|
|
||||||
|
#include "hack/patterns/ring_buffer.hpp"
|
||||||
|
|
||||||
namespace hack
|
namespace hack
|
||||||
{
|
{
|
||||||
class log
|
class log
|
||||||
@ -133,6 +135,12 @@ namespace hack
|
|||||||
std::cout << data << (count != 0 ? devider : "");
|
std::cout << data << (count != 0 ? devider : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T, std::size_t size>
|
||||||
|
static void print_t(const hack::patterns::ring_buffer<T, size>& rb)
|
||||||
|
{
|
||||||
|
print_t(rb.get_src());
|
||||||
|
}
|
||||||
|
|
||||||
friend class warn;
|
friend class warn;
|
||||||
friend class error;
|
friend class error;
|
||||||
};
|
};
|
@ -1,3 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
@ -56,13 +58,18 @@ namespace hack::patterns
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool empty() noexcept
|
std::array<T, BUFFER_SIZE>& get_src() const noexcept
|
||||||
|
{
|
||||||
|
return m_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool empty() const noexcept
|
||||||
{
|
{
|
||||||
MUTEX lock(m_mutex);
|
MUTEX lock(m_mutex);
|
||||||
return (!m_full && (m_head == m_tail));
|
return (!m_full && (m_head == m_tail));
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t size() noexcept
|
std::size_t size() const noexcept
|
||||||
{
|
{
|
||||||
MUTEX lock(m_mutex);
|
MUTEX lock(m_mutex);
|
||||||
|
|
||||||
@ -106,8 +113,7 @@ namespace hack::patterns
|
|||||||
std::size_t m_tail{ 0 };
|
std::size_t m_tail{ 0 };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::recursive_mutex m_mutex;
|
mutable std::recursive_mutex m_mutex;
|
||||||
std::array<T, BUFFER_SIZE> m_data;
|
mutable std::array<T, BUFFER_SIZE> m_data;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ headers = [
|
|||||||
'hack/iterators/associative_ostream_iterator.hpp',
|
'hack/iterators/associative_ostream_iterator.hpp',
|
||||||
'hack/iterators/sequence_ostream_iterator.hpp',
|
'hack/iterators/sequence_ostream_iterator.hpp',
|
||||||
|
|
||||||
'hack/log/log.hpp',
|
'hack/logger/logger.hpp',
|
||||||
|
|
||||||
'hack/mt/algorithms/max.hpp',
|
'hack/mt/algorithms/max.hpp',
|
||||||
'hack/mt/algorithms/sort.hpp',
|
'hack/mt/algorithms/sort.hpp',
|
||||||
|
@ -2,5 +2,5 @@ catch2_with_main_dep = dependency('catch2-with-main')
|
|||||||
dep = [hack_dep, catch2_with_main_dep]
|
dep = [hack_dep, catch2_with_main_dep]
|
||||||
|
|
||||||
test('patterns', executable('patterns', ['patterns/ring_buffer.cpp'], dependencies : dep))
|
test('patterns', executable('patterns', ['patterns/ring_buffer.cpp'], dependencies : dep))
|
||||||
test('mt', executable('mt', ['mt/max.cpp'], dependencies : dep))
|
test('mt', executable('mt', ['mt/mt.cpp'], dependencies : dep))
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
#include "catch2/catch_test_macros.hpp"
|
|
||||||
#include "hack/mt/algorithms/max.hpp"
|
|
||||||
|
|
||||||
TEST_CASE("mt")
|
|
||||||
{
|
|
||||||
SECTION("max buffer")
|
|
||||||
{
|
|
||||||
int a = 4, b = 5;
|
|
||||||
int& c = a;
|
|
||||||
REQUIRE(hack::mt::algorithms::max(4, 5) == 5);
|
|
||||||
REQUIRE(hack::mt::algorithms::max(c, b) == 5);
|
|
||||||
}
|
|
||||||
}
|
|
31
tests/mt/mt.cpp
Normal file
31
tests/mt/mt.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "catch2/catch_test_macros.hpp"
|
||||||
|
|
||||||
|
#include <forward_list>
|
||||||
|
|
||||||
|
#include "hack/mt/algorithms/max.hpp"
|
||||||
|
#include "hack/mt/algorithms/sort.hpp"
|
||||||
|
|
||||||
|
TEST_CASE("mt")
|
||||||
|
{
|
||||||
|
SECTION("max")
|
||||||
|
{
|
||||||
|
int a = 4, b = 5;
|
||||||
|
int& c = a;
|
||||||
|
REQUIRE(hack::mt::algorithms::max(4, 5) == 5);
|
||||||
|
REQUIRE(hack::mt::algorithms::max(c, b) == 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("sort")
|
||||||
|
{
|
||||||
|
std::vector<int> v { 4, 4, 6, 1, 4, 3, 2 };
|
||||||
|
std::vector<int> vs { 1, 2, 3, 4, 4, 4, 6 };
|
||||||
|
|
||||||
|
std::forward_list<int> l { 8, 7, 5, 9, 0, 1, 3, 2, 6, 4 };
|
||||||
|
std::forward_list<int> ls { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||||
|
|
||||||
|
hack::mt::algorithms::sort(v);
|
||||||
|
hack::mt::algorithms::sort(l);
|
||||||
|
REQUIRE(v == vs);
|
||||||
|
REQUIRE(l == ls);
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
#include "catch2/catch_test_macros.hpp"
|
#include "catch2/catch_test_macros.hpp"
|
||||||
|
|
||||||
#include "hack/patterns/ring_buffer.hpp"
|
#include "hack/patterns/ring_buffer.hpp"
|
||||||
|
|
||||||
TEST_CASE("patterns")
|
TEST_CASE("patterns")
|
||||||
|
Loading…
Reference in New Issue
Block a user