| // Copyright 2018 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "sql/statement_id.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| namespace sql { | |
| namespace { | |
| class SqlStatementIdTest : public testing::Test { | |
| protected: | |
| // This test takes advantage of the fact that statement IDs are logically | |
| // (file, line) tuples, and are compared lexicographically. | |
| SqlStatementIdTest() | |
| : id1_(SQL_FROM_HERE), // file statement_id_unittest.cc, line L | |
| id2_(SQL_FROM_HERE), // file statement_id_unittest.cc, line L+1 | |
| id3_(SQL_FROM_HERE) { // file statement_id_unittest.cc, line L+2 | |
| } | |
| StatementID id1_; | |
| StatementID id2_; | |
| StatementID id3_; | |
| }; | |
| TEST_F(SqlStatementIdTest, LessThan) { | |
| EXPECT_FALSE(id1_ < id1_); | |
| EXPECT_FALSE(id2_ < id2_); | |
| EXPECT_FALSE(id3_ < id3_); | |
| EXPECT_LT(id1_, id2_); | |
| EXPECT_LT(id1_, id3_); | |
| EXPECT_LT(id2_, id3_); | |
| EXPECT_FALSE(id2_ < id1_); | |
| EXPECT_FALSE(id3_ < id1_); | |
| EXPECT_FALSE(id3_ < id2_); | |
| } | |
| TEST_F(SqlStatementIdTest, CopyConstructor) { | |
| StatementID id2_copy = id2_; | |
| EXPECT_FALSE(id2_copy < id2_); | |
| EXPECT_FALSE(id2_ < id2_copy); | |
| EXPECT_LT(id1_, id2_copy); | |
| EXPECT_LT(id2_copy, id3_); | |
| } | |
| TEST_F(SqlStatementIdTest, CopyAssignment) { | |
| StatementID id2_copy(SQL_FROM_HERE); | |
| // The new ID should be different from ID2. | |
| EXPECT_TRUE(id2_copy < id2_ || id2_ < id2_copy); | |
| id2_copy = id2_; | |
| EXPECT_FALSE(id2_copy < id2_); | |
| EXPECT_FALSE(id2_ < id2_copy); | |
| EXPECT_LT(id1_, id2_copy); | |
| EXPECT_LT(id2_copy, id3_); | |
| } | |
| } // namespace | |
| } // namespace sql |