1#######################################################
2#
3# Test readintarray(), introduce 777 duplicate key
4#
5# The 5xx tests look at the same thing as their corresponding 4xx tests
6# 500-519 are readintarray, 520-539 test the same things for parseintarray
7#
8#######################################################
9
10body common control
11{
12      inputs => { "../../default.cf.sub" };
13      bundlesequence  => { default("$(this.promise_filename)") };
14      version => "1.0";
15}
16
17bundle agent init
18{
19  files:
20      "$(G.testfile)"
21      delete => init_delete;
22
23      "$(G.testfile)"
24      create => "true",
25      edit_line => init_fill_in;
26}
27
28bundle edit_line init_fill_in
29{
30  insert_lines:
31
32      "0:1:2
33999:888:777:666
34999:000
351:2:3";
36
37}
38
39body delete init_delete
40{
41      dirlinks => "delete";
42      rmdirs   => "true";
43}
44
45#######################################################
46
47bundle agent test
48{
49  vars:
50      "cnt" int => readintarray("ary", "$(G.testfile)","NoComment",":",10,1000);
51      "num" int => "3"; 	# 4 lines, but 3 unique keys
52}
53
54#######################################################
55
56bundle agent check
57{
58  vars:
59      "idx" slist => getindices("test.ary");
60
61  classes:
62      "good" and => {
63		      strcmp("$(test.num)", "$(test.cnt)"),
64
65		      strcmp("$(test.ary[0][0])", "0"),
66		      strcmp("$(test.ary[0][1])", "1"),
67		      strcmp("$(test.ary[0][2])", "2"),
68
69		      # The second value should overwrite the first
70		      strcmp("$(test.ary[999][0])", "999"),
71		      strcmp("$(test.ary[999][1])", "0"),
72
73		      strcmp("$(test.ary[1][0])", "1"),
74		      strcmp("$(test.ary[1][1])", "2"),
75		      strcmp("$(test.ary[1][2])", "3"),
76      };
77
78      # Make sure there are no trailing elements
79      "bad" or => {
80		    isvariable("test.ary[0][3]"),
81		    isvariable("test.ary[999][2]"),
82		    isvariable("test.ary[1][3]"),
83      };
84
85      "ok" expression => "good&!bad";
86
87  reports:
88    DEBUG::
89      "expected $(test.num) entries, saw $(test.cnt)";
90
91      "saw array indices '$(idx)'";
92
93      "expected test.ary[0][0] = '0', saw '$(test.ary[0][0])'";
94      "expected test.ary[0][1] = '1', saw '$(test.ary[0][1])'";
95      "expected test.ary[0][2] = '2', saw '$(test.ary[0][2])'";
96
97      "expected test.ary[999][0] = '999', saw '$(test.ary[999][0])'";
98      "expected test.ary[999][1] = '0', saw '$(test.ary[999][1])'";
99
100      "expected test.ary[1][0] = '1', saw '$(test.ary[1][0])'";
101      "expected test.ary[1][1] = '2', saw '$(test.ary[1][1])'";
102      "expected test.ary[1][2] = '3', saw '$(test.ary[1][2])'";
103
104    ok::
105      "$(this.promise_filename) Pass";
106
107    !ok::
108      "$(this.promise_filename) FAIL";
109}
110