1// Copyright (c) 2018 The LevelDB Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file. See the AUTHORS file for names of contributors.
4
5#include "leveldb/status.h"
6
7#include <utility>
8
9#include "gtest/gtest.h"
10#include "leveldb/slice.h"
11
12namespace leveldb {
13
14TEST(Status, MoveConstructor) {
15 {
16 Status ok = Status::OK();
17 Status ok2 = std::move(ok);
18
19 ASSERT_TRUE(ok2.ok());
20 }
21
22 {
23 Status status = Status::NotFound("custom NotFound status message");
24 Status status2 = std::move(status);
25
26 ASSERT_TRUE(status2.IsNotFound());
27 ASSERT_EQ("NotFound: custom NotFound status message", status2.ToString());
28 }
29
30 {
31 Status self_moved = Status::IOError("custom IOError status message");
32
33 // Needed to bypass compiler warning about explicit move-assignment.
34 Status& self_moved_reference = self_moved;
35 self_moved_reference = std::move(self_moved);
36 }
37}
38
39} // namespace leveldb
40