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.
278 lines
5.6 KiB
278 lines
5.6 KiB
// tcusto1.cpp -- Regression test program, custom view tests
|
|
// $Id$
|
|
// This is part of Metakit, see http://www.equi4.com/metakit/
|
|
|
|
#include "regress.h"
|
|
|
|
void TestCustom1()
|
|
{
|
|
B(c01, Slice forward, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
v1.Add(p1 [456]);
|
|
v1.Add(p1 [567]);
|
|
|
|
c4_View v2 = v1.Slice(1, -1, 2);
|
|
A(v2.GetSize() == 2);
|
|
A(p1 (v2[0]) == 234);
|
|
A(p1 (v2[1]) == 456);
|
|
|
|
v1.Add(p1 [678]);
|
|
A(v1.GetSize() == 6);
|
|
A(v2.GetSize() == 3);
|
|
A(p1 (v2[2]) == 678);
|
|
} E;
|
|
|
|
B(c02, Slice backward, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
v1.Add(p1 [456]);
|
|
v1.Add(p1 [567]);
|
|
|
|
c4_View v2 = v1.Slice(1, -1, -2);
|
|
A(v2.GetSize() == 2);
|
|
A(p1 (v2[0]) == 456);
|
|
A(p1 (v2[1]) == 234);
|
|
|
|
v1.Add(p1 [678]);
|
|
A(v1.GetSize() == 6);
|
|
A(v2.GetSize() == 3);
|
|
A(p1 (v2[0]) == 678);
|
|
A(p1 (v2[1]) == 456);
|
|
A(p1 (v2[2]) == 234);
|
|
} E;
|
|
|
|
B(c03, Slice reverse, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
v1.Add(p1 [456]);
|
|
v1.Add(p1 [567]);
|
|
|
|
c4_View v2 = v1.Slice(1, 5, -1);
|
|
A(v2.GetSize() == 4);
|
|
A(p1 (v2[0]) == 567);
|
|
A(p1 (v2[1]) == 456);
|
|
A(p1 (v2[2]) == 345);
|
|
A(p1 (v2[3]) == 234);
|
|
|
|
v1.Add(p1 [678]);
|
|
A(v1.GetSize() == 6);
|
|
A(v2.GetSize() == 4);
|
|
} E;
|
|
|
|
B(c04, Cartesian product, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
c4_IntProp p2 ("p2");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
|
|
c4_View v2;
|
|
v2.Add(p2 [111]);
|
|
v2.Add(p2 [222]);
|
|
|
|
c4_View v3 = v1.Product(v2);
|
|
A(v3.GetSize() == 6);
|
|
A(p1 (v3[0]) == 123);
|
|
A(p2 (v3[0]) == 111);
|
|
A(p1 (v3[1]) == 123);
|
|
A(p2 (v3[1]) == 222);
|
|
A(p1 (v3[2]) == 234);
|
|
A(p2 (v3[2]) == 111);
|
|
A(p1 (v3[3]) == 234);
|
|
A(p2 (v3[3]) == 222);
|
|
A(p1 (v3[4]) == 345);
|
|
A(p2 (v3[4]) == 111);
|
|
A(p1 (v3[5]) == 345);
|
|
A(p2 (v3[5]) == 222);
|
|
|
|
v1.Add(p1 [456]);
|
|
A(v3.GetSize() == 8);
|
|
v2.Add(p2 [333]);
|
|
A(v3.GetSize() == 12);
|
|
} E;
|
|
|
|
B(c05, Remapping, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
|
|
c4_View v2;
|
|
v2.Add(p1 [2]);
|
|
v2.Add(p1 [0]);
|
|
v2.Add(p1 [1]);
|
|
v2.Add(p1 [0]);
|
|
|
|
c4_View v3 = v1.RemapWith(v2);
|
|
A(v3.GetSize() == 4);
|
|
A(p1 (v3[0]) == 345);
|
|
A(p1 (v3[1]) == 123);
|
|
A(p1 (v3[2]) == 234);
|
|
A(p1 (v3[3]) == 123);
|
|
} E;
|
|
|
|
B(c06, Pairwise combination, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
c4_IntProp p2 ("p2");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
|
|
c4_View v2;
|
|
v2.Add(p2 [111]);
|
|
v2.Add(p2 [222]);
|
|
v2.Add(p2 [333]);
|
|
|
|
c4_View v3 = v1.Pair(v2);
|
|
A(v3.GetSize() == 3);
|
|
A(p1 (v3[0]) == 123);
|
|
A(p2 (v3[0]) == 111);
|
|
A(p1 (v3[1]) == 234);
|
|
A(p2 (v3[1]) == 222);
|
|
A(p1 (v3[2]) == 345);
|
|
A(p2 (v3[2]) == 333);
|
|
} E;
|
|
|
|
B(c07, Concatenate views, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
|
|
c4_View v2;
|
|
v2.Add(p1 [111]);
|
|
v2.Add(p1 [222]);
|
|
|
|
c4_View v3 = v1.Concat(v2);
|
|
A(v3.GetSize() == 5);
|
|
A(p1 (v3[0]) == 123);
|
|
A(p1 (v3[1]) == 234);
|
|
A(p1 (v3[2]) == 345);
|
|
A(p1 (v3[3]) == 111);
|
|
A(p1 (v3[4]) == 222);
|
|
} E;
|
|
|
|
B(c08, Rename property, 0)
|
|
{
|
|
c4_IntProp p1 ("p1");
|
|
c4_IntProp p2 ("p2");
|
|
|
|
c4_View v1;
|
|
v1.Add(p1 [123]);
|
|
v1.Add(p1 [234]);
|
|
v1.Add(p1 [345]);
|
|
|
|
c4_View v2 = v1.Rename(p1, p2);
|
|
A(v2.GetSize() == 3);
|
|
A(p2 (v2[0]) == 123);
|
|
A(p2 (v2[1]) == 234);
|
|
A(p2 (v2[2]) == 345);
|
|
A(p1 (v2[0]) == 0);
|
|
A(p1 (v2[1]) == 0);
|
|
A(p1 (v2[2]) == 0);
|
|
} E;
|
|
|
|
B(c09, GroupBy operation, 0)
|
|
{
|
|
c4_StringProp p1 ("p1");
|
|
c4_IntProp p2 ("p2");
|
|
c4_ViewProp p3 ("p3");
|
|
|
|
c4_View v1, v2, v3;
|
|
|
|
v1.Add(p1 [""]);
|
|
v1.Add(p1 ["1"] + p2 [1]);
|
|
v1.Add(p1 ["12"] + p2 [1]);
|
|
v1.Add(p1 ["12"] + p2 [2]);
|
|
v1.Add(p1 ["123"] + p2 [1]);
|
|
v1.Add(p1 ["123"] + p2 [2]);
|
|
v1.Add(p1 ["123"] + p2 [3]);
|
|
|
|
v2 = v1.GroupBy(p1, p3);
|
|
A(v2.GetSize() == 4);
|
|
A(p1 (v2[0]) == (c4_String) "");
|
|
A(p1 (v2[1]) == (c4_String) "1");
|
|
A(p1 (v2[2]) == (c4_String) "12");
|
|
A(p1 (v2[3]) == (c4_String) "123");
|
|
|
|
v3 = p3 (v2[0]);
|
|
A(v3.GetSize() == 1);
|
|
A(p2 (v3[0]) == 0);
|
|
v3 = p3 (v2[1]);
|
|
A(v3.GetSize() == 1);
|
|
A(p2 (v3[0]) == 1);
|
|
v3 = p3 (v2[2]);
|
|
A(v3.GetSize() == 2);
|
|
A(p2 (v3[0]) == 1);
|
|
A(p2 (v3[1]) == 2);
|
|
v3 = p3 (v2[3]);
|
|
A(v3.GetSize() == 3);
|
|
A(p2 (v3[0]) == 1);
|
|
A(p2 (v3[1]) == 2);
|
|
A(p2 (v3[2]) == 3);
|
|
|
|
} E;
|
|
|
|
B(c10, Counts operation, 0)
|
|
{
|
|
c4_StringProp p1 ("p1");
|
|
c4_IntProp p2 ("p2"), p3 ("p3");
|
|
|
|
c4_View v1, v2, v3;
|
|
|
|
v1.Add(p1 [""]);
|
|
v1.Add(p1 ["1"] + p2 [1]);
|
|
v1.Add(p1 ["12"] + p2 [1]);
|
|
v1.Add(p1 ["12"] + p2 [2]);
|
|
v1.Add(p1 ["123"] + p2 [1]);
|
|
v1.Add(p1 ["123"] + p2 [2]);
|
|
v1.Add(p1 ["123"] + p2 [3]);
|
|
|
|
v2 = v1.Counts(p1, p3);
|
|
A(v2.GetSize() == 4);
|
|
A(p1 (v2[0]) == (c4_String) "");
|
|
A(p1 (v2[1]) == (c4_String) "1");
|
|
A(p1 (v2[2]) == (c4_String) "12");
|
|
A(p1 (v2[3]) == (c4_String) "123");
|
|
|
|
A(p2 (v2[0]) == 0);
|
|
A(p2 (v2[1]) == 0);
|
|
A(p2 (v2[2]) == 0);
|
|
A(p2 (v2[3]) == 0);
|
|
|
|
A(p3 (v2[0]) == 1);
|
|
A(p3 (v2[1]) == 1);
|
|
A(p3 (v2[2]) == 2);
|
|
A(p3 (v2[3]) == 3);
|
|
|
|
} E;
|
|
}
|