120 lines
3.5 KiB
Plaintext
120 lines
3.5 KiB
Plaintext
#
|
|
# MRegionOps3Algebra-Testfile
|
|
#
|
|
# November 2008, M. Hoeger
|
|
# November 2017, U. Wiesecke
|
|
#
|
|
# *
|
|
# * Note: Call this testscript as follows:
|
|
# * TestRunner --no-tmp -i ../Algebras/MRegionOps3/test/mregionops32.test
|
|
# *
|
|
################################################################################
|
|
# *
|
|
# * Preparing the test database
|
|
# *
|
|
################################################################################
|
|
#testcase restore database berlintest from berlintest;
|
|
#yields success
|
|
#restore database berlintest from berlintest;
|
|
#testcase open database berlintest
|
|
#yields success
|
|
open database berlintest;
|
|
|
|
delete tripU5;
|
|
delete tripU8a;
|
|
delete mpA;
|
|
delete mpB;
|
|
delete rA;
|
|
delete rB;
|
|
delete mrA;
|
|
delete mrB;
|
|
|
|
################################################################################
|
|
# *
|
|
# * Create test data
|
|
# *
|
|
################################################################################
|
|
restore tripU5 from '../Algebras/MRegionOps3/test/tripU5';
|
|
restore tripU8a from '../Algebras/MRegionOps3/test/tripU8a';
|
|
let mpA = tripU5;
|
|
let mpB = tripU8a;
|
|
let rA = union_new(westhafen rotate[5500.0, 14600.0, 0.0] scale[3.0],
|
|
westhafen rotate[5500.0, 14600.0, 50.0] scale[3.0]);
|
|
let rB = grunewald scale[0.75] translate[19000.0, 39000.0];
|
|
let mrA = move(mpA, rA);
|
|
let mrB = move(mpB, rB);
|
|
################################################################################
|
|
# *
|
|
# * Detailed test, preparation
|
|
# *
|
|
################################################################################
|
|
delete t0A;
|
|
delete t0B;
|
|
delete t1A;
|
|
delete t1B;
|
|
delete t0;
|
|
delete t1;
|
|
delete noSamples;
|
|
delete step;
|
|
delete samples;
|
|
delete tolerance;
|
|
delete aUb;
|
|
delete aIb;
|
|
delete aMb;
|
|
|
|
let noSamples = 101.0;
|
|
let t0A = instant2real(inst(initial(mrA)));
|
|
let t0B = instant2real(inst(initial(mrB)));
|
|
let t1A = instant2real(inst(final(mrA)));
|
|
let t1B = instant2real(inst(final(mrB)));
|
|
let t0 = ifthenelse(t0A < t0B, t0A, t0B);
|
|
let t1 = ifthenelse(t1A > t1B, t1A, t1B);
|
|
let step = (abs(t1 - t0)) / noSamples;
|
|
let samples = realstream(t0, t1, step)
|
|
use[fun(t: real) create_instant(t)] transformstream consume;
|
|
let tolerance = 0.1;
|
|
################################################################################
|
|
# *
|
|
# * Detailed test, Union
|
|
# *
|
|
################################################################################
|
|
#testcase mrA union mrB
|
|
#yields ()
|
|
let aUb = mrA union mrB;
|
|
|
|
#yields (bool TRUE)
|
|
query samples feed transformstream
|
|
use[ fun(t: instant) abs( area(val(aUb atinstant t)) -
|
|
area( val(mrA atinstant t) union val(mrB atinstant t))
|
|
)] transformstream max[Elem] < tolerance;
|
|
################################################################################
|
|
# *
|
|
# * Detailed test, Intersection
|
|
# *
|
|
################################################################################
|
|
#testcase intersection(mrA, mrB)
|
|
#yields ()
|
|
let aIb = intersection(mrA, mrB);
|
|
|
|
#yields (bool TRUE)
|
|
query samples feed transformstream
|
|
use[ fun(t: instant) abs( area(val(aIb atinstant t)) -
|
|
area( intersection(val(mrA atinstant t), val(mrB atinstant t)))
|
|
)] transformstream max[Elem] < tolerance;
|
|
################################################################################
|
|
# *
|
|
# * Detailed test, Minus
|
|
# *
|
|
################################################################################
|
|
#testcase mrA minus mrB
|
|
#yields ()
|
|
let aMb = mrA minus mrB;
|
|
|
|
#yields (bool TRUE)
|
|
query samples feed transformstream
|
|
use[ fun(t: instant) abs( area(val(aMb atinstant t)) -
|
|
area( val(mrA atinstant t) minus val(mrB atinstant t))
|
|
)] transformstream max[Elem] < tolerance;
|
|
|
|
|