You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.2 KiB

#include <iostream>
#include <cstring>
#include <cfrob.hpp>
// Can be stored as `const char` array with compile-time size for optimal use.
const auto str = "Hello world."_frob;
constexpr const char* str2 = "Hello world."_frob;
// Can also be stored as normal `const char*` string constant pointer.
const char* str3 = "Hello world."_frob;
void assert_streq(const char* str, const char* str2)
{
if (strcmp(str,str2)!=0)
{
std::cerr << "Mismatch: '" << str << "' is not eq to '" << str2 << "'" << std::endl;
std::terminate();
}
}
#define ASSERT_STREQ(ty, expr, get) do { ty _str = expr; assert_streq(_str get, str2); } while(0)
int main()
{
char* str2 = strdup(str);
memfrob(str2, strlen(str));
std::cout << str << std::endl;
std::cout << str2 << std::endl;
// test of frob::*frob()
{
ASSERT_STREQ(const auto, frob::strfrob(str), .c_str());
std::string frobbed = frob::strfrob((const char*)str2);
constexpr const auto out = frob::strfrob<>("Hello world."); //for some reason it doesn't prefer the `constexpr` template overload, even in a constexpr context?
auto out2 = frob::strfrob(out);
std::cout << frobbed << std::endl;
std::cout << out << std::endl;
std::cout << out2 << std::endl;
}
free(str2);
return 0;
}