MathGroup Archive 2012

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

Search the Archive

Re: Regression Testing of Graphics: some questions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128123] Re: Regression Testing of Graphics: some questions
  • From: Bob Hanlon <hanlonr357 at gmail.com>
  • Date: Mon, 17 Sep 2012 00:23:08 -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
  • References: <20120916072514.963746863@smc.vnet.net>

Why use cut-and-paste?

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

previousResult = graf;

Head[previousResult]

Graphics

previousResult === graf

True

test[expr_, ansr_] := expr === ansr;

test[graf, previousResult]

True


Bob Hanlon


On Sun, Sep 16, 2012 at 3:25 AM, James Stein <mathgroup at stein.org> wrote:
>
> 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: How to solve the integrate problem
  • Next by Date: Re: Mathematica's FindMinimum does not solve trivial optimization problems
  • Previous by thread: Re: Regression Testing of Graphics: some questions
  • Next by thread: Re: Regression Testing of Graphics: some questions