1
//////////////////////////////////////////////////////////////////////////
3
// pgScript - PostgreSQL Tools
4
// RCS-ID: $Id: pgsTestExpressionRecord.cpp 7758 2009-03-26 20:49:59Z dpage $
5
// Copyright (C) 2002 - 2009, The pgAdmin Development Team
6
// This software is released under the BSD Licence
8
//////////////////////////////////////////////////////////////////////////
11
#include "pgsTestSuite.h"
13
#include "pgscript/expressions/pgsAssign.h"
14
#include "pgscript/expressions/pgsAssignToRecord.h"
15
#include "pgscript/expressions/pgsDifferent.h"
16
#include "pgscript/expressions/pgsIdent.h"
17
#include "pgscript/expressions/pgsLower.h"
18
#include "pgscript/expressions/pgsRemoveLine.h"
19
#include "pgscript/objects/pgsNumber.h"
20
#include "pgscript/objects/pgsString.h"
21
#include "pgscript/statements/pgsDeclareRecordStmt.h"
22
#include "pgscript/statements/pgsExpressionStmt.h"
23
#include "pgscript/statements/pgsStmtList.h"
25
void pgsTestSuite::test_expression_record(void)
29
pgsStmtList * SL1 = 0;
31
wxArrayString columns;
32
SL1 = pnew pgsStmtList(pgsTestClass::get_cout());
35
columns.Add(wxT("a"));
36
columns.Add(wxT("b"));
37
columns.Add(wxT("c"));
38
columns.Add(wxT("d"));
41
// r := { a, b, c, d }
44
S = pnew pgsDeclareRecordStmt(wxT("r"), columns);
51
S = pnew pgsExpressionStmt(pnew pgsAssignToRecord(wxT("r"),
52
pnew pgsNumber(wxT("2")), pnew pgsString(wxT("a")),
53
pnew pgsNumber(wxT("5"))));
60
S = pnew pgsExpressionStmt(pnew pgsAssignToRecord(wxT("r"),
61
pnew pgsNumber(wxT("1")), pnew pgsString(wxT("b")),
62
pnew pgsString(wxT("abc"))));
69
S = pnew pgsExpressionStmt(pnew pgsAssignToRecord(wxT("r"),
70
pnew pgsNumber(wxT("0")), pnew pgsNumber(wxT("0")),
71
pnew pgsNumber(wxT("1"))));
78
S = pnew pgsExpressionStmt(pnew pgsAssign(wxT("w"),
79
pnew pgsIdent(wxT("r"))));
86
S = pnew pgsExpressionStmt(pnew pgsAssign(wxT("p"),
87
pnew pgsDifferent(pnew pgsIdent(wxT("r")),
88
pnew pgsIdent(wxT("w")))));
95
S = pnew pgsExpressionStmt(pnew pgsRemoveLine(wxT("r"),
96
pnew pgsNumber(wxT("1"))));
97
TS_ASSERT(pgsRemoveLine(wxT("r"), pnew pgsNumber(wxT("1")))
98
.value() == wxT("RMLINE(r[1])"));
105
S = pnew pgsExpressionStmt(pnew pgsAssign(wxT("q"),
106
pnew pgsDifferent(pnew pgsIdent(wxT("r")),
107
pnew pgsIdent(wxT("w")))));
114
S = pnew pgsExpressionStmt(pnew pgsAssign(wxT("o"),
115
pnew pgsLower(pnew pgsIdent(wxT("r")),
116
pnew pgsIdent(wxT("w")))));
122
// Test symbol table at the end of the execution
123
TS_ASSERT(vars[wxT("p")]->value() == wxT("0"));
124
TS_ASSERT(vars[wxT("q")]->value() == wxT("1"));
125
TS_ASSERT(vars[wxT("o")]->value() == wxT("1"));