From 19fc9fd9a26973d87fad437ce549ffaba479df54 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 31 May 2012 00:02:26 +0000 Subject: asy 2.16 sources git-svn-id: svn://tug.org/texlive/trunk@26734 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/utils/asymptote/tests/pic/trans.asy | 75 ++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Build/source/utils/asymptote/tests/pic/trans.asy (limited to 'Build/source/utils/asymptote/tests/pic/trans.asy') diff --git a/Build/source/utils/asymptote/tests/pic/trans.asy b/Build/source/utils/asymptote/tests/pic/trans.asy new file mode 100644 index 00000000000..9a2e02decfa --- /dev/null +++ b/Build/source/utils/asymptote/tests/pic/trans.asy @@ -0,0 +1,75 @@ +import TestLib; + +StartTest("trans"); + +// Ensure the same test each time. +srand(3456); + +pair randompair() +{ + return (unitrand(),unitrand()); +} + +path randombox() +{ + return box(randompair(), randompair()); +} + +// For now, only tests transforms which take axes to axes. +transform randomtrans() +{ + return rotate(90 * (rand() % 4)) * shift(unitrand(), unitrand()); +} + +real tolerance = 1e-4; + +void testpic(int objs, int trans) +{ + path[] pp; + picture orig; + for (int i = 0; i < objs; ++i) { + pp.push(randombox()); + fill(orig, pp[i]); + } + + picture pic = orig; + transform t = identity(); + for (int i = 0; i < trans; ++i) + { + transform tt = randomtrans(); + pic = tt * pic; + t = tt * t; + } + + pair m = pic.userMin2(), M = pic.userMax2(); + pair pm = min(t * pp), pM = max(t * pp); + + assert(abs(m-pm) < tolerance); + assert(abs(M-pM) < tolerance); +} + +for (int i = 0; i < 100; ++i) + testpic(1,1); +for (int i = 0; i < 100; ++i) + testpic(1,1); +for (int i = 0; i < 100; ++i) + testpic(3,1); +for (int i = 0; i < 100; ++i) + testpic(1,2); +for (int i = 0; i < 100; ++i) + testpic(2,2); +for (int i = 0; i < 100; ++i) + testpic(3,2); +for (int i = 0; i < 100; ++i) + testpic(3,4); +for (int i = 0; i < 100; ++i) + testpic(1,4); +for (int i = 0; i < 100; ++i) + testpic(2,4); +for (int i = 0; i < 100; ++i) + testpic(3,4); +for (int i = 0; i < 100; ++i) + testpic(3,4); + + +EndTest(); -- cgit v1.2.3