CSV File Sizes
==============
sbry	 43
sfw	 43
tsco	 43

boc	 22
mrw	 43
vod      59
shire	 61
lgen	147
egg	262

Test Scenarios
==============

filename    : csv file
    [additional modules used]
    test purpose
    results file

Specification/Data structure
----------------------------

001.t
    No input at all - suitable defaults are created
    No build

002.t
    A few simple resources
    all default hashes with typical entries
    No build

003.t
    More complex resources
    Some keys are plural
    Some are arrays holding several typical entries
    No build

004.t	: 040.conf
    Typical, single entries from config file
    others filled with defaults
    No build

005.t	: 050.conf
    Input from both config file and options
    Some add entries to existing resource
    Both single and plural keys used
    Entries with same key over-written
    Options overwrites config file
    Cmdline overwrites options
    No build

006.t
    Multiple options testing preparation structure
    No build

007.t
    Particular date and sample entries have defaults filled
    The default group is considered
    No build

008.t
    literals in sample entry become resources
    No build

009.t
    literals in sample entry become resources
    from group instead of sample
    No build

Basic charts
------------

010.t	: boc.csv
    Single sample defaulting to typical, simple values
    no lines
    data only, blue candles

011.t	: MySQL
    Simple sample with named resources
    value
    red candles, 2 price lines

Simple marks
------------

020.t	: shire.csv
    mark, with and without lines entry
    code as single text
    2 marks/code -> mark with 2 lines
    2 codes, one mark using another
    1 page; price=2

021.t	: tsco.csv
    2 mark lines on same mark fn
    automatic lines entry
    lines tag contains spaces
    1 page; price=2

022.t	: mrw.csv, sbry.csv, sfw.csv, tsco.csv
    user defined null
    globally set filename
    chart with no stock or source (hidden)
    hidden chart
    hiding volume graph
    using '*' wildcard to generate list of lines
    building average from all other lines
    transfer line from one graph to another
    Using spaces in mark name making default key
    4 pages; price=1

Mappings
--------

030.t	: vod.csv
    exhaustive test of output lines
    marks alone
    referenced line and mark
    with and without line entry and 'out' field
    1 page; price=35

031.t	: vod.csv
    using 'do' to access code from files
    info() to extract details in step and before
    code/line with same name using info($self->{name},...)
    using settings in line entry to control mark
    build FQLN using $self->{page}
    using variable holding FQLN in info()
    using literal tag name in info()
    returning array and scalar from info()
    accessing line and function data from info()

032.t	: vod.csv
    one to one mapping
    sine curve generated from code
    input line delayed

Functions
---------

100.t	: boc.csv
    Single sample defaulting to typical, simple values
    no lines
    data only, blue candles

110.t	: MySQL
    Simple sample with named resources
    value
    red candles, 2 price lines

120.t	: shire.csv
    Lines which depend on data
    Lead times
    checking dates, data and line IDs
    moving_average
    2 price, 1 volume lines

121.t	: shire.csv
    Lines which depend on data
    weighted_average
    2 price, 1 volume lines

122.t	: shire.csv
    Lines which depend on data
    exponential_average
    2 price, 1 volume lines

130.t	: shire.csv
    Lines which use other lines
    Scaling test on foreign graph
    moving_average, greater_than
    price= 2 avg + 1 level, volume=, level= 1

140.t	: mrw.csv, sbry.csv, sfw.csv, tsco.csv
    Multiple pages
    mean of several values from different pages
    use of '*' for sample in line name
    common dates, after
    moving_average, multiline_mean, compare
    retail: price= 1
    4 named: price=1, volume=, level=1

150.t	: MySQL
    Multiple pages from single sample
    mean of several values
    use of '*' for date in line name
    mean is on hidden chart
    moving_average, mean, compare
    4 unnamed: price=1, volume=, level=1

160.t	: egg.csv
    Different date settings
    no lines
    4 pages, data only

170.t	: MySQL, 170.conf, 170.stocks
    Stocks from file (default)
    config file
    2 stocks x 3 dates
    no lines
    6 pages, data only (A5)

171.t	: MySQL, 170.conf, 170.stocks
    Stocks from file (named resource)
    no lines
    2 pages, data only (A5)


172.t	: MySQL, 170.conf, 170.stocks
    Stocks from file (named in sample)
    no lines
    2 pages, data only (A5)

180.t	: shire.csv
    lines
    Test lines using line_dump and line_compare
    highest, lowest, greater_equal, less_equal
    1 page: price=2, volume=2, level=2

181.t	: shire.csv
    testing conditioning of levels, greater_than and less_than
    Test lines using line_dump and line_compare
    show_value control of generated value line
    moving_average, greater_than, less_than
    1 page: price=1 + 1 level, volume=1, level=1

190.t	: mrw.csv
    testing tests with code to be evaluated 
    single code segment, trigger = 0
    lowest, value, mark
    1 page: price=1 + 1 signal, volume=

191.t	: mrw.csv
    testing tests with code to be evaluated 
    first=1, marking low vals
    lowest, value, mark
    1 page: price=1 + 1 signal, volume=

192.t	: mrw.csv
    testing tests with code to be evaluated 
    first=1, marking high vals, adjusted for undefs
    lowest, value, mark
    1 page: price=1 + 1 signal, volume=

193.t	: mrw.csv
    testing tests
      multiple tests
      multiple marks in same code
      custom function call
    display order
    value, moving_average, calculated
    1 page: price=1 + signal, volume=1 + 2 signals

194.t	: mrw.csv
    testing tests
      before/during/after code strings
      printing to file
    moving average
    1 page: price=1 + 1 signal
    output file checked

200.t	: lgen.csv
    historical highs/lows
    historical_high historical_low
    1 page: level=2

210.t	: lgen.csv
    bollinger bands
    bollinger_band
    1 page: price=4

211.t	: lgen.csv
    percentage bands
    percent_band
    1 page: price=6

220.t	: lgen.csv
    momentum
    momentum
    1 page: price=1, volume0, analysis=2 + 1

221.t	: lgen.csv
    gradient
    gradient
    1 page: price=1, volume0, analysis=2 + 1

222.t	: lgen.csv
    rate_of_change
    rate_of_change
    1 page: price=1, volume0, analysis=2 + 1

223.t	: lgen.csv
    comparing rate_of_change, momentum and gradient
    rate_of_change, momentum, gradient
    1 page: price=3, analysis=3x1

230.t	: shire.csv
    rising, falling
    rising, falling
    1 page: level=1, price=2, analysis=1

231.t	: shire.csv
    oversold, undersold
    oversold, undersold
    1 page: price=2, analysis=3

232.t	: lgen.csv
    on_balance_volume
    on_balance_volume
    1 page: analysis=1

240.t	: mrw.csv
    minimum, maximum
    minimum, maximum and before/during/after test
    1 page: price=2, volume=3

241.t	: mrw.csv
    standard_deviation
    standard_deviation and before/during test
    showing values and marks
    stock2 prices
    1 page: price=5, volume=4, analysis=6

242.t	: mrw.csv, tsco.csv
    minimum, maximum, standard_deviation, sample_mean, exponential_average
    sample_mean, tests over multiple pages, 
    names, group, literal sources
    values both before and after
    2 pages: price=3, analysis=1

243.t	: mrw.csv, tsco.csv
    bollinger_band, moving_average
    Testing line names within tests:
      fqln, wildcard, regexp, relative, aliased
      including multiples, scalar and array variables;
    Passing data from before to after;
    Calling external subroutine, passing and returning value;
    Passing global variables to and from code fragment;
    2 pages: price=3,2


