MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Regression Testing of Graphics: some questions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128110] Regression Testing of Graphics: some questions
  • From: James Stein <mathgroup at stein.org>
  • Date: Sun, 16 Sep 2012 03:25:14 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net

To my surprise, if you copy a Graphic  from a notebook and paste it
elsewhere in the notebook, the Graphic objects are not the same (even
though their visual appearance is identical.

I discovered this irritation attempting regression testing. Here's an
example: assume you have a function 'test' that takes two arguments:
     test [ expression_, expectedResult _]
An overly simple implementation might be this:
    SetAttributes [ test, HoldAll ] ;
    test [ expr_, ansr_ ] := expr === ansr;
Now suppose you wish to verify that some routine, say  'graf', is still
giving the same result it it did previously. Here is an example:

    graf := ListPlot [ { 1, 2, 2, 3 }, ImageSize->Tiny ];
    test [ graf , previousResult ] // Print;

What should 'previousResult' be? You might consider copying the graphic
produced by 'graf' earlier, which was correct, and paste it into 'test' as
the second argument. Unfortunately, the action of copy & paste changes the
internal structure of Graphic [ a1, a2, ... ] so the regression test will
always fail.

Questions:
(1) Is there a good reason for this? (The unwashed are curious.)
(2) Is this a bug (or 'feature') that could be fixed?
(3) Is there a way to prevent it?
(4) Is there an algorithm to do one of
  (a) convert an original Graphic to its pasted form.
  (b) convert a pasted Graphic to its original form.
  (c) convert any Graphic to a canonical form, such that any two Graphic
objects that produce identical displays will have identical canonical forms.

For the truly curious, here are the differences in for a rather simple
ListPlot I made. Let OG be the original, and CG be the pasted copy of OG.

OG had Length 2; CG had Length 8.

OG [[ 1 ]] was { { { }, {Hue[0.67, 0.6, 0.6], Point[{{1., 1.}, {2., 2.},
{3., 2.}, {4., 3.}}]}, { } } }
CG [[ 1 ]] was {   { }, {Hue[0.67, 0.6, 0.6], Point[{{1., 1.}, {2., 2.},
{3., 2.}, {4., 3.}}]}, { }   }

OG [ [ 2 ] ] was List of seven rules,

OG [ [ 2 through 8 ] ] were the same seven rules.

It would be simple to convert one of these trees to the other, but it would
be rash to generalize the nature of the needed conversion without extensive
investigations. Perhaps a  Wolfram wizzard can throw light on these
questions, or someone can propose a different kind of regression testing to
skirt the issue?




  • Prev by Date: Re: Buttons in CDFs Created for Homework Assignments
  • Next by Date: Re: Mathematica's FindMinimum does not solve trivial optimization problems
  • Previous by thread: Re: coloring individual hexagons in a grid...
  • Next by thread: Re: Regression Testing of Graphics: some questions