summaryrefslogtreecommitdiff
path: root/test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test.cc')
-rw-r--r--test.cc112
1 files changed, 69 insertions, 43 deletions
diff --git a/test.cc b/test.cc
index 47940ef..d821382 100644
--- a/test.cc
+++ b/test.cc
@@ -1,14 +1,18 @@
#include <climits>
+#include <cstdint>
#include <cstdlib>
#include <exception>
#include <iostream>
#include <limits>
-#include <source_location>
#include <typeinfo>
#include <zp/mem>
#include <zp/mth>
#include <zp/str>
+#if !zp_std_cxx11
+#error At least C++11 is required for this test!
+#endif
+
static_assert(::zp::isptr<int>::val == false);
static_assert(::zp::isptr<int *>::val == true);
static_assert(::zp::isptr<int const *>::val == true);
@@ -30,20 +34,38 @@ static_assert(::zp::isptr<int const volatile * const volatile>::val == true);
static_assert(::zp::typequ<int,int>::val == true);
static_assert(::zp::typequ<int,long>::val == false);
-static_assert(::zp::typequ<::zp::sgn<int>::typ, int>::val == true);
-static_assert(::zp::typequ<::zp::sgn<int unsigned>::typ,int>::val == true);
-
-static_assert(::zp::typequ<::zp::usgn<int unsigned>::typ,int unsigned>::val == true);
-static_assert(::zp::typequ<::zp::usgn<int>::typ, int unsigned>::val == true);
+static_assert(::zp::typequ<::zp::remref<int>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::remref<int &>::typ,int>::val == true);
-static_assert(::zp::typequ<::zp::remqual<int volatile>::typ, int>::val == true);
-static_assert(::zp::typequ<::zp::remqual<int const volatile>::typ,int>::val == true);
+static_assert(::zp::typequ<::zp::remptr<int>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::remptr<int *>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::remptr<int * const>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::remptr<int * volatile>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::remptr<int * const volatile>::typ,int>::val == true);
static_assert(::zp::typequ<::zp::remqual<int>::typ, int>::val == true);
static_assert(::zp::typequ<::zp::remqual<int const>::typ, int>::val == true);
static_assert(::zp::typequ<::zp::remqual<int volatile>::typ, int>::val == true);
static_assert(::zp::typequ<::zp::remqual<int const volatile>::typ,int>::val == true);
-
+
+static_assert(::zp::typequ<::zp::sgn<int>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int const>::typ, int const>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int volatile>::typ, int volatile>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int const volatile>::typ, int const volatile>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int unsigned>::typ, int>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int unsigned const>::typ, int const>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int unsigned volatile>::typ, int volatile>::val == true);
+static_assert(::zp::typequ<::zp::sgn<int unsigned const volatile>::typ,int const volatile>::val == true);
+
+static_assert(::zp::typequ<::zp::usgn<int unsigned>::typ, int unsigned>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int unsigned const>::typ, int unsigned const>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int unsigned volatile>::typ, int unsigned volatile>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int unsigned const volatile>::typ,int unsigned const volatile>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int>::typ, int unsigned>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int const>::typ, int unsigned const>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int volatile>::typ, int unsigned volatile>::val == true);
+static_assert(::zp::typequ<::zp::usgn<int const volatile>::typ, int unsigned const volatile>::val == true);
+
static_assert(::zp::typequ<::zp::nulptrtyp,::std::nullptr_t>::val == true);
static_assert(::zp::typequ<::zp::i8m, ::std::uint_least8_t>::val == true);
@@ -61,12 +83,12 @@ static_assert(::zp::typequ<::zp::sz, ::std::size_t>::val == true);
static_assert(::zp::isusgn<char>::val == ::std::is_unsigned<char>::value);
static_assert(::zp::isusgn<char16_t>::val == ::std::is_unsigned<char16_t>::value);
static_assert(::zp::isusgn<char32_t>::val == ::std::is_unsigned<char32_t>::value);
-static_assert(::zp::isusgn<char8_t>::val == ::std::is_unsigned<char8_t>::value);
+static_assert(::zp::isusgn<::zp::c8>::val == ::std::is_unsigned<::zp::c8>::value);
static_assert(::zp::isusgn<double>::val == ::std::is_unsigned<double>::value);
static_assert(::zp::isusgn<float>::val == ::std::is_unsigned<float>::value);
static_assert(::zp::isusgn<int>::val == ::std::is_unsigned<int>::value);
static_assert(::zp::isusgn<long>::val == ::std::is_unsigned<long>::value);
-static_assert(::zp::isusgn<long double>::val == ::std::is_unsigned<long double>::value);
+static_assert(::zp::isusgn<double long>::val == ::std::is_unsigned<double long>::value);
static_assert(::zp::isusgn<long long>::val == ::std::is_unsigned<long long>::value);
static_assert(::zp::isusgn<short>::val == ::std::is_unsigned<short>::value);
static_assert(::zp::isusgn<char signed>::val == ::std::is_unsigned<char signed>::value);
@@ -82,7 +104,7 @@ static_assert(::zp::issgn<double>::val == ::std::is_signed<double>::
static_assert(::zp::issgn<float>::val == ::std::is_signed<float>::value);
static_assert(::zp::issgn<int>::val == ::std::is_signed<int>::value);
static_assert(::zp::issgn<long>::val == ::std::is_signed<long>::value);
-static_assert(::zp::issgn<long double>::val == ::std::is_signed<long double>::value);
+static_assert(::zp::issgn<double long>::val == ::std::is_signed<double long>::value);
static_assert(::zp::issgn<long long>::val == ::std::is_signed<long long>::value);
static_assert(::zp::issgn<short>::val == ::std::is_signed<short>::value);
static_assert(::zp::issgn<char signed>::val == ::std::is_signed<char signed>::value);
@@ -99,12 +121,12 @@ static_assert(::zp::minval<bool>::val == ::std::numeric_limits<boo
static_assert(::zp::minval<char>::val == ::std::numeric_limits<char>::lowest());
static_assert(::zp::minval<char16_t>::val == ::std::numeric_limits<char16_t>::lowest());
static_assert(::zp::minval<char32_t>::val == ::std::numeric_limits<char32_t>::lowest());
-static_assert(::zp::minval<char8_t>::val == ::std::numeric_limits<char8_t>::lowest());
+static_assert(::zp::minval<::zp::c8>::val == ::std::numeric_limits<::zp::c8>::lowest());
static_assert(::zp::minval<double>::val == ::std::numeric_limits<double>::lowest());
static_assert(::zp::minval<float>::val == ::std::numeric_limits<float>::lowest());
static_assert(::zp::minval<int>::val == ::std::numeric_limits<int>::lowest());
static_assert(::zp::minval<long>::val == ::std::numeric_limits<long>::lowest());
-static_assert(::zp::minval<long double>::val == ::std::numeric_limits<long double>::lowest());
+static_assert(::zp::minval<double long>::val == ::std::numeric_limits<double long>::lowest());
static_assert(::zp::minval<long long>::val == ::std::numeric_limits<long long>::lowest());
static_assert(::zp::minval<short>::val == ::std::numeric_limits<short>::lowest());
static_assert(::zp::minval<char signed>::val == ::std::numeric_limits<char signed>::lowest());
@@ -119,12 +141,12 @@ static_assert(::zp::maxval<bool>::val == ::std::numeric_limits<boo
static_assert(::zp::maxval<char>::val == ::std::numeric_limits<char>::max());
static_assert(::zp::maxval<char16_t>::val == ::std::numeric_limits<char16_t>::max());
static_assert(::zp::maxval<char32_t>::val == ::std::numeric_limits<char32_t>::max());
-static_assert(::zp::maxval<char8_t>::val == ::std::numeric_limits<char8_t>::max());
+static_assert(::zp::maxval<::zp::c8>::val == ::std::numeric_limits<::zp::c8>::max());
static_assert(::zp::maxval<double>::val == ::std::numeric_limits<double>::max());
static_assert(::zp::maxval<float>::val == ::std::numeric_limits<float>::max());
static_assert(::zp::maxval<int>::val == ::std::numeric_limits<int>::max());
static_assert(::zp::maxval<long>::val == ::std::numeric_limits<long>::max());
-static_assert(::zp::maxval<long double>::val == ::std::numeric_limits<long double>::max());
+static_assert(::zp::maxval<double long>::val == ::std::numeric_limits<double long>::max());
static_assert(::zp::maxval<long long>::val == ::std::numeric_limits<long long>::max());
static_assert(::zp::maxval<short>::val == ::std::numeric_limits<short>::max());
static_assert(::zp::maxval<char signed>::val == ::std::numeric_limits<char signed>::max());
@@ -135,40 +157,44 @@ static_assert(::zp::maxval<long unsigned>::val == ::std::numeric_limits<lon
static_assert(::zp::maxval<long long unsigned>::val == ::std::numeric_limits<long long unsigned>::max());
static_assert(::zp::maxval<wchar_t>::val == ::std::numeric_limits<wchar_t>::max());
-int main() {
- int unsigned num;
- int unsigned numerr = 0x0u;
+template<typename ltyp,typename rtyp> static auto cmp(int unsigned & num,int unsigned & numerr,long const ln,ltyp const & lvalref,rtyp const & rvalref) noexcept {
+ char const * const ltypnm = typeid (ltyp).name();
+ char const * const rtypnm = typeid (rtyp).name();
- auto const tst = [&num](char const * const cmp) noexcept {
- ::std::cout <<"\n\x1B[38;5;75mtesting\x1B[0m " <<cmp <<"\n\n";
+ auto const getval = [](auto const & valref) {
+ using typ = typename ::zp::remref<decltype (valref)>::typ;
- num = 0x0;
+ if constexpr (::zp::ischr<typ>::val) {return static_cast<::zp::i02m>(valref);}
+ else if constexpr (::zp::isptr<typ>::val) {return reinterpret_cast<void *>(valref);}
+ else {return valref;}
};
- auto const cmp = [&num,&numerr]<typename ltyp,typename rtyp>(ltyp const & lvalref,rtyp const & rvalref,::std::source_location const srcloc = ::std::source_location::current()) {
- char const * const ltypnm = typeid (ltyp).name();
- char const * const rtypnm = typeid (rtyp).name();
+ auto const lval = getval(lvalref);
+ auto const rval = getval(rvalref);
- auto const getval = []<typename typ>(typ const & valref) {
- if constexpr (::zp::ischr<typ>::val) {return static_cast<::zp::i02m>(valref);}
- else if constexpr (::zp::isptr<typ>::val) {return reinterpret_cast<void *>(valref);}
- else {return valref;}
- };
+ ::std::cout << " " << num++ << ". comparing " << ltypnm << " (" << lval << ") vs. " << rtypnm << " (" << rval << ")... ";
- auto const lval = getval(lvalref);
- auto const rval = getval(rvalref);
+ if (lval != rval) {
+ ::std::cout << "\x1B[38;5;161munequal\x1B[0m (at #" << ln << ")\n";
+ //throw ::std::exception {};
+ ++numerr;
- ::std::cout <<" " <<num++ <<". comparing " <<ltypnm <<" (" <<lval <<") vs. " <<rtypnm <<" (" <<rval <<")... ";
+ return;
+ }
- if (lval != rval) {
- ::std::cout <<"\x1B[38;5;161munequal\x1B[0m (at #" <<srcloc.line() <<")\n";
- //throw ::std::exception {};
- ++numerr;
-
- return;
- }
+ ::std::cout <<"\x1B[38;5;77mequal\x1B[0m\n";
+}
+
+#define cmp(lval,rval) (::cmp(num,numerr,__LINE__,(lval),(rval)))
+
+int main() {
+ int unsigned num;
+ int unsigned numerr = 0x0u;
+
+ auto const tst = [&num](char const * const cmp) noexcept {
+ ::std::cout <<"\n\x1B[38;5;75mtesting\x1B[0m " <<cmp <<"\n\n";
- ::std::cout <<"\x1B[38;5;77mequal\x1B[0m\n";
+ num = 0x0;
};
::std::cout <<"zp " <<::zp::ver <<"." <<::zp::extver <<", run-time test\n";
@@ -226,7 +252,7 @@ int main() {
cmp(zp_isnanf( zp_nanf), true);
cmp(zp_isnand( zp_nand), true);
- cmp(zp_isnanld(zp_nanld),true);
+ cmp(zp_isnandl(zp_nanld),true);
}();*/
[&] {
@@ -285,7 +311,7 @@ int main() {
::zp::sz const buf8len = ::zp_utf8enclen(src);
cmp(buf8len,0x4u);
- char8_t * buf8 = new char8_t[buf8len+0x1];
+ ::zp::c8 * buf8 = new ::zp::c8[buf8len+0x1];
::zp_utf8enc(buf8,src);