1
//////////////////////////////////////////////////////////////////////////
3
// pgScript - PostgreSQL Tools
4
// RCS-ID: $Id: pgsTestOperatorNumber.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/exceptions/pgsException.h"
14
#include "pgscript/generators/pgsIntegerGen.h"
15
#include "pgscript/generators/pgsStringGen.h"
16
#include "pgscript/objects/pgsGenerator.h"
17
#include "pgscript/objects/pgsNumber.h"
18
#include "pgscript/objects/pgsRecord.h"
19
#include "pgscript/objects/pgsString.h"
21
void pgsTestSuite::test_operator_number(void)
23
// From a number with a string
25
// [1] Create variables
26
pgsVariable * var0 = 0;
27
var0 = pnew pgsNumber(wxT("100"));
28
pgsVariable * var1 = 0;
29
var1 = pnew pgsString(wxT("5"));
37
catch (const pgsException &)
48
catch (const pgsException &)
59
catch (const pgsException &)
70
catch (const pgsException &)
81
catch (const pgsException &)
92
catch (const pgsException &)
103
catch (const pgsException &)
114
catch (const pgsException &)
125
catch (const pgsException &)
130
// [13] Lower or equal
136
catch (const pgsException &)
141
// [14] Greater or equal
147
catch (const pgsException &)
153
TS_ASSERT((!(*var0))->value() == wxT("0"));
154
pgsOperand op(pnew pgsNumber(wxT("0")));
155
TS_ASSERT((!(*op))->value() == wxT("1"));
163
catch (const pgsException &)
169
TS_ASSERT(var0->pgs_is_true() == true);
170
TS_ASSERT((!(*var0))->pgs_is_true() == false);
172
// [18] Delete variables
177
// From a number (integer) with a real number
179
// [1] Create variables
180
pgsVariable * var0 = 0;
181
var0 = pnew pgsNumber(wxT("100"), pgsInt);
182
pgsVariable * var1 = 0;
183
var1 = pnew pgsNumber(wxT("5"), pgsReal);
186
TS_ASSERT((*var0 + *var1)->value() == wxT("105"));
189
TS_ASSERT((*var0 - *var1)->value() == wxT("95"));
191
// [4] Multiplication
192
TS_ASSERT((*var0 * *var1)->value() == wxT("500"));
195
TS_ASSERT((*var0 / *var1)->value() == wxT("20"));
198
TS_ASSERT((*var0 % *var1)->value() == wxT("0"));
201
TS_ASSERT((*var0 == *var1)->value() == wxT("0"));
204
TS_ASSERT((*var0 != *var1)->value() == wxT("1"));
207
TS_ASSERT((*var0 < *var1)->value() == wxT("0"));
210
TS_ASSERT((*var0 > *var1)->value() == wxT("1"));
212
// [13] Lower or equal
213
TS_ASSERT((*var0 <= *var1)->value() == wxT("0"));
215
// [14] Greater or equal
216
TS_ASSERT((*var0 >= *var1)->value() == wxT("1"));
219
TS_ASSERT((!(*var0))->value() == wxT("0"));
222
TS_ASSERT((*var0 &= *var1)->value() == wxT("0"));
225
TS_ASSERT(var0->pgs_is_true() == true);
226
TS_ASSERT((!(*var0))->pgs_is_true() == false);
228
// [18] Delete variables
233
// From a number with a record
235
// [1] Create variables
236
pgsVariable * var0 = 0;
237
var0 = pnew pgsNumber(wxT("100"));
239
rec = pnew pgsRecord(1);
240
rec->insert(0, 0, pnew pgsString(wxT("5")));
241
pgsVariable * var1 = 0;
250
catch (const pgsException &)
261
catch (const pgsException &)
266
// [4] Multiplication
272
catch (const pgsException &)
283
catch (const pgsException &)
294
catch (const pgsException &)
305
catch (const pgsException &)
316
catch (const pgsException &)
327
catch (const pgsException &)
338
catch (const pgsException &)
343
// [13] Lower or equal
349
catch (const pgsException &)
354
// [14] Greater or equal
360
catch (const pgsException &)
366
TS_ASSERT((!(*var0))->value() == wxT("0"));
374
catch (const pgsException &)
380
TS_ASSERT(var0->pgs_is_true() == true);
381
TS_ASSERT((!(*var0))->pgs_is_true() == false);
383
// [18] Delete variables
388
// From a number with a record
390
// [1] Create variables
391
pgsVariable * var0 = 0;
392
var0 = pnew pgsNumber(wxT("100"));
394
rec = pnew pgsRecord(1);
395
rec->insert(0, 0, pnew pgsNumber(wxT("5")));
396
rec->insert(1, 0, pnew pgsNumber(wxT("1")));
397
pgsVariable * var1 = 0;
406
catch (const pgsException &)
417
catch (const pgsException &)
422
// [4] Multiplication
428
catch (const pgsException &)
439
catch (const pgsException &)
450
catch (const pgsException &)
461
catch (const pgsException &)
472
catch (const pgsException &)
483
catch (const pgsException &)
494
catch (const pgsException &)
499
// [13] Lower or equal
505
catch (const pgsException &)
510
// [14] Greater or equal
516
catch (const pgsException &)
521
// [18] Delete variables
526
// From a number with a string generator
528
// [1] Create variables
529
pgsVariable * var0 = 0;
530
var0 = pnew pgsNumber(wxT("100"));
531
pgsStringGen * gen = 0;
532
gen = pnew pgsStringGen(10, 20);
533
pgsVariable * var1 = 0;
534
var1 = pnew pgsGenerator(pgsVariable::pgsTString, gen);
542
catch (const pgsException &)
553
catch (const pgsException &)
558
// [4] Multiplication
564
catch (const pgsException &)
575
catch (const pgsException &)
586
catch (const pgsException &)
597
catch (const pgsException &)
608
catch (const pgsException &)
619
catch (const pgsException &)
630
catch (const pgsException &)
635
// [13] Lower or equal
641
catch (const pgsException &)
646
// [14] Greater or equal
652
catch (const pgsException &)
657
// [18] Delete variables
662
// From a number with an integer generator
664
// [1] Create variables
665
pgsVariable * var0 = 0;
666
var0 = pnew pgsNumber(wxT("100"));
667
pgsIntegerGen * gen = 0;
668
gen = pnew pgsIntegerGen(5, 5);
669
pgsVariable * var1 = 0;
670
var1 = pnew pgsGenerator(pgsVariable::pgsTInt, gen);
673
TS_ASSERT((*var0 + *var1)->value() == wxT("105"));
676
TS_ASSERT((*var0 - *var1)->value() == wxT("95"));
678
// [4] Multiplication
679
TS_ASSERT((*var0 * *var1)->value() == wxT("500"));
682
TS_ASSERT((*var0 / *var1)->value() == wxT("20"));
685
TS_ASSERT((*var0 % *var1)->value() == wxT("0"));
688
TS_ASSERT((*var0 == *var1)->value() == wxT("0"));
691
TS_ASSERT((*var0 != *var1)->value() == wxT("1"));
694
TS_ASSERT((*var0 < *var1)->value() == wxT("0"));
697
TS_ASSERT((*var0 > *var1)->value() == wxT("1"));
699
// [13] Lower or equal
700
TS_ASSERT((*var0 <= *var1)->value() == wxT("0"));
702
// [14] Greater or equal
703
TS_ASSERT((*var0 >= *var1)->value() == wxT("1"));
706
TS_ASSERT((!(*var0))->value() == wxT("0"));
709
TS_ASSERT((*var0 &= *var1)->value() == wxT("0"));
712
TS_ASSERT(var0->pgs_is_true() == true);
713
TS_ASSERT((!(*var0))->pgs_is_true() == false);
715
// [18] Delete variables