// 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