###############################################################################
### string tests
###############################################################################
### default method
string value;
### append method
string->append _ext;
### equals method
%if ( string value_ext )
string 2value;
%endif
### match method
%if ( string->match "^2val" )
string 3value;
%endif
### test quoted string parsing
quoted_string "quoted value";
quoted_string "quoted
string
on
multiple
lines
";
special_str "quoted with \"special\" characters";
empty_string "";
### gsub method
gsub_string "foo bar baz bar quux";
gsub_string->gsub("bar", "WHEE");
### string with no value
no_value;
no_value->set;
### absolute path object
path "/usr/local/bin";
###############################################################################
### integer tests
###############################################################################
### default method
integer 0;
integer "-1";
integer 55;
### test math functions
integer 5;
integer->add 1; ### 5 + 1 = 6
integer->sub 2; ### 6 - 2 = 4
integer->mult 10; ### 4 * 10 = 40
integer->div 5; ### 40 / 5 = 8
### conditional tests
%if ( integer->lt 10 )
integer->incr; ### 8++ = 9
%endif
###############################################################################
### boolean tests
###############################################################################
### boolean value
boolean true;
boolean no;
### conditional tests
%if ( boolean )
integer 5;
%elif ( string foo )
integer 10;
%else
integer->decr; ### 9-- = 8
%endif
### this should default to true
bool_no_arg;
###############################################################################
### list tests
###############################################################################
### default method
list [ this, is, a, very, cool, list ];
### delete method
list->delete a;
list->delete [ very, list ];
### empty list parsing
build_list [ ];
### add method
build_list->add bar;
build_list->add [ baz, quux ];
### add_top method
build_list->add_top foo;
### add complex data to lists
complex_list [ "quoted string", 0 ];
complex_list->add [
foo,
[ random, sublist ],
{ sub => hash }
];
###############################################################################
### hash tests
###############################################################################
### default method
hash {
key1 => val1,
key2 => val2,
key3 => val3
};
hash {
foo => 0,
bar => 1,
baz => 2
};
### delete method
hash->delete key1;
hash->delete [ key3, key2 ];
### conditional tests
%if ( string 3value && ( integer 10 || bool_no_arg ) )
hash->delete foo;
%else
hash->delete bar;
%endif
### optional values - can be used to store a unique but unordered list
hash_opt_vals { larry, moe, curly };
hash_opt_vals { key => with_val_in_same_hash };
### complex hash data
hash {
list => [ this, is, a, list ],
hash => { key => val }
};
hash {
list => [ add, list, values ],
hash => { key2 => val2 }
};
### empty hash
empty_hash { };
### hash of lists
hash_ol {
key1 => [ value, must, be, a, list ],
key2 => [ more, list, data ]
};
### hash of hashes
hash_ul {
key1 => { hash, data },
key2 => { more, hash, data }
};
###############################################################################
### table tests
###############################################################################
### default method
table [
[ row, 1, foo ],
[ row, 2, bar ],
[ row, 3, baz ]
];
### insert_row method
table->insert_row( { 2 => bar }, [ row, "1.5", quux ] );
### replace_row_cells method
table->replace_row_cells( { 2 => bar }, { 0 => UNrow } );
### append_to_row_cells method
table->append_to_row_cells( { 2 => bar }, { 0 => again } );
###############################################################################
### conditional tests
###############################################################################
i1 1;
i2 2;
%if ( i1 10 )
i1 20;
% if ( i2 2 )
i2->incr;
% endif
%endif