-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path11_epscript.pl
108 lines (73 loc) · 5.34 KB
/
11_epscript.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
use strict;
use Test::More tests => (32);
BEGIN { use_ok( "EPrints" ); }
BEGIN { use_ok( "EPrints::Test" ); }
my $session = EPrints::Test::get_test_session( 0 );
my $rv;
$rv = EPrints::Script::execute( "2", { session=>$session } );
ok( defined $rv, "EPScript returns a value" );
is( $rv->[0], 2, "EPScript returns correct value?" );
is( $rv->[1], "INTEGER", "EPScript returns correct value?" );
$rv = EPrints::Script::execute( '$foo{bar}', { session=>$session, foo=>{ bar=>23 } } );
is( $rv->[0], 23, "Value from a passed parameter" );
$rv = EPrints::Script::execute( '17+9', { session=>$session } );
is( $rv->[0], 26, "17+9: Basic Math" );
$rv = EPrints::Script::execute( '17-9', { session=>$session } );
is( $rv->[0], 8, "17-9: Basic Math" );
$rv = EPrints::Script::execute( '-42', { session=>$session } );
is( $rv->[0], -42, "-42: Unary minus" );
$rv = EPrints::Script::execute( '1--42', { session=>$session } );
is( $rv->[0], 43, "1--42: Unary minus again" );
$rv = EPrints::Script::execute( '-5*---(2+3)', { session=>$session } );
is( $rv->[0], 25, "-5*---(2+3): Unary minus with brackets and stacked uminus" );
$rv = EPrints::Script::execute( '$list.join(":")', { session=>$session, list=>[[1,2,3],"ARRAY"] } );
is( $rv->[0], "1:2:3", "join() function" );
my $mfield = $session->dataset( "user" )->field( "roles" );
$rv = EPrints::Script::execute( '$list.join(":")', { session=>$session, list=>[["a","b","c"],$mfield] } );
is( $rv->[0], "a:b:c", "join() function on a multiple field value" );
# Test one_of()
# Added by QUT, 20130522 for modified one_of() function
# Test original operation, i.e., items as an argument list
# Should match
$rv = EPrints::Script::execute( '$value.one_of("1","2","3")', { session=>$session, value=>["1","STRING"] } );
is( $rv->[0], "1", "one_of() function passed list of items, value matches on lower boundary item" );
$rv = EPrints::Script::execute( '$value.one_of("1","2","3")', { session=>$session, value=>["3","STRING"] } );
is( $rv->[0], "1", "one_of() function passed list of items, value matches on upper boundary item" );
$rv = EPrints::Script::execute( '$value.one_of("1")', { session=>$session, value=>["1","STRING"] } );
is( $rv->[0], "1", "one_of() function passed list with single item, value matches" );
$rv = EPrints::Script::execute( '$value.one_of(1,2,3)', { session=>$session, value=>[1,"INT"] } );
is( $rv->[0], "1", "one_of() function integer values, matching" );
$rv = EPrints::Script::execute( '$value.one_of("one","two","three")', { session=>$session, value=>["one","STRING"] } );
is( $rv->[0], "1", "one_of() function string values, matching" );
# Shouldn't match
$rv = EPrints::Script::execute( '$value.one_of("1","2","3")', { session=>$session, value=>["4","STRING"] } );
is( $rv->[0], "0", "one_of() function passed list of items, value doesn't match" );
$rv = EPrints::Script::execute( '$value.one_of("1")', { session=>$session, value=>["4","STRING"] } );
is( $rv->[0], "0", "one_of() function passed list with single item, value doesn't match" );
$rv = EPrints::Script::execute( '$value.one_of()', { session=>$session, value=>["4","STRING"] } );
is( $rv->[0], "0", "one_of() function passed no arguments, value doesn't match" );
$rv = EPrints::Script::execute( '$value.one_of(1,2,3)', { session=>$session, value=>[4,"INT"] } );
is( $rv->[0], "0", "one_of() function integer values, no match" );
$rv = EPrints::Script::execute( '$value.one_of("one","two","three")', { session=>$session, value=>["four","STRING"] } );
is( $rv->[0], "0", "one_of() function string values, no match" );
# Test array ref operation
# Should match
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>["1","STRING"], array=>[ ["1","2","3"], "ARRAY"] } );
is( $rv->[0], "1", "one_of() function passed array ref, value matches on lower boundary item" );
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>["3","STRING"], array=>[ ["1","2","3"], "ARRAY"] } );
is( $rv->[0], "1", "one_of() function passed array ref, value matches on upper boundary item" );
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>["1","STRING"], array=>[ ["1"], "ARRAY"] } );
is( $rv->[0], "1", "one_of() function passed array ref with single item, value matches" );
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>[1,"INT"], array=>[ [1,2,3], "ARRAY"] } );
is( $rv->[0], "1", "one_of() function passed array ref, integer values, value matches" );
# Shouldn't match
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>["4","STRING"], array=>[ ["1","2","3"], "ARRAY"] } );
is( $rv->[0], "0", "one_of() function passed array ref with multiple elements, value doesn't match" );
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>["4","STRING"], array=>[ ["1"], "ARRAY"] } );
is( $rv->[0], "0", "one_of() function passed array ref with single element, value doesn't match" );
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>["4","STRING"], array=>[ [], "ARRAY"] } );
is( $rv->[0], "0", "one_of() function passed empty array ref arg" );
$rv = EPrints::Script::execute( '$value.one_of($array)', { session=>$session, value=>[4,"INT"], array=>[ [1,2,3], "ARRAY"] } );
is( $rv->[0], "0", "one_of() function passed array ref, integer values, value matches" );
$session->terminate;
ok(1);