File: grtdb_mem_tests.cpp

package info (click to toggle)
mysql-workbench 6.3.8%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 113,932 kB
  • ctags: 87,814
  • sloc: ansic: 955,521; cpp: 427,465; python: 59,728; yacc: 59,129; xml: 54,204; sql: 7,091; objc: 965; makefile: 638; sh: 613; java: 237; perl: 30; ruby: 6; php: 1
file content (121 lines) | stat: -rw-r--r-- 3,025 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* 
 * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; version 2 of the
 * License.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301  USA
 */

#include <stdio.h>
#include "grtpp.h"

#include "grtdb/editor_table.h"
#include "grtdb/db_object_helpers.h"
#include "wb_helpers.h"

using namespace grt;
using namespace bec;
using namespace std;

BEGIN_TEST_DATA_CLASS(bedb_mem_tests)
public:
  db_mgmt_RdbmsRef rdbms;
  GRTManager grtm;

TEST_DATA_CONSTRUCTOR(bedb_mem_tests)
  : grtm(false)
{
}
END_TEST_DATA_CLASS


TEST_MODULE(bedb_mem_tests, "DB stuff memory tests");


TEST_FUNCTION(10)
{
  // Structs are auto registered.
  int i= grtm.get_grt()->scan_metaclasses_in("../../res/grt/");
  ensure("load structs", i>0);
  
  grtm.get_grt()->end_loading_metaclasses();

  // load datatype groups so that it can be found during load of types
  grtm.get_grt()->set_root(grtm.get_grt()->unserialize("../../res/grtdata/db_datatype_groups.xml"));


  rdbms= db_mgmt_RdbmsRef::cast_from(grtm.get_grt()->unserialize("data/res/mysql_rdbms_info.xml"));

  ensure("rdbms", rdbms.is_valid());
}

// XXX: what does this test case actually test?
TEST_FUNCTION(20)
{
  // test primary key
  enum {N=100};
  char buf[64];
  db_mysql_SchemaRef scm(grtm.get_grt());
  WBTester tester;
  db_mysql_TableRef prev_table(grtm.get_grt());

  for ( int i = 0; i < N; i++ )
  {
    db_mysql_TableRef table(grtm.get_grt());
    sprintf(buf, "Table_%i", i);
    table->name("tbl");

    enum {NCOLS = 8};
    for ( int j = 0; j < 8; j++ )
    { 
      db_mysql_ColumnRef column(grtm.get_grt());

      sprintf(buf, "col_%i_%i", i, j);
      column->name(buf);
      column->owner(table);

      column->simpleType(rdbms->simpleDatatypes().get(3));

      table->columns().ginsert(column);
    }

    sprintf(buf, "col_%i_%i", i, NCOLS+1);
    db_mysql_ColumnRef column(grtm.get_grt());
    column->name(buf);
    column->owner(table);
    table->columns().ginsert(column);

    column->autoIncrement(1);
    table->addPrimaryKeyColumn(column);

    table->owner(scm);
    scm->tables().insert(table);    

    if ( prev_table.is_valid() )
    {
      try {
        bec::TableHelper::create_foreign_key_to_table(table, prev_table, true, true, true, true,
          rdbms, grt::DictRef(tester.grt), grt::DictRef(tester.grt));
      }
      catch (...)
      {}
    }
    //fprintf(stderr, ".");
    prev_table = table;
  }
}

END_TESTS