Something went wrong. Try again.
discord chat exporter
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596#include <gtest/gtest.h>
#include <fmt/format.h>
#include <dce-core/discord/snowflake.hpp>
using namespace dce::discord;
TEST(Snowflake, DoesntDefaultConstruct){ auto const x = std::is_default_constructible_v<Snowflake>; ASSERT_FALSE(x);}
TEST(Snowflake, DoesntParseFromEmptyInput){ auto s = Snowflake::parse("");
ASSERT_FALSE(s.has_value());
ASSERT_TRUE(s.error().generic_parse_error().source.empty()); ASSERT_EQ(s.error().generic_parse_error().offset, 0); ASSERT_TRUE(s.error().is<SPE_InvalidValue>());}
TEST(Snowflake, DoesntParseFromInvalidInput){ { static auto const source = "asd123"; auto s = Snowflake::parse(source);
ASSERT_FALSE(s.has_value());
ASSERT_EQ(s.error().generic_parse_error().source, source); ASSERT_EQ(s.error().generic_parse_error().offset, 0); ASSERT_TRUE(s.error().is<SPE_InvalidValue>()); } { static auto const source = "123asd"; auto s = Snowflake::parse(source);
ASSERT_FALSE(s.has_value());
ASSERT_EQ(s.error().generic_parse_error().source, source); ASSERT_EQ(s.error().generic_parse_error().offset, 2); ASSERT_TRUE(s.error().is<SPE_InvalidValue>()); }}
TEST(Snowflake, ParsesProperU64){ { static auto const source = "327036485033365851"; auto s = Snowflake::parse(source); ASSERT_TRUE(s.has_value()) << s.error(); } { static auto const source = "912554373094252554"; auto s = Snowflake::parse(source); ASSERT_TRUE(s.has_value()) << s.error(); }}
TEST(Snowflake, StringifiesProperly){ static auto const source = "327036485033365851"; auto s = Snowflake::parse(source); ASSERT_TRUE(s.has_value()) << s.error(); ASSERT_EQ(s->string(), source); ASSERT_EQ(fmt::format("{}", *s), source);}
TEST(Snowflake, DoesntParseTooShortValues){ { static auto const source = std::string_view("32703648503336585"); auto s = Snowflake::parse(source); ASSERT_FALSE(s.has_value());
ASSERT_EQ(s.error().generic_parse_error().offset, source.size() - 1); ASSERT_TRUE(s.error().is<SPE_InvalidRange>()); ASSERT_TRUE(s.error().as<SPE_InvalidRange>()->reason == SPE_InvalidRange::Reason::TooSmall); }}
TEST(Snowflake, DoesntParseTooLongValues){ { static auto const source = std::string_view("32703648503336585123"); auto s = Snowflake::parse(source); ASSERT_FALSE(s.has_value()); ASSERT_EQ(s.error().generic_parse_error().offset, source.size() - 1); ASSERT_TRUE(s.error().as<SPE_InvalidRange>()->reason == SPE_InvalidRange::Reason::TooBig); }}