You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/akregator/src/mk4storage/metakit/tests/tbasic1.cpp

269 lines
5.4 KiB

// tbasic1.cpp -- Regression test program, basic tests part 1
// $Id$
// This is part of Metakit, the homepage is http://www.equi4.com/metakit/
#include "regress.h"
void TestBasics1()
{
B(b00, Should fail, 0)
{
A(false);
} E;
B(b01, Should succeed, 0)
{
A(sizeof (t4_byte) == 1);
A(sizeof (short) == 2);
A(sizeof (t4_i32) == 4);
A(sizeof (float) == 4);
A(sizeof (double) == 8);
} E;
B(b02, Int property, 0)
{
c4_Row r1;
c4_IntProp p1 ("p1");
p1 (r1) = 1234567890L;
long x1 = p1 (r1);
A(x1 == 1234567890L);
} E;
#if !q4_TINY
B(b03, Float property, 0)
{
c4_Row r1;
c4_FloatProp p1 ("p1");
p1 (r1) = 123.456;
double x1 = p1 (r1);
A((float) x1 == (float) 123.456);
} E;
#endif
B(b04, String property, 0)
{
c4_Row r1;
c4_StringProp p1 ("p1");
p1 (r1) = "abc";
const char* x1 = p1 (r1);
A((c4_String) x1 == "abc");
} E;
B(b05, View property, 0)
{
c4_View v1;
c4_Row r1;
c4_ViewProp p1 ("p1");
p1 (r1) = v1;
c4_View x1 = p1 (r1);
// compare cursors to make sure this is the same sequence
A(x1[0] == v1[0]);
} E;
B(b06, View construction, 0)
{
c4_IntProp p1 ("p1"), p2 ("p2"), p3 ("p3");
c4_View v1 = (p1, p3, p2);
A(v1.FindProperty(p1.GetId()) == 0);
A(v1.FindProperty(p2.GetId()) == 2);
A(v1.FindProperty(p3.GetId()) == 1);
} E;
B(b07, Row manipulation, 0)
{
c4_StringProp p1 ("p1"), p2 ("p2");
c4_IntProp p3 ("p3");
c4_Row r1;
p1 (r1) = "look at this" ;
const char* x1 = p1 (r1);
A(x1 == (c4_String) "look at this");
r1 = p1 [ "what's in a" ] + p2 [ "name..." ];
c4_String t = (const char*) p2 (r1);
p1 (r1) = t + (const char*) (p1 (r1));
p2 (r1) = p1 (r1);
c4_String x2 = (const char*) p1 (r1); // 2000-03-16, store as c4_String
A(x2 == "name...what's in a");
// the above change avoids an evaluation order issue in assert below
A(x2 == p2 (r1));
p3 (r1) = 12345;
p3 (r1) = p3 (r1) + 123;
int x3 = p3 (r1);
A(x3 == 12345 + 123);
} E;
B(b08, Row expressions, 0)
{
c4_StringProp p1 ("p1"), p2 ("p2");
c4_IntProp p3 ("p3");
c4_Row r1;
c4_View v1 = (p1, p2, p3);
v1.SetSize(5);
r1 = v1[1];
v1[2] = v1[1];
v1[3] = r1;
v1[4] = v1[4];
r1 = r1;
} E;
B(b09, View manipulation, 0)
{
c4_StringProp p1 ("p1"), p2 ("p2");
c4_Row r1 = p1 ["One"] + p2 ["Two"];
c4_Row r2;
c4_View v1;
v1.Add(r1);
v1.Add(r2);
v1.Add(r1);
A(v1.GetSize() == 3);
A(v1[0] == r1);
A(v1[1] == r2);
A(v1[2] == r1);
v1.RemoveAt(1, 1);
A(v1.GetSize() == 2);
A(v1[0] == r1);
A(v1[0] == v1[1]);
} E;
B(b10, View sorting, 0)
{
c4_IntProp p1 ("p1");
c4_View v1;
v1.Add(p1 [111]);
v1.Add(p1 [222]);
v1.Add(p1 [333]);
v1.Add(p1 [345]);
v1.Add(p1 [234]);
v1.Add(p1 [123]);
c4_View v2 = v1.Sort();
A(v2.GetSize() == 6);
A(p1 (v2[0]) == 111);
A(p1 (v2[1]) == 123);
A(p1 (v2[2]) == 222);
A(p1 (v2[3]) == 234);
A(p1 (v2[4]) == 333);
A(p1 (v2[5]) == 345);
} E;
B(b11, View selection, 0)
{
c4_IntProp p1 ("p1");
c4_View v1;
v1.Add(p1 [111]);
v1.Add(p1 [222]);
v1.Add(p1 [333]);
v1.Add(p1 [345]);
v1.Add(p1 [234]);
v1.Add(p1 [123]);
c4_View v2 = v1.SelectRange(p1 [200], p1 [333]);
A(v2.GetSize() == 3);
A(p1 (v2[0]) == 222);
A(p1 (v2[1]) == 333);
A(p1 (v2[2]) == 234);
} E;
B(b12, Add after remove, 0)
{
c4_StringProp p1 ("p1");
c4_View v1;
v1.Add(p1 ["abc"]);
A(v1.GetSize() == 1);
v1.RemoveAt(0);
A(v1.GetSize() == 0);
v1.Add(p1 ["def"]);
A(v1.GetSize() == 1);
} E;
B(b13, Clear view entry, 0)
{
c4_IntProp p1 ("p1");
c4_View v1;
v1.Add(p1 [123]);
A(v1.GetSize() == 1);
A(p1 (v1[0]) == 123);
v1[0] = c4_Row ();
A(v1.GetSize() == 1);
A(p1 (v1[0]) == 0);
} E;
B(b14, Empty view outlives temp storage, 0)
{
c4_View v1;
c4_Storage s1;
v1 = s1.GetAs("a[p1:I,p2:S]");
} E;
B(b15, View outlives temp storage, 0)
{
c4_IntProp p1 ("p1");
c4_View v1;
{
c4_Storage s1;
v1 = s1.GetAs("a[p1:I,p2:S]");
v1.Add(p1 [123]);
}
// 19990916 - semantics changed, view now 1 row, but 0 props
A(v1.GetSize() == 1);
A(v1.NumProperties() == 0);
//A(p1 (v1[0]) == 123);
} E;
B(b16, View outlives cleared temp storage, 0)
{
c4_IntProp p1 ("p1");
c4_View v1;
{
c4_Storage s1;
v1 = s1.GetAs("a[p1:I,p2:S]");
v1.Add(p1 [123]);
v1.RemoveAll();
}
A(v1.GetSize() == 0);
v1.Add(p1 [123]);
A(v1.GetSize() == 1);
A(p1 (v1[0]) == 123);
} E;
#if !q4_TINY
B(b17, Double property, 0)
{
c4_Row r1;
c4_DoubleProp p1 ("p1");
p1 (r1) = 1234.5678;
double x1 = p1 (r1);
A(x1 == (double) 1234.5678);
} E;
#endif
B(b18, SetAtGrow usage, 0)
{
c4_IntProp p1 ("p1");
c4_View v1;
v1.SetAtGrow(3, p1 [333]);
v1.SetAtGrow(1, p1 [111]);
v1.SetAtGrow(5, p1 [555]);
A(v1.GetSize() == 6);
A(p1 (v1[1]) == 111);
A(p1 (v1[3]) == 333);
A(p1 (v1[5]) == 555);
} E;
B(b19, Bytes property, 0)
{
c4_Row r1;
c4_BytesProp p1 ("p1");
c4_Bytes x1 ("hi!", 3);
p1 (r1) = x1;
c4_Bytes x2 = p1 (r1);
A(x1 == x2);
} E;
}