diff options
Diffstat (limited to 'test/nbttest.h')
| -rw-r--r-- | test/nbttest.h | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/test/nbttest.h b/test/nbttest.h index 0ebce0c306..e3e16c548f 100644 --- a/test/nbttest.h +++ b/test/nbttest.h @@ -37,8 +37,8 @@ public: TS_ASSERT(is_valid_type(1)); TS_ASSERT(is_valid_type(5, false)); TS_ASSERT(is_valid_type(7, true)); - TS_ASSERT(is_valid_type(11)); - TS_ASSERT(!is_valid_type(12)); + TS_ASSERT(is_valid_type(12)); + TS_ASSERT(!is_valid_type(13)); //looks like TS_ASSERT_EQUALS can't handle abstract classes... TS_ASSERT(*tag::create(tag_type::Byte) == tag_byte()); @@ -78,6 +78,7 @@ public: TS_ASSERT_EQUALS(tag_list().get_type() , tag_type::List); TS_ASSERT_EQUALS(tag_compound().get_type() , tag_type::Compound); TS_ASSERT_EQUALS(tag_int_array().get_type() , tag_type::Int_Array); + TS_ASSERT_EQUALS(tag_long_array().get_type(), tag_type::Long_Array); } void test_tag_primitive() @@ -396,6 +397,7 @@ public: TS_ASSERT_EQUALS(arr.size(), 3u); TS_ASSERT((arr == tag_byte_array{1, 2, 127})); TS_ASSERT((arr != tag_int_array{1, 2, 127})); + TS_ASSERT((arr != tag_long_array{1, 2, 127})); TS_ASSERT((arr != tag_byte_array{1, 2, -1})); arr.clear(); @@ -431,6 +433,35 @@ public: TS_ASSERT(arr == tag_int_array()); } + void test_tag_long_array() + { + std::vector<int64_t> vec{100, 200, INT64_MAX, INT64_MIN}; + tag_long_array arr{100, 200, INT64_MAX, INT64_MIN}; + TS_ASSERT_EQUALS(arr.size(), 4u); + TS_ASSERT(arr.at(0) == 100 && arr[1] == 200 && arr[2] == INT64_MAX && arr.at(3) == INT64_MIN); + TS_ASSERT_THROWS(arr.at(-1), std::out_of_range); + TS_ASSERT_THROWS(arr.at(4), std::out_of_range); + + TS_ASSERT(arr.get() == vec); + TS_ASSERT(arr == tag_long_array(std::vector<int64_t>(vec))); + + arr.push_back(42); + vec.push_back(42); + + TS_ASSERT_EQUALS(arr.size(), 5u); + TS_ASSERT_EQUALS(arr.end() - arr.begin(), int(arr.size())); + TS_ASSERT(std::equal(arr.begin(), arr.end(), vec.begin())); + + arr.pop_back(); + arr.pop_back(); + TS_ASSERT_EQUALS(arr.size(), 3u); + TS_ASSERT((arr == tag_long_array{100, 200, INT64_MAX})); + TS_ASSERT((arr != tag_long_array{100, -56, -1})); + + arr.clear(); + TS_ASSERT(arr == tag_long_array()); + } + void test_visitor() { struct : public nbt_visitor @@ -448,6 +479,7 @@ public: void visit(tag_list& tag) { visited = &tag; } void visit(tag_compound& tag) { visited = &tag; } void visit(tag_int_array& tag) { visited = &tag; } + void visit(tag_long_array& tag) { visited = &tag; } } v; tag_byte b; b.accept(v); TS_ASSERT_EQUALS(v.visited, &b); @@ -461,5 +493,6 @@ public: tag_list ls; ls.accept(v); TS_ASSERT_EQUALS(v.visited, &ls); tag_compound c; c.accept(v); TS_ASSERT_EQUALS(v.visited, &c); tag_int_array ia; ia.accept(v); TS_ASSERT_EQUALS(v.visited, &ia); + tag_long_array la; la.accept(v); TS_ASSERT_EQUALS(v.visited, &la); } }; |
