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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
#######################################################
#
# Test eval()
#
#######################################################
body common control
{
inputs => { "../../default.cf.sub" };
bundlesequence => { default("$(this.promise_filename)") };
version => "1.0";
}
#######################################################
bundle agent init
{
vars:
"values[0]" string => "x";
"values[1]" string => "+ 200";
"values[2]" string => "200 + 100";
"values[3]" string => "200 - 100";
"values[4]" string => "- - -";
"values[5]" string => "2 - (3 - 1)";
"values[6]" string => "";
"values[7]" string => "3 / 0";
"values[8]" string => "3^3";
"values[9]" string => "(-1)^2";
"values[10]" string => "sin(20)";
"values[11]" string => "cos(20)";
"values[12]" string => "asin(0.2)";
"values[13]" string => "acos(0.2)";
"values[14]" string => "tan(20)";
"values[15]" string => "atan(0.2)";
"values[16]" string => "log(0.2)";
"values[17]" string => "ln2";
"values[18]" string => "ln10";
"values[19]" string => "20 % 3";
"values[20]" string => "sqrt(0.2)";
"values[21]" string => "ceil(3.5)";
"values[22]" string => "floor(3.4)";
"values[23]" string => "abs(-3.4)";
"values[24]" string => "-3.4 -3.4";
"values[25]" string => "-3.400000 -3.400001";
"values[26]" string => "pi";
"values[27]" string => "e";
"values[28]" string => "10 == 10";
"values[29]" string => "10 == 11";
"values[30]" string => "3**0";
"values[31]" string => "step(10)";
"values[32]" string => "step(-10)";
"values[33]" string => "100k";
"values[34]" string => "(200m - 100k) / (2t + 2t)";
"values[35]" string => "10 > 10";
"values[36]" string => "10 > 11";
"values[37]" string => "10 >= 10";
"values[38]" string => "10 >= 11";
"values[39]" string => "10 < 10";
"values[40]" string => "10 < 11";
"values[41]" string => "10 <= 10";
"values[42]" string => "10 <= 11";
"values[43]" -> { "CFE-2762" } string => "1 * .75";
}
#######################################################
bundle agent test
{
vars:
"indices" slist => getindices("init.values");
# convert the result to lowercase because some platforms use 'inf'
# and others 'Inf' and others... you don't wanna know
"eval[$(indices)]" string => string_downcase(eval("$(init.values[$(indices)])"));
}
#######################################################
bundle agent check
{
vars:
# note this test will be MUCH more accurate when we have sprintf and rounding
"verify[0]" string => '';
"verify[1]" string => '';
"verify[2]" string => '300.000000';
"verify[3]" string => '100.000000';
"verify[4]" string => '';
"verify[5]" string => '0.000000';
"verify[6]" string => '0.000000';
"verify[7]" string => 'inf';
"verify[8]" string => '27.000000';
"verify[9]" string => '1.000000';
"verify[10]" string => '0.912945';
"verify[11]" string => '0.408082';
"verify[12]" string => '0.201358';
"verify[13]" string => '1.369438';
"verify[14]" string => '2.237161';
"verify[15]" string => '0.197396';
"verify[16]" string => '-1.609438';
"verify[17]" string => '0.693147';
"verify[18]" string => '2.302585';
"verify[19]" string => '2.000000';
"verify[20]" string => '0.447214';
"verify[21]" string => '4.000000';
"verify[22]" string => '3.000000';
"verify[23]" string => '3.400000';
"verify[24]" string => '-6.800000';
"verify[25]" string => '-6.800001';
"verify[26]" string => '3.141593';
"verify[27]" string => '2.718282';
"verify[28]" string => '1.000000';
"verify[29]" string => '0.000000';
"verify[30]" string => '1.000000';
"verify[31]" string => '1.000000';
"verify[32]" string => '0.000000';
"verify[33]" string => '100000.000000';
"verify[34]" string => '0.000050';
"verify[35]" string => '0.000000';
"verify[36]" string => '0.000000';
"verify[37]" string => '1.000000';
"verify[38]" string => '0.000000';
"verify[39]" string => '0.000000';
"verify[40]" string => '1.000000';
"verify[41]" string => '1.000000';
"verify[42]" string => '1.000000';
"verify[43]" -> { "CFE-2762" } string => '0.750000';
"indices" slist => getindices("verify");
classes:
"ok_$(indices)" expression => strcmp("$(test.eval[$(indices)])", "$(verify[$(indices)])");
"not_ok_$(indices)" not => strcmp("$(test.eval[$(indices)])", "$(verify[$(indices)])");
"ok" and => { ok_0, ok_1, ok_3, ok_4, ok_5, ok_6, ok_7, ok_8,
ok_9, ok_10, ok_11, ok_13, ok_14, ok_15, ok_16,
ok_17, ok_18, ok_19, ok_20, ok_21, ok_23, ok_24,
ok_25, ok_26, ok_27, ok_28, ok_29, ok_30, ok_31,
ok_32, ok_33, ok_34, ok_35, ok_36, ok_37, ok_38,
ok_39, ok_40, ok_41, ok_42, ok_43
};
reports:
DEBUG::
"OK math $(indices) eval('$(init.values[$(indices)])') = '$(test.eval[$(indices)])'"
if => "ok_$(indices)";
"FAIL math $(indices) eval('$(init.values[$(indices)])') = '$(test.eval[$(indices)])' (expected '$(verify[$(indices)])')"
if => "not_ok_$(indices)";
ok::
"$(this.promise_filename) Pass";
!ok::
"$(this.promise_filename) FAIL";
}
|