Home | History | Annotate | Line # | Download | only in TEST
      1  1.4    tls #	$NetBSD: test.m4,v 1.4 1995/09/28 05:38:05 tls Exp $
      2  1.1    cgd #
      3  1.3  glass # Copyright (c) 1989, 1993
      4  1.3  glass #	The Regents of the University of California.  All rights reserved.
      5  1.3  glass #
      6  1.3  glass # This code is derived from software contributed to Berkeley by
      7  1.3  glass # Ozan Yigit.
      8  1.3  glass #
      9  1.3  glass # Redistribution and use in source and binary forms, with or without
     10  1.3  glass # modification, are permitted provided that the following conditions
     11  1.3  glass # are met:
     12  1.3  glass # 1. Redistributions of source code must retain the above copyright
     13  1.3  glass #    notice, this list of conditions and the following disclaimer.
     14  1.3  glass # 2. Redistributions in binary form must reproduce the above copyright
     15  1.3  glass #    notice, this list of conditions and the following disclaimer in the
     16  1.3  glass #    documentation and/or other materials provided with the distribution.
     17  1.3  glass # 3. All advertising materials mentioning features or use of this software
     18  1.3  glass #    must display the following acknowledgement:
     19  1.3  glass #	This product includes software developed by the University of
     20  1.3  glass #	California, Berkeley and its contributors.
     21  1.3  glass # 4. Neither the name of the University nor the names of its contributors
     22  1.3  glass #    may be used to endorse or promote products derived from this software
     23  1.3  glass #    without specific prior written permission.
     24  1.3  glass #
     25  1.3  glass # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     26  1.3  glass # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     27  1.3  glass # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     28  1.3  glass # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     29  1.3  glass # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     30  1.3  glass # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     31  1.3  glass # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     32  1.3  glass # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     33  1.3  glass # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     34  1.3  glass # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     35  1.3  glass # SUCH DAMAGE.
     36  1.3  glass #
     37  1.3  glass #	@(#)test.m4	8.1 (Berkeley) 6/6/93
     38  1.3  glass #
     39  1.3  glass 
     40  1.1    cgd # test file for mp (not comprehensive)
     41  1.1    cgd #
     42  1.1    cgd # v7 m4 does not have `decr'.
     43  1.1    cgd #
     44  1.1    cgd define(DECR,`eval($1-1)')
     45  1.1    cgd #
     46  1.1    cgd # include string macros
     47  1.1    cgd #
     48  1.1    cgd include(string.m4)
     49  1.1    cgd #
     50  1.1    cgd # create some fortrash strings for an even uglier language
     51  1.1    cgd #
     52  1.1    cgd string(TEXT, "text")
     53  1.1    cgd string(DATA, "data")
     54  1.1    cgd string(BEGIN, "begin")
     55  1.1    cgd string(END, "end")
     56  1.1    cgd string(IF, "if")
     57  1.1    cgd string(THEN, "then")
     58  1.1    cgd string(ELSE, "else")
     59  1.1    cgd string(CASE, "case")
     60  1.1    cgd string(REPEAT, "repeat")
     61  1.1    cgd string(WHILE, "while")
     62  1.1    cgd string(DEFAULT, "default")
     63  1.1    cgd string(UNTIL, "until")
     64  1.1    cgd string(FUNCTION, "function")
     65  1.1    cgd string(PROCEDURE, "procedure")
     66  1.1    cgd string(EXTERNAL, "external")
     67  1.1    cgd string(FORWARD, "forward")
     68  1.1    cgd string(TYPE, "type")
     69  1.1    cgd string(VAR, "var")
     70  1.1    cgd string(CONST, "const")
     71  1.1    cgd string(PROGRAM, "program")
     72  1.1    cgd string(INPUT, "input")
     73  1.1    cgd string(OUTPUT, "output")
     74  1.1    cgd #
     75  1.1    cgd divert(2)
     76  1.1    cgd diversion #1
     77  1.1    cgd divert(3)
     78  1.1    cgd diversion #2
     79  1.1    cgd divert(4)
     80  1.1    cgd diversion #3
     81  1.1    cgd divert(5)
     82  1.1    cgd diversion #4
     83  1.1    cgd divert(0)
     84  1.1    cgd define(abc,xxx)
     85  1.1    cgd ifdef(`abc',defined,undefined)
     86  1.1    cgd #
     87  1.1    cgd # v7 m4 does this wrong. The right output is 
     88  1.1    cgd # 	this is A vEry lon sEntEnCE
     89  1.1    cgd # see m4 documentation for translit.
     90  1.1    cgd #
     91  1.1    cgd translit(`this is a very long sentence', abcdefg, ABCDEF)
     92  1.1    cgd #
     93  1.1    cgd # include towers-of-hanoi
     94  1.1    cgd #
     95  1.1    cgd include(hanoi.m4)
     96  1.1    cgd #
     97  1.1    cgd # some reasonable set of disks
     98  1.1    cgd #
     99  1.1    cgd hanoi(6)
    100  1.1    cgd #
    101  1.1    cgd # include ackermann's function
    102  1.1    cgd #
    103  1.1    cgd include(ack.m4)
    104  1.1    cgd #
    105  1.1    cgd # something like (3,3) will blow away un*x m4.
    106  1.1    cgd #
    107  1.1    cgd ack(2,3)
    108  1.1    cgd #
    109  1.1    cgd # include a square_root function for fixed nums
    110  1.1    cgd #
    111  1.1    cgd include(sqroot.m4)
    112  1.1    cgd #
    113  1.1    cgd # some square roots.
    114  1.1    cgd #
    115  1.1    cgd square_root(15)
    116  1.1    cgd square_root(100)
    117  1.1    cgd square_root(-4)
    118  1.1    cgd square_root(21372)
    119  1.1    cgd #
    120  1.1    cgd # some textual material for enjoyment.
    121  1.1    cgd #
    122  1.1    cgd [taken from the 'Clemson University Computer Newsletter',
    123  1.1    cgd  September 1981, pp. 6-7]
    124  1.1    cgd      
    125  1.1    cgd I am a wizard in the magical Kingdom of Transformation and I
    126  1.1    cgd slay dragons for a living.  Actually, I am a systems programmer.
    127  1.1    cgd One of the problems with systems programming is explaining to
    128  1.1    cgd non-computer enthusiasts what that is.  All of the terms I use to
    129  1.1    cgd describe my job are totally meaningless to them.  Usually my response
    130  1.1    cgd to questions about my work is to say as little as possible.  For
    131  1.1    cgd instance, if someone asks what happened at work this week, I say
    132  1.1    cgd "Nothing much" and then I change the subject.
    133  1.1    cgd      
    134  1.1    cgd With the assistance of my brother, a mechanical engineer, I have devised
    135  1.1    cgd an analogy that everyone can understand.  The analogy describes the
    136  1.1    cgd "Kingdom of Transformation" where travelers wander and are magically
    137  1.1    cgd transformed.  This kingdom is the computer and the travelers are information.
    138  1.1    cgd The purpose of the computer is to change information to a more meaningful
    139  1.1    cgd forma.  The law of conservation applies here:  The computer never creates
    140  1.1    cgd and never intentionally destroys data.  With no further ado, let us travel
    141  1.1    cgd to the Kingdom of Transformation:
    142  1.1    cgd      
    143  1.1    cgd In a land far, far away, there is a magical kingdom called the Kingdom of
    144  1.1    cgd Transformation.  A king rules over this land and employs a Council of
    145  1.1    cgd Wizardry.  The main purpose of this kingdom is to provide a way for
    146  1.1    cgd neighboring kingdoms to transform citizens into more useful citizens.  This
    147  1.1    cgd is done by allowing the citizens to enter the kingdom at one of its ports
    148  1.1    cgd and to travel any of the many routes in the kingdom.  They are magically
    149  1.1    cgd transformed along the way.  The income of the Kingdom of Transformation
    150  1.1    cgd comes from the many toll roads within its boundaries.
    151  1.1    cgd      
    152  1.1    cgd The Kingdom of Transformation was created when several kingdoms got
    153  1.1    cgd together and discovered a mutual need for new talents and abilities for
    154  1.1    cgd citizens.  They employed CTK, Inc. (Creators of Transformation, Inc.) to
    155  1.1    cgd create this kingdom.  CTK designed the country, its transportation routes,
    156  1.1    cgd and its laws of transformation, and created the major highway system.
    157  1.1    cgd      
    158  1.1    cgd Hazards
    159  1.1    cgd =======
    160  1.1    cgd      
    161  1.1    cgd Because magic is not truly controllable, CTK invariably, but unknowingly,
    162  1.1    cgd creates dragons.  Dragons are huge fire-breathing beasts which sometimes
    163  1.1    cgd injure or kill travelers.  Fortunately, they do not travel, but always
    164  1.1    cgd remain near their den.
    165  1.1    cgd      
    166  1.1    cgd Other hazards also exist which are potentially harmful.  As the roads
    167  1.1    cgd become older and more weatherbeaten, pot-holes will develop, trees will
    168  1.1    cgd fall on travelers, etc.  CTK maintenance men are called to fix these
    169  1.1    cgd problems.
    170  1.1    cgd      
    171  1.1    cgd Wizards
    172  1.1    cgd =======
    173  1.1    cgd      
    174  1.1    cgd The wizards play a major role in creating and maintaining the kingdom but
    175  1.1    cgd get little credit for their work because it is performed secretly.  The
    176  1.1    cgd wizards do not wan the workers or travelers to learn their incantations
    177  1.1    cgd because many laws would be broken and chaos would result.
    178  1.1    cgd      
    179  1.1    cgd CTK's grand design is always general enough to be applicable in many
    180  1.1    cgd different situations.  As a result, it is often difficult to use.  The
    181  1.1    cgd first duty of the wizards is to tailor the transformation laws so as to be
    182  1.1    cgd more beneficial and easier to use in their particular environment.
    183  1.1    cgd      
    184  1.1    cgd After creation of the kingdom, a major duty of the wizards is to search for
    185  1.1    cgd and kill dragons.  If travelers do not return on time or if they return
    186  1.1    cgd injured, the ruler of the country contacts the wizards.  If the wizards
    187  1.1    cgd determine that the injury or death occurred due to the traveler's
    188  1.1    cgd negligence, they provide the traveler's country with additional warnings.
    189  1.1    cgd If not, they must determine if the cause was a road hazard or a dragon.  If
    190  1.1    cgd the suspect a road hazard, they call in a CTK maintenance man to locate the
    191  1.1    cgd hazard and to eliminate it, as in repairing the pothole in the road.  If
    192  1.1    cgd they think that cause was a dragon, then they must find and slay it.
    193  1.1    cgd      
    194  1.1    cgd The most difficult part of eliminating a dragon is finding it.  Sometimes
    195  1.1    cgd the wizard magically knows where the dragon's lair it, but often the wizard
    196  1.1    cgd must send another traveler along the same route and watch to see where he
    197  1.1    cgd disappears.  This sounds like a failsafe method for finding dragons (and a
    198  1.1    cgd suicide mission for thr traveler) but the second traveler does not always
    199  1.1    cgd disappear.  Some dragons eat any traveler who comes too close; others are
    200  1.1    cgd very picky.
    201  1.1    cgd      
    202  1.1    cgd The wizards may call in CTK who designed the highway system and
    203  1.1    cgd transformation laws to help devise a way to locate the dragon.  CTK also
    204  1.1    cgd helps provide the right spell or incantation to slay the dragon. (There is
    205  1.1    cgd no general spell to slay dragons; each dragon must be eliminated with a
    206  1.1    cgd different spell.)
    207  1.1    cgd      
    208  1.1    cgd Because neither CTK nor wizards are perfect, spells to not always work
    209  1.1    cgd correctly.  At best, nothing happens when the wrong spell is uttered.  At
    210  1.1    cgd worst, the dragon becomes a much larger dragon or multiplies into several
    211  1.1    cgd smaller ones.  In either case, new spells must be found.
    212  1.1    cgd      
    213  1.1    cgd If all existing dragons are quiet (i.e. have eaten sufficiently), wizards
    214  1.1    cgd have time to do other things.  They hide in castles and practice spells and
    215  1.1    cgd incatations.  They also devise shortcuts for travelers and new laws of
    216  1.1    cgd transformation.
    217  1.1    cgd      
    218  1.1    cgd Changes in the Kingdom
    219  1.1    cgd ======================
    220  1.1    cgd      
    221  1.1    cgd As new transformation kingdoms are created and old ones are maintained,
    222  1.1    cgd CTK, Inc. is constantly learning new things.  It learns ways to avoid
    223  1.1    cgd creating some of the dragons that they have previously created.  It also
    224  1.1    cgd discovers new and better laws of transformation.  As a result, CTK will
    225  1.1    cgd periodically create a new grand design which is far better than the old.
    226  1.1    cgd The wizards determine when is a good time to implement this new design.
    227  1.1    cgd This is when the tourist season is slow or when no important travelers
    228  1.1    cgd (VIPs) are to arrive.  The kingdom must be closed for the actual
    229  1.1    cgd implementation and is leter reopened as a new and better place to go.
    230  1.1    cgd      
    231  1.1    cgd A final question you might ask is what happens when the number of tourists
    232  1.1    cgd becomes too great for the kingdom to handle in a reasonable period of time
    233  1.1    cgd (i.e., the tourist lines at the ports are too long).  The Kingdom of
    234  1.1    cgd Transformation has three options: (1) shorten the paths that a tourist must
    235  1.1    cgd travel, or (2) convince CTK to develop a faster breed of horses so that the
    236  1.1    cgd travelers can finish sooner, or (3) annex more territories so that the
    237  1.1    cgd kingdom can handle more travelers.
    238  1.1    cgd      
    239  1.1    cgd Thus ends the story of the Kingdom of Transformation.  I hope this has
    240  1.1    cgd explained my job to you:  I slay dragons for a living.
    241  1.1    cgd 
    242  1.1    cgd #
    243  1.1    cgd #should do an automatic undivert..
    244  1.1    cgd #
    245