MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mock_field_timestampf.h
1 /* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
2 
3  This program is free software; you can redistribute it and/or modify
4  it under the terms of the GNU General Public License as published by
5  the Free Software Foundation; version 2 of the License.
6 
7  This program is distributed in the hope that it will be useful,
8  but WITHOUT ANY WARRANTY; without even the implied warranty of
9  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  GNU General Public License for more details.
11 
12  You should have received a copy of the GNU General Public License
13  along with this program; if not, write to the Free Software
14  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
15 
16 #ifndef MOCK_FIELD_TIMESTAMPF_H
17 #define MOCK_FIELD_TIMESTAMPF_H
18 
19 #include "fake_table.h"
20 #include "field.h"
21 
23 {
24  uchar null_byte;
25  void initialize()
26  {
27  table = new Fake_TABLE(this);
28  EXPECT_FALSE(table == NULL) << "Out of memory";
29  ptr= buffer;
30  memset(buffer, 0, PACK_LENGTH);
31  null_ptr= &null_byte;
32  }
33 
34 public:
35  uchar buffer[PACK_LENGTH];
36  bool store_timestamp_internal_called;
37  Mock_field_timestampf(Field::utype utype, int scale) :
38  Field_timestampf(static_cast<uchar*>(buffer), // ptr_arg
39  &null_byte, // null_ptr_arg
40  '\0', // null_bit_arg
41  utype,// unireg_check_arg
42  "", // field_name_arg
43  static_cast<uint8>(scale)), // dec_arg a.k.a. scale.
44  null_byte(0),
45  store_timestamp_internal_called(false)
46  {
47  initialize();
48  }
49 
50  timeval to_timeval()
51  {
52  timeval tm;
53  int warnings= 0;
54  get_timestamp(&tm, &warnings);
55  EXPECT_EQ(0, warnings);
56  return tm;
57  }
58 
59  /* Averts ASSERT_COLUMN_MARKED_FOR_WRITE assertion. */
60  void make_writable() { bitmap_set_bit(table->write_set, field_index); }
61 
62  void store_timestamp_internal(const timeval *tm)
63  {
64  store_timestamp_internal_called= true;
66  }
67 
68  ~Mock_field_timestampf() { delete table; }
69 };
70 
71 #endif // MOCK_FIELD_TIMESTAMPF_H