summaryrefslogtreecommitdiff
path: root/asl/tests
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-11-07 23:38:52 +0100
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-12-20 15:35:58 +0100
commitac47be51b79f4c3e49656870e135453eefe759ea (patch)
tree80b2ce06d827ad218e3e76593fc23a71b1d6655c /asl/tests
parent261076b35fe684642da50d3b6208469cf972f269 (diff)
Some more work on asl::string_view
Diffstat (limited to 'asl/tests')
-rw-r--r--asl/tests/format_tests.cpp4
-rw-r--r--asl/tests/span_tests.cpp18
-rw-r--r--asl/tests/string_view_tests.cpp24
3 files changed, 35 insertions, 11 deletions
diff --git a/asl/tests/format_tests.cpp b/asl/tests/format_tests.cpp
index 81395c2..bfde454 100644
--- a/asl/tests/format_tests.cpp
+++ b/asl/tests/format_tests.cpp
@@ -12,11 +12,11 @@ static_assert(asl::formattable<decltype("Hello")>);
class StringSink : public asl::writer
{
- int64_t m_current_len{};
+ isize_t m_current_len{};
char* m_data{};
public:
- void write(const char* str, int64_t len) override
+ void write(const char* str, isize_t len) override
{
m_data = (char*)realloc(m_data, (size_t)(m_current_len + len + 1));
memcpy(m_data + m_current_len, str, (size_t)len);
diff --git a/asl/tests/span_tests.cpp b/asl/tests/span_tests.cpp
index aca0fb3..3baaf5c 100644
--- a/asl/tests/span_tests.cpp
+++ b/asl/tests/span_tests.cpp
@@ -94,14 +94,14 @@ ASL_TEST(conversion)
ASL_TEST_EXPECT(span4[2] == 3);
}
-template<typename Span, int64_t kOffset, int64_t kSize = asl::dynamic_size>
+template<typename Span, isize_t kOffset, isize_t kSize = asl::dynamic_size>
[[maybe_unused]] static auto try_static_subspan(int)
-> decltype(asl::declval<Span>().template subspan<kOffset, kSize>());
-template<typename, int64_t, int64_t>
+template<typename, isize_t, isize_t>
[[maybe_unused]] static auto try_static_subspan(...) -> asl::empty;
-template<typename Span, int64_t kOffset, int64_t kSize = asl::dynamic_size>
+template<typename Span, isize_t kOffset, isize_t kSize = asl::dynamic_size>
concept invalid_subspan = asl::same_as<decltype(try_static_subspan<Span, kOffset, kSize>(0)), asl::empty>;
static_assert(asl::same_as<asl::span<int, 4>,
@@ -216,14 +216,14 @@ ASL_TEST(subspan_dynamic)
ASL_TEST_EXPECT(s4[1] == 3);
}
-template<typename Span, int64_t kSize>
+template<typename Span, isize_t kSize>
[[maybe_unused]] static auto try_static_first(int)
-> decltype(asl::declval<Span>().template first<kSize>());
-template<typename, int64_t>
+template<typename, isize_t>
[[maybe_unused]] static auto try_static_first(...) -> asl::empty;
-template<typename Span, int64_t kSize>
+template<typename Span, isize_t kSize>
concept invalid_first = asl::same_as<decltype(try_static_first<Span, kSize>(0)), asl::empty>;
static_assert(asl::same_as<asl::span<int, 0>,
@@ -320,14 +320,14 @@ ASL_TEST(first_dynamic)
ASL_TEST_EXPECT(s3[3] == 4);
}
-template<typename Span, int64_t kSize>
+template<typename Span, isize_t kSize>
[[maybe_unused]] static auto try_static_last(int)
-> decltype(asl::declval<Span>().template last<kSize>());
-template<typename, int64_t>
+template<typename, isize_t>
[[maybe_unused]] static auto try_static_last(...) -> asl::empty;
-template<typename Span, int64_t kSize>
+template<typename Span, isize_t kSize>
concept invalid_last = asl::same_as<decltype(try_static_last<Span, kSize>(0)), asl::empty>;
static_assert(asl::same_as<asl::span<int, 0>,
diff --git a/asl/tests/string_view_tests.cpp b/asl/tests/string_view_tests.cpp
index f3cc752..dafb91c 100644
--- a/asl/tests/string_view_tests.cpp
+++ b/asl/tests/string_view_tests.cpp
@@ -1,3 +1,27 @@
#include "asl/string_view.hpp"
#include "asl/testing/testing.hpp"
+// @Todo Don't use stdlib, remake memcmp
+#include <string.h>
+
+static_assert(asl::trivially_destructible<asl::string_view>);
+static_assert(asl::trivially_copyable<asl::string_view>);
+
+ASL_TEST(default)
+{
+ asl::string_view s1;
+ ASL_TEST_EXPECT(s1.is_empty());
+
+ asl::string_view s2 = nullptr;
+ ASL_TEST_EXPECT(s2.is_empty());
+}
+
+ASL_TEST(from_literal)
+{
+ asl::string_view s1 = "Hello"_sv;
+ ASL_TEST_ASSERT(s1.size() == 5);
+ ASL_TEST_EXPECT(memcmp(s1.data(), "Hello", 5) == 0);
+
+ asl::string_view s2 = ""_sv;
+ ASL_TEST_EXPECT(s2.is_empty());
+}