scansion/generator.lua

Sun, 30 Dec 2018 09:43:36 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sun, 30 Dec 2018 09:43:36 +0000
changeset 164
14500a149b31
parent 43
b37504fa3031
permissions
-rw-r--r--

client: Ignore timeout timer if we received a stanza

41
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local it = require "scansion.iterators";
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local script_methods = {};
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
43
b37504fa3031 Add annotations to actions (by grabbing the preceding comment)
Matthew Wild <mwild1@gmail.com>
parents: 41
diff changeset
5 local excluded_fields = { name = true, defined_line = true, type = true, annotation = true };
41
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 function script_methods:client(data)
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 self:_append("["..data.name.."]");
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 for k, v in pairs(data) do
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 if not excluded_fields[k] then
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 self:_append("", k..": "..v);
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 self:_append("");
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 function script_methods:action(name, verb, data)
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 if self.in_header then
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 self.in_header = false;
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 self:_append("----------");
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 self:_append("");
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 self:_append(name.." "..verb..(data and ":" or ""));
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if data then
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 for s in tostring(data):gmatch("[^\n]+") do
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 self:_append("", s);
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 self:_append("");
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 function script_methods:_append(...)
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 local fields = { ... };
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 for i = 1, select("#", ...) do
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 fields[i] = tostring(fields[i]);
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 table.insert(self.lines, table.concat(fields, "\t"));
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 function script_methods:lines()
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 return it.values(self.lines);
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 function script_methods:render()
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 return table.concat(self.lines, "\n");
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 end
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 local script_mt = { __index = script_methods };
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 return {
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 new_script = function ()
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 return setmetatable({ in_header = true, n_clients = 0, clients = {} }, script_mt);
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 end;
623f94abe7a0 scansion.generator: Initial basic lib to generate test scripts
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 }

mercurial