summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/makeshape/ontesting.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/makeshape/ontesting.dtx')
-rw-r--r--Master/texmf-dist/source/latex/makeshape/ontesting.dtx1124
1 files changed, 1124 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/makeshape/ontesting.dtx b/Master/texmf-dist/source/latex/makeshape/ontesting.dtx
new file mode 100644
index 00000000000..9f1bf6cf5f9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/makeshape/ontesting.dtx
@@ -0,0 +1,1124 @@
+% \iffalse meta-comment
+%
+% ontesting.dtx
+% 22 January 2013
+%
+% This is version 1.1
+% It generates a test bed (testsample.tex) for the sample shape,
+% and an article (ontesting.pdf) on the tests.
+%
+% Generation of testsample.tex is with
+% pdflatex makeshape.ins
+% which contains
+% \generate{\file{testsample.tex}
+% {\from{ontesting.dtx}{testbed}}}
+%
+% Generation of ontesting.pdf is with
+% pdflatex ontesting.dtx
+%
+% The \OnlyDescription command is not used for this document.
+%
+% This is part of Silhouette 2.1
+%
+% ------------------------------------------------------------------
+% \fi
+%
+% \iffalse
+%^^A---------------------------------------------------------
+%^^A Preamble for documentation
+%^^A---------------------------------------------------------
+%<*driver>
+\documentclass[10pt,a4paper]{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+
+\usepackage{hyperref}
+
+\usepackage{makeshape}
+\GetFileInfo{makeshape.sty}
+
+\newcommand{\mnote}[1]
+{\marginpar{\scriptsize \raggedright #1 }}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\begin{document}
+\DocInput{ontesting.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%^^A-------------------------------------------------------------------
+%^^A Change log...
+%^^A-------------------------------------------------------------------
+%^^A
+%^^A 0.0 - 6 January 2013
+% \changes{0.0}{2013/01/06}{
+% Experimental - part of Silhouette 2.0.1.
+% Testing code is adopted from existing documents but improved.
+% Monolithic testing code generation.
+% User documentation is incomplete.
+% }
+%^^A
+%^^A 1.0 - 9 January 2013 (started 7 January)
+% \changes{1.0}{2013/01/09}{
+% \emph{Experimental phase complete.}
+% Testing code generation is embedded in the documentation.
+% Testing code is updated with improved tests.
+% Documentation on the role of the tests is completed.
+% File names are finalised.
+% }
+%^^A
+%^^A 1.1 - 22 January 2013
+% \changes{1.1}{2013/01/22}{
+% Tidied up the structure and layout of the test code.
+% The description of the tests is improved.
+% The report's title is changed.
+% }
+%^^A
+%^^A-------------------------------------------------------------------
+%^^A Check sums...
+%^^A-------------------------------------------------------------------
+%
+%^^A no checksum required
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%^^A===========================================================================
+%^^A Start report body
+%^^A===========================================================================
+%
+% \title{The {\sf makeshape} package\thanks{
+% This document is part of \textsf{makeshape}~\fileversion, dated~\filedate.}\\
+% {\tt testshape.tex}\\A Document for Testing the Package and \\Custom Shapes}
+%
+% \author{Adrian P. Robson\thanks{\texttt{adrian.robson@nepsweb.co.uk}}}
+% \date{22 January 2013}
+%
+% \maketitle
+%
+% \tableofcontents
+%
+%\section{Introduction}
+%
+% Here we discus the |testsample.tex| document
+% that is a test bed for the {\sf makeshape} package \cite{makeshape}
+% and its sample shape.
+% The package is in |makeshape.sty| and the sample shape is defined in |sampleshape.tex|.
+% The test bed can be usefully adapted to work with any PGF \cite{pgfMan} shape
+% developed with the {\sf makeshape} package.
+%
+% There are 11 test PGF pictures in the |testsample.tex| document,
+% and we describe what each of these tests achieves, and what aspects are important for custom shapes.
+%
+%
+%^^A#################################################################
+%^^A# Test bed document - preamble - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+%%
+%% This is a test bed for the makeshape package's
+%% sampleshape in sampleshape.tex
+%%
+%% It can be easily adapted for other shapes.
+%%
+%% 22 January 2013
+
+\documentclass[10pt,a4paper]{article}
+
+\usepackage{enumitem}
+\usepackage{tikz}
+\usetikzlibrary{backgrounds}
+\usetikzlibrary{arrows}
+
+%%-------------------------------------------------
+%% file and shape being tested
+\def\filename{sampleshape} % file being tested
+\input{\filename} % It is a .tex
+%%\usepackage{\filename} % It is a .sty
+\def\testshape{sample} % shape being tested
+%%-------------------------------------------------
+
+%%--------------------------------------------------------
+%% Utility macros
+%%--------------------------------------------------------
+
+%% \spot{x}{y}
+\newcommand{\spot}[2]{
+ \draw[help lines,red] (#1,#2) circle (1pt);
+}
+
+%% \markOrig
+\def\mrksz{4pt}
+\def\mrkcol{yellow}
+\newcommand{\markOrig}{
+ \draw[help lines,\mrkcol] (0,0) circle (\mrksz);
+ \draw[help lines,\mrkcol] (-\mrksz,0) -- (\mrksz,0);
+ \draw[help lines,\mrkcol] (0,-\mrksz) -- (0,\mrksz);
+}
+
+%% \markOrigC{colour}
+\def\mrksz{4pt}
+\newcommand{\markOrigC}[1]{
+ \draw[help lines,#1] (0,0) circle (\mrksz);
+ \draw[help lines,#1] (-\mrksz,0) -- (\mrksz,0);
+ \draw[help lines,#1] (0,-\mrksz) -- (0,\mrksz);
+}
+
+%% Anchors ...
+%% \***{node}{size}{colour}
+
+\def\centeranchor#1#2#3{
+ \draw[help lines,#3] (#1.center) circle (#2);
+}
+
+\def\textanchor#1#2#3{
+ \draw[help lines,#3] (#1.text) circle (#2);
+}
+
+\def\cardinalanchors#1#2#3{
+ \draw[help lines,#3] (#1.north) circle (#2);
+ \draw[help lines,#3] (#1.west) circle (#2);
+ \draw[help lines,#3] (#1.south) circle (#2);
+ \draw[help lines,#3] (#1.east) circle (#2);
+}
+
+\def\corneranchors#1#2#3{
+ \draw[help lines,#3] (#1.north west) circle (#2);
+ \draw[help lines,#3] (#1.south west) circle (#2);
+ \draw[help lines,#3] (#1.south east) circle (#2);
+ \draw[help lines,#3] (#1.north east) circle (#2);
+}
+
+\def\allanchors#1#2#3{
+ \corneranchors{#1}{#2}{#3}
+ \cardinalanchors{#1}{#2}{#3}
+}
+
+%%--------------------------------------------------------
+
+\title{The {\sf makeshape} package\\
+ Shape Test Bed
+ \vspace{-3ex} }
+\author{}
+\date{
+\begin{tabular}{rl}
+ File & {\tt \filename}\\
+ Shape & {\tt \testshape}
+\end{tabular}
+\\[2ex]
+\today}
+
+\begin{document}
+
+\maketitle
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - preamble - end
+%^^A#################################################################
+%
+% \section{The Tests}
+%
+% \subsection{Basic Shape}
+%
+% This section shows the shape with its default size and separation options.
+% Cardinal anchor points are show in red; the centre anchor in blue;
+% and the text anchor in green.
+% The green lines show the the text box size.
+%
+% It tests the package's management of the text box, the text and centre anchors,
+% and the shape's cardinal anchors.
+% \emph{Check that the background path is correct,
+% and that the anchors are in the correct positions.}
+%
+%^^A#################################################################
+%^^A# Test bed document - basic shape tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\section*{Basic Shape}
+
+\begin{center}
+\begin{tikzpicture}
+
+\node at (0,0)
+ [\testshape, draw
+ ] (test) {\verb|x x|} ;
+
+\allanchors{test}{2pt}{red}
+\textanchor{test}{2pt}{green}
+\draw[help lines,green] (test.text) -- ++(7pt,0);
+\draw[help lines,green] (test.text) -- ++(0,5pt);
+\centeranchor{test}{2pt}{blue}
+
+%% mark the anchors with arrows from enclosing rectangle
+\node at (0,0)
+ [rectangle, red,
+ minimum width=4cm,
+ minimum height=2cm
+ ] (outer) {} ;
+\begin{scope}[>=latex']
+\draw[->,help lines,red] (outer.north) -- (test.north);
+\draw[->,help lines,red] (outer.east) -- (test.east);
+\draw[->,help lines,red] (outer.south) -- (test.south);
+\draw[->,help lines,red] (outer.west) -- (test.west);
+\draw[->,help lines,red] (outer.north east) -- (test.north east);
+\draw[->,help lines,red] (outer.south east) -- (test.south east);
+\draw[->,help lines,red] (outer.south west) -- (test.south west);
+\draw[->,help lines,red] (outer.north west) -- (test.north west);
+\end{scope}
+
+\begin{scope}[on background layer]
+\node at (4cm,0)
+ [rectangle, draw
+ ] (rectRmin) {\verb|x x|};
+
+\node at (0,-1.7cm)
+ [rectangle, draw
+ ] (rectBmin) {\verb|x x|};
+
+\draw[help lines,green] (rectRmin.north west) -- ++(-4.5cm,0);
+\draw[help lines,green] (rectRmin.south west) -- ++(-4.5cm,0);
+\draw[help lines,green] (rectBmin.north west) -- ++(0,2.3cm);
+\draw[help lines,green] (rectBmin.north east) -- ++(0,2.3cm);
+\markOrig
+\end{scope}
+
+\end{tikzpicture}
+
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - basic shape tests - end
+%^^A#################################################################
+%
+% \subsection{Minimum Dimensions}
+%
+% This tests support for minimum width and height keys.
+% Yellow lines mark the required sizes and centres, and
+% green lines show the text box location.
+% Cardinal anchors are shown in red.
+%
+% \emph{Check that the background path has scaled properly to the correct dimensions;
+% and the anchors are in the right places.}
+%
+%^^A#################################################################
+%^^A# Test bed document - minimum dimension tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+\vfill
+%%--------------------------------------------------------
+\section*{Minimum Dimensions}
+
+\def\minh{30pt}
+\def\minw{80pt}
+
+{\tt minimum width = \minw}\\
+{\tt minimum height = \minh}
+
+\begin{center}
+\begin{tikzpicture}
+
+%% The test shape
+\node at (0,0)
+ [\testshape, draw,
+ minimum width=\minw,
+ minimum height=\minh,
+ ] (test) {\verb|x x|} ;
+
+\allanchors{test}{1pt}{red}
+
+%% Guide lines
+\begin{scope}[on background layer]
+\node at (4.5cm+\minw,0)
+ [rectangle, draw
+ ] (rectRmin) {\verb|x x|};
+
+\node at (1.5cm+\minw,0)
+ [rectangle, draw,
+ minimum width=\minw,
+ minimum height=\minh
+ ] (rectR) {\verb|x x|};
+
+\node at (0,-1cm-\minh)
+ [rectangle, draw,
+ minimum width=\minw,
+ minimum height=\minh
+ ] (rectB) {\verb|x x|};
+
+\node at (0,-2.5cm-\minh)
+ [rectangle, draw,
+ ] (rectBmin) {\verb|x x|};
+
+\markOrig
+\draw[help lines,yellow] (rectR.north west) -- ++(-1.7cm-\minw,0);
+\draw[help lines,yellow] (rectR.south west) -- ++(-1.7cm-\minw,0);
+\draw[help lines,yellow] (rectR.west) -- ++(-1.7cm-\minw,0);
+\draw[help lines,yellow] (rectR.west) -- ++(\minw+0.2cm,0);
+\draw[help lines,yellow] (rectB.north west) -- ++(0,1.2cm+\minh);
+\draw[help lines,yellow] (rectB.north east) -- ++(0,1.2cm+\minh);
+\draw[help lines,yellow] (rectB.north) -- ++(0,1.2cm+\minh);
+\draw[help lines,yellow] (rectB.north) -- ++(0,-\minh-0.2cm);
+
+\draw[help lines,green] (rectRmin.north west) -- ++(-4.6cm-\minw,0);
+\draw[help lines,green] (rectBmin.north west) -- ++(0,2.6cm+\minh);
+\end{scope}
+
+\end{tikzpicture}
+\end{center}
+\vfill
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - minimum dimension tests - end
+%^^A#################################################################
+%
+% \subsection{Inner Separation}
+%
+% This tests support for the inner separation keys.
+% Inner separation is handled by the package and is included in
+% the corrected text box.
+% Green lines show the basic text box location, and
+% blue lines show the corrected text box location.
+% Cardinal anchors are shown in red.
+%
+% \emph{Check that the shape has scaled properly under the influence of the two keys;
+% and the anchors are in the right places.}
+%
+%^^A#################################################################
+%^^A# Test bed document - inner separation tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+\newpage
+%%--------------------------------------------------------
+\section*{Inner Separation}
+
+\def\insepx{20pt}
+\def\insepy{10pt}
+
+{\tt inner x seperation = \insepx}\\
+{\tt inner y seperation = \insepy}
+
+\begin{center}
+\begin{tikzpicture}
+
+%% The test shape
+\node at (0,0)
+ [\testshape, draw,
+ inner xsep=\insepx, inner ysep=\insepy
+ ] (test) {\verb|x x|} ;
+
+\allanchors{test}{1pt}{red}
+
+%% Guide lines
+\begin{scope}[on background layer]
+\markOrig
+
+\node at (2.5cm,0)
+ [rectangle, draw
+ ] (rectRmin) {\verb|x x|};
+
+\node at (0,-1.5cm)
+ [rectangle, draw
+ ] (rectBmin) {\verb|x x|};
+
+\node at (4cm,0)
+ [rectangle, draw,
+ inner ysep=\insepy
+ ] (rectRwithSep) {\verb|x x|};
+
+\node at (0,-2.2cm)
+ [rectangle, draw,
+ inner xsep=\insepx
+ ] (rectBwithSep) {\verb|x x|};
+
+\draw[help lines,green] (rectRmin.north west) -- ++(-3.4cm,0);
+\draw[help lines,green] (rectBmin.north west) -- ++(0,2cm);
+\draw[help lines,blue] (rectRwithSep.north west) -- ++(-4.9cm,0);
+\draw[help lines,blue] (rectBwithSep.north west) -- ++(0,2.7cm);
+\end{scope}
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - inner separation tests - end
+%^^A#################################################################
+%
+% \subsection{Outer Separation}
+%
+% This section tests the outer separation keys.
+% The actual shape is drawn in black.
+% To shown the boundary of the outer separation surface,
+% the shape is expanded and drawn in green.
+% Anchors, which should be on this surface are displayed in red.
+%
+% \emph{Check that the expanded green shape is well formed,
+% and that the anchors are in the correct place.}
+%
+%^^A#################################################################
+%^^A# Test bed document - outer separation tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\section*{Outer Separation}
+
+\def\minh{20pt}
+\def\minw{60pt}
+\def\outerx{20pt}
+\def\outery{10pt}
+
+{\tt outer x separation = \outerx}\\
+{\tt outer y separation = \outery}
+
+\begin{center}
+\begin{tikzpicture}
+
+\markOrig
+
+%% the shape with outer separation
+\node at (0,0)
+ [\testshape, draw,
+ minimum width=\minw,
+ minimum height=\minh,
+ outer xsep=\outerx, outer ysep=\outery
+ ] (test) {\verb|x x|} ;
+
+%% shape expanded to outer separation boundary
+\node at (0,0)
+ [\testshape, draw, help lines, green,
+ minimum width=\minw+2*\outerx,
+ minimum height=\minh+2*\outery,
+ ] (bigger) {} ;
+
+%% mark the anchors with arrows from enclosing rectangle
+\node at (0,0)
+ [rectangle,
+ minimum width=\minw+1cm,
+ minimum height=\minh+1cm,
+ outer xsep=\outerx, outer ysep=\outery
+ ] (outer) {} ;
+
+\begin{scope}[>=latex']
+\draw[->,help lines,red] (outer.north) -- (test.north);
+\draw[->,help lines,red] (outer.east) -- (test.east);
+\draw[->,help lines,red] (outer.south) -- (test.south);
+\draw[->,help lines,red] (outer.west) -- (test.west);
+\draw[->,help lines,red] (outer.north east) -- (test.north east);
+\draw[->,help lines,red] (outer.south east) -- (test.south east);
+\draw[->,help lines,red] (outer.south west) -- (test.south west);
+\draw[->,help lines,red] (outer.north west) -- (test.north west);
+\end{scope}
+
+%% mark anchors with circles
+\allanchors{test}{2pt}{red}
+
+%% mark text and centre anchors
+\textanchor{test}{2pt}{green}
+\draw[help lines,green] (test.text) -- ++(7pt,0);
+\draw[help lines,green] (test.text) -- ++(0,5pt);
+\centeranchor{test}{2pt}{blue}
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - outer separation tests - end
+%^^A#################################################################
+%
+% \subsection{Anchorborder}
+%
+% There are three tests that are applied to verify the behaviour of
+% the package's |\anchorborder|, and the shape's anchor path.
+%
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\section*{Anchorborder }
+
+%</testbed>
+%\fi
+%
+% \subsubsection{\texorpdfstring{External Points with Outer Separation and\\
+% Minimum Dimensions}
+% {External Points with Outer Separation and
+% Minimum Dimensions}}
+%
+% This tests the connection of an external point to the shape's surface.
+% It exercises outer separation and minimum dimensions.
+% The black surface is the shape without any separation,
+% and the outer green surface is where the outer separation surface should be.
+% \emph{Check that the black arrows touch the outer green surface;
+% and that the green shape is correct.}
+%
+%^^A#################################################################
+%^^A# Test bed document - external points with outer separation and
+%^^A# minimum dimensions tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\subsection*{External Points with Outer Separation and\\Minimum Dimensions}
+
+\def\width{2cm}
+\def\height{1cm}
+\def\testouter{10pt}
+
+{\tt outer sep = \testouter}\\
+{\tt minimum height = \height}\\
+{\tt minimum width = \width}
+
+\begin{center}
+\begin{tikzpicture}
+
+\markOrig
+
+%% The test shape
+\node at (0,0) [\testshape, draw, font={\sf \small},
+ minimum width=\width,
+ minimum height=\height,
+ outer sep=\testouter
+ ] (test) {Test};
+
+%% green path where anchors should be
+\node at (0,0) [\testshape, draw, help lines, green,
+ minimum width=\width+2*\testouter,
+ minimum height=\height+2*\testouter,
+ ] (bigger) {} ;
+
+\def\n{20}
+\def\radius{3cm}
+\draw[dotted] (0,0) circle (\radius);
+\foreach \s in {1,...,\n}
+{
+ \draw[->, >=latex'] ({360/\n * (\s - 1)}:\radius) -- (test);
+}
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - external points with outer separation and
+%^^A# minimum dimensions tests - end
+%^^A#################################################################
+%
+% \subsubsection{Internal Points with Minimum Dimensions}
+%
+% This tests the connection of an internal point to the shape's surface.
+% It uses minimum dimensions.
+% \emph{Check that the red arrows touch the outer black surface,
+% and that the black shape is correct.}
+%
+%^^A#################################################################
+%^^A# Test bed document - internal points with minimum dimensions
+%^^A# tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\subsection*{Internal Points with Minimum Dimensions}
+
+\def\width{3cm}
+\def\height{3cm}
+
+{\tt minimum height = \height}\\
+{\tt minimum width = \width}
+
+\vspace{-3ex}
+\begin{center}
+\begin{tikzpicture}
+
+\markOrig
+
+%% The test shape
+\node at (0,0) [\testshape, draw, font={\sf \small},
+ minimum width=\width,
+ minimum height=\height,
+ ] (test) {};
+
+\def\n{20}
+\def\radius{1cm}
+\draw[dotted] (0,0) circle (\radius);
+\foreach \s in {1,...,\n}
+{
+ \draw[->, >=latex', red] ({360/\n * (\s - 1)}:\radius) -- (test);
+}
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - internal points with minimum dimensions
+%^^A# tests - end
+%^^A#################################################################
+
+% \subsubsection{Angles with Outer Separation and Minimum Dimensions}
+%
+% This tests the `connect a line at an angle' feature.
+% Different x and y outer separations and minimum dimensions are used.
+% The black surface is the shape without any separation,
+% and the outer red surface is where the outer separation surface should be.
+% \emph{Check that the blue dots are on the outer red surface,
+% and that the red shape is correct.}
+%
+%^^A#################################################################
+%^^A# Test bed document - angles with outer separation and minimum
+%^^A# dimensions tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\subsection*{Angles with Outer Separation and Minimum Dimensions}
+
+\def\angle{120}
+\def\width{2cm}
+\def\height{1cm}
+\def\testouterx{20pt}
+\def\testoutery{10pt}
+
+Marked angle = \angle\\
+{\tt outer xsep = \testouterx}\\
+{\tt outer ysep = \testoutery}\\
+{\tt minimum height = \height}\\
+{\tt minimum width = \width}
+
+\vspace{-5ex}
+\begin{center}
+\begin{tikzpicture}
+
+\markOrig
+
+%% red path where anchors should be ?
+\node at (0,0) [\testshape, draw, help lines, red,
+ minimum width=\width+2*\testouterx,
+ minimum height=\height+2*\testoutery,
+ ] (bigger) {};
+
+\node at (0,0) [\testshape, draw,
+ minimum width=\width,
+ minimum height=\height,
+ outer xsep=\testouterx,
+ outer ysep=\testoutery
+ ] (test) {};
+
+\foreach \angle in {0,5,...,355} {
+ \fill[blue] (test.\angle) circle[radius=1pt];
+}
+
+%% single angle test
+\def\angle{120}
+\draw [help lines] (test.center) -- ++(\angle:1.5cm);
+\draw[green] (test.\angle) circle[radius=2pt];
+\draw[green] (test.\angle) -- ++(3pt,3pt);
+\draw[green] (test.\angle) -- ++(-3pt,-3pt);
+\draw[green] (test.\angle) -- ++(-3pt,3pt);
+\draw[green] (test.\angle) -- ++(3pt,-3pt);
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - angles with outer separation and minimum
+%^^A# dimensions tests - end
+%^^A#################################################################
+%
+% \subsection{Simple Node Connections}
+%
+% This tests simple node connection.
+% \emph{Check that the centre shape is connect to the surrounding eight shapes.}
+%
+%^^A#################################################################
+%^^A# Test bed document - simple node connections tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\section*{Simple Node Connections}
+
+\begin{center}
+\begin{tikzpicture}
+\def\ra{0} \def\rb{60pt} \def\rc{120pt}
+\def\ca{0} \def\cb{100pt} \def\cc{200pt}
+
+\draw[help lines,step=20pt,dotted] (0pt,0pt) grid (\cc,\rc);
+
+\tikzset{node style/.style={ minimum width=40pt,minimum height=20pt}}
+
+\markOrig
+
+\node at (\ca,\ra) [draw, \testshape, node style] (A) {A};
+\node at (\cb,\ra) [draw, \testshape, node style] (B) {B};
+\node at (\cc,\ra) [draw, \testshape, node style] (C) {C};
+%%
+\node at (\ca,\rb) [draw, \testshape, node style] (D) {D};
+\node at (\cb,\rb) [draw, \testshape, node style] (E) {E};
+\node at (\cc,\rb) [draw, \testshape, node style] (F) {F};
+%%
+\node at (\ca,\rc) [draw, \testshape, node style] (G) {G};
+\node at (\cb,\rc) [draw, \testshape, node style] (H) {H};
+\node at (\cc,\rc) [draw, \testshape, node style] (I) {I};
+
+\draw (E) -- (F);
+\draw (E) -- (D);
+\draw (E) -- (B);
+\draw (E) -- (H);
+\draw (E) -- (G);
+\draw (E) -- (A);
+\draw (E) -- (I);
+\draw (E) -- (C);
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - simple node connections tests - end
+%^^A#################################################################
+%
+% \subsection{Scaling}
+%
+% This is a simple scaling test that uses minimum dimensions to draw
+% the shape at three sizes.
+% There are guide lines showing dimensions for each size.
+% \emph{Check that all of the shapes are correct.}
+%
+%^^A#################################################################
+%^^A# Test bed document - scaling tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\section*{Scaling}
+
+\def\minh{20pt}
+\def\minw{80pt}
+\def\exd{5pt}
+
+\begin{center}
+\begin{tikzpicture}
+
+\node at (0,0)
+ [\testshape, draw,
+ minimum width=\minw,
+ minimum height=\minh,
+ ] (test1) {} ;
+
+\node at (0,0)
+ [\testshape, draw, blue,
+ minimum width=\minw+1cm,
+ minimum height=\minh+1cm,
+ ] (test2) {} ;
+
+\node at (0,0)
+ [\testshape, draw, red,
+ minimum width=\minw+2cm,
+ minimum height=\minh+2cm,
+ ] (test3) {} ;
+
+\def\tgridA#1#2{
+\draw[help lines] ({0.5*(\minw+#1)+\exd},{0.5*(\minh+#1)}) -- ({-0.5*(\minw+#1)-\exd},{0.5*(\minh+#1)});
+\draw[help lines] ({0.5*(\minw+#1)+\exd},{-0.5*(\minh+#1)}) -- ({-0.5*(\minw+#1)-\exd},{-0.5*(\minh+#1)});
+\draw[help lines] ({0.5*(\minw+#1)},{0.5*(\minh+#1)+\exd}) -- ({0.5*(\minw+#1)},{-0.5*(\minh+#1)-\exd});
+\draw[help lines] ({-0.5*(\minw+#1)},{0.5*(\minh+#1)+\exd}) -- ({-0.5*(\minw+#1)},{-0.5*(\minh+#1)-\exd});
+}
+
+\begin{scope}[on background layer]
+\tgridA{0pt}{0pt}
+\tgridA{1cm}{1cm}
+\tgridA{2cm}{2cm}
+\markOrig
+\end{scope}
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - scaling tests - end
+%^^A#################################################################
+%
+%
+% \subsection{Package Tests}
+%
+%^^A#################################################################
+%^^A# Test bed document - package tests peamble - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\section*{Package Tests}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - package tests preamble- end
+%^^A#################################################################
+%
+% \subsubsection{Text Alignment and the Text Box}
+%
+% This verifies the operation of the text box macros.
+% All combinations of test ascenders and descenders are used.
+% It tests the package's management of the text box and the text and centre anchors.
+% The left hand shapes are standard text boxes.
+%
+% \emph{
+% Check the shape's text boxes align with the standard boxes.
+% Also that the blue centre anchor is at the yellow origin;
+% and the green text anchor is in the correct place.
+% Finally, the red cardinal anchors should be suitably located on the shapes boundary. }
+%
+%^^A#################################################################
+%^^A# Test bed document - text alignment and
+%^^A# the text box tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\subsection*{Text Alignment and the Text Box}
+
+\begin{center}
+\begin{tikzpicture}
+
+\node at (0,0)
+ [\testshape, draw
+ ] (test1) {\verb|x x|} ;
+
+\node[ \testshape, draw,
+ below of=test1,
+ node distance=1cm
+ ] (test2) {\verb|x dx|} ;
+
+\node[ \testshape, draw,
+ below of=test2, node distance=1cm
+ ] (test3) {\verb|xp x|} ;
+
+\node[ \testshape, draw,
+ below of=test3, node distance=1cm
+ ] (test4) {\verb|xp dx|} ;
+
+\allanchors{test1}{1pt}{red}
+\corneranchors{test2}{1pt}{red}
+\corneranchors{test3}{1pt}{red}
+\corneranchors{test4}{1pt}{red}
+\centeranchor{test1}{2pt}{blue}
+\centeranchor{test2}{2pt}{blue}
+\centeranchor{test3}{2pt}{blue}
+\centeranchor{test4}{2pt}{blue}
+\textanchor{test1}{1pt}{green}
+\draw[help lines,green] (test1.text) -- ++(7pt,0);
+\draw[help lines,green] (test1.text) -- ++(0,5pt);
+\textanchor{test2}{1pt}{green}
+\textanchor{test3}{1pt}{green}
+\textanchor{test4}{1pt}{green}
+
+\begin{scope}[on background layer]
+
+\markOrig
+
+\node at(4cm,0) [ rectangle, draw
+ ] (ref1) {\verb|x x|} ;
+\draw[green] (ref1.north west) -- ++(-5cm,0);
+\draw[green] (ref1.south west) -- ++(-5cm,0);
+
+\node[rectangle, draw,
+ below of=ref1, node distance=1cm
+ ] (ref2) {\verb|x dx|} ;
+\draw[green] (ref2.north west) -- ++(-5cm,0);
+\draw[green] (ref2.south west) -- ++(-5cm,0);
+
+\node[rectangle, draw,
+ below of=ref2, node distance=1cm
+ ] (ref3) {\verb|xp x|} ;
+\draw[green] (ref3.north west) -- ++(-5cm,0);
+\draw[green] (ref3.south west) -- ++(-5cm,0);
+
+\node[rectangle, draw,
+ below of=ref3, node distance=1cm
+ ] (ref4) {\verb|xp dx|} ;
+\draw[green] (ref4.north west) -- ++(-5cm,0);
+\draw[green] (ref4.south west) -- ++(-5cm,0);
+
+\end{scope}
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - text alignment and
+%^^A# the text box tests - end
+%^^A#################################################################
+%
+% \subsubsection{Inner, Outer and Angle for Shape Off Origin}
+%
+% This is a test for the correct operation of the package's |\anchorborder|
+% with off-origin shapes.
+% In particular, its use of the |\pgf@relevantforpicturesizefalse|
+% and |\pgftransformreset| commands.
+%
+% \emph{Check that the outer box `closely' contains the picture,
+% and that the green arrows and points are on the shape's boundary.}
+%
+%^^A#################################################################
+%^^A# Test bed document - inner, outer and angle for shape off
+%^^A# origin tests - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+%%--------------------------------------------------------
+\subsection*{Inner, Outer and Angle for Shape Off Origin}
+
+The box should closely contain picture if {\tt anchorborder} is working correctly.
+\bigskip
+
+\begin{center}
+\begin{tikzpicture}[framed]
+
+\markOrigC{black}
+\draw (2pt,0) node[anchor=west]{\tt \tiny origin};
+
+%% The test shape
+\node at (70pt,40pt)
+ [\testshape, draw,
+ red, minimum width=60pt, minimum height=40pt
+ ] (node) {};
+
+%% outer test line
+\path (node);
+\pgfgetlastxy{\macrox}{\macroy}
+\coordinate (Xout) at (\macrox+20pt,\macroy+40pt);
+
+\draw (Xout) circle(3pt);
+\draw [help lines] (node.center) -- (Xout);
+\draw [->, >=latex',green] (Xout) -- (node); % <<<
+
+%% inner test line
+\path (node);
+\pgfgetlastxy{\macrox}{\macroy}
+\coordinate (Xin) at (\macrox-5pt,\macroy-5pt);
+
+\draw (Xin) circle(3pt);
+\draw [help lines,shorten >=-1cm] (node.center) -- (Xin);
+\draw [->, >=latex',green] (Xin) -- (node); % <<<
+
+%% test angle
+\def\angle{120}
+\draw [help lines] (node.center) -- ++(\angle:1.5cm);
+\draw[green] (node.\angle) circle[radius=2pt]; % <<<
+
+\end{tikzpicture}
+\end{center}
+
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - inner, outer and angle for shape off
+%^^A# origin tests - end
+%^^A#################################################################
+%
+%^^A#################################################################
+%^^A# Test bed document - epilogue - start
+%^^A#################################################################
+%\iffalse
+%<*testbed>
+\end{document}
+%</testbed>
+%\fi
+%^^A#################################################################
+%^^A# Test bed document - epilogue - end
+%^^A#################################################################
+%
+% \section{Reuse}
+%
+% The |testsample.tex| file can be adapted to test other shapes developed using
+% the {\sf makeshape} package. Find the following section:
+%
+% \begin{verbatim}
+% %%-------------------------------------------------
+% %% file and shape being tested
+% \def\filename{sampleshape} % file being tested
+% \input{\filename} % It is a .tex
+% %%\usepackage{\filename} % It is a .sty
+% \def\testshape{sample} % shape being tested
+% %%-------------------------------------------------
+% \end{verbatim}
+% Then change |sampleshape| to the new file name, and |sample| to the particular shape's name.
+% Choose |\input| or |\usepackage| dependinmg on the file type.
+%
+% The report's ending `Package Test' section can be deleted, and additional shape specific tests added.
+% The file's {\sf makeshape} package oriented name
+% and its heading comment should probably be changed as well.
+%
+%^^A===========================================================================
+%^^A References
+%^^A===========================================================================
+%
+% \begin{thebibliography}{9}
+% \raggedright
+%
+% \bibitem{makeshape}
+% Adrian P. Robson,
+% \emph{The makeshape package
+% and a method for creating custom shapes in PGF}, 2013.
+%
+% \bibitem{pgfMan}
+% Till Tantau, \emph{The TikZ and PGF Packages, Manual for version 2.10},
+% 2010.
+% Available as
+% \href{http://mirrors.ctan.org/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf}
+% {\tt pgfmanual.pdf}
+% from the \href{http://ctan.org}{Comprehensive TeX Archive Network}.
+%
+% \end{thebibliography}
+%
+%^^A===========================================================================
+%^^A Print Changes
+%^^A
+%^^A -> Run pdfLaTeX ontesting.dtx
+%^^A makeindex -s gglo.ist -o ontesting.gls ontesting.glo
+%^^A pdfLaTeX ontesting.dtx
+%^^A===========================================================================
+%
+%^^A \PrintChanges
+%
+\endinput
+