From 50d94e7d513f68d25cd5e72de880bb6f78de50e7 Mon Sep 17 00:00:00 2001 From: ljfa-ag Date: Tue, 23 Jun 2015 21:33:17 +0200 Subject: Add methods and tests to tag_primitive --- include/tag_primitive.h | 21 +++++++++++++++++++++ test/nbttest.cpp | 17 +++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/tag_primitive.h b/include/tag_primitive.h index 3b8ac51237..397ea64da3 100644 --- a/include/tag_primitive.h +++ b/include/tag_primitive.h @@ -45,8 +45,11 @@ public: tag_primitive(T value = 0); tag_primitive& operator=(T value); + void set(T value); + operator T&(); operator T() const; + T get() const; tag_type get_type() const noexcept override; @@ -74,12 +77,30 @@ tag_primitive& tag_primitive::operator=(T val) return *this; } +template +void tag_primitive::set(T val) +{ + value = val; +} + +template +tag_primitive::operator T&() +{ + return value; +} + template tag_primitive::operator T() const { return value; } +template +T tag_primitive::get() const +{ + return value; +} + template tag_type tag_primitive::get_type() const noexcept { diff --git a/test/nbttest.cpp b/test/nbttest.cpp index 93a31c0375..482e28ab64 100644 --- a/test/nbttest.cpp +++ b/test/nbttest.cpp @@ -33,7 +33,24 @@ void test_get_type() ASSERT(tag_double().get_type() == tag_type::Double); } +void test_tag_primitive() +{ + tag_int tag(6); + ASSERT(tag.get() == 6); + int& ref = tag; + ref = 12; + ASSERT(tag == 12); + ASSERT(tag != 6); + tag.set(24); + ASSERT(ref == 24); + tag = 7; + ASSERT(7 == static_cast(tag)); + + ASSERT(tag_double() == 0.0); +} + int main() { test_get_type(); + test_tag_primitive(); } -- cgit 0.0.5-2-1-g0f52