| // Copyright (c) 2018 The LevelDB Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. See the AUTHORS file for names of contributors. |
| |
| #include <utility> |
| |
| #include "leveldb/slice.h" |
| #include "leveldb/status.h" |
| #include "util/testharness.h" |
| |
| namespace leveldb { |
| |
| TEST(Status, MoveConstructor) { |
| { |
| Status ok = Status::OK(); |
| Status ok2 = std::move(ok); |
| |
| ASSERT_TRUE(ok2.ok()); |
| } |
| |
| { |
| Status status = Status::NotFound("custom NotFound status message"); |
| Status status2 = std::move(status); |
| |
| ASSERT_TRUE(status2.IsNotFound()); |
| ASSERT_EQ("NotFound: custom NotFound status message", status2.ToString()); |
| } |
| |
| { |
| Status self_moved = Status::IOError("custom IOError status message"); |
| |
| // Needed to bypass compiler warning about explicit move-assignment. |
| Status& self_moved_reference = self_moved; |
| self_moved_reference = std::move(self_moved); |
| } |
| } |
| |
| } // namespace leveldb |
| |
| int main(int argc, char** argv) { return leveldb::test::RunAllTests(); } |