File: eval.cf

package info (click to toggle)
cfengine3 3.24.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 37,552 kB
  • sloc: ansic: 163,161; sh: 10,296; python: 2,950; makefile: 1,744; lex: 784; yacc: 633; perl: 211; pascal: 157; xml: 21; sed: 13
file content (156 lines) | stat: -rw-r--r-- 5,551 bytes parent folder | download | duplicates (3)
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";
}