dsntk_examples/examples/mod.rs
1//! # Examples of decision tables in text form
2//!
3//! Decision tables defined in this module are used to test
4//! the functionality of **decision tables** crate.
5//!
6//! ### Estimation of the number of all possible decision table types
7//!
8//! ```ORI 3``` *ORIENTATION* **horizontal**, **vertical**, **crosstab**
9//!
10//! ```ITN 2``` *INFORMATION-ITEM-NAME* **present**, **not present**
11//!
12//! ```OLB 2``` *OUTPUT-LABEL* **present**, **not present**
13//!
14//! ```IOV 2``` *INPUT-OUTPUT-VALUES* **present**, **not present**
15//!
16//! ```OUT 2``` *OUTPUTS* **single**, **multiple**
17//!
18//! ```ANN 2``` *ANNOTATIONS* **present**, **not present**
19//!
20//! ```text
21//! ┌─────┬─────┬─────┬─────┬─────┬─────┬────────────────────┬─────────┐
22//! │ ORI │ ITN │ OLB │ IOV │ OUT │ ANN │ Remarks │ Example │
23//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
24//! │ HT │ NO │ NO │ NO │ SGL │ NO │ │ EX_0001 │
25//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
26//! │ HT │ NO │ NO │ NO │ SGL │ YES │ │ EX_0002 │
27//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
28//! │ HT │ NO │ NO │ NO │ MUL │ NO │ │ EX_0003 │
29//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
30//! │ HT │ NO │ NO │ NO │ MUL │ YES │ │ EX_0004 │
31//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
32//! │ HT │ NO │ NO │ YES │ SGL │ NO │ │ EX_0005 │
33//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
34//! │ HT │ NO │ NO │ YES │ SGL │ YES │ │ EX_0006 │
35//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
36//! │ HT │ NO │ NO │ YES │ MUL │ NO │ │ EX_0007 │
37//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
38//! │ HT │ NO │ NO │ YES │ MUL │ YES │ │ EX_0008 │
39//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
40//! │ HT │ NO │ YES │ NO │ SGL │ NO │ │ EX_0009 │
41//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
42//! │ HT │ NO │ YES │ NO │ SGL │ YES │ │ EX_0010 │
43//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
44//! │ HT │ NO │ YES │ NO │ MUL │ NO │ │ EX_0011 │
45//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
46//! │ HT │ NO │ YES │ NO │ MUL │ YES │ │ EX_0012 │
47//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
48//! │ HT │ NO │ YES │ YES │ SGL │ NO │ │ EX_0013 │
49//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
50//! │ HT │ NO │ YES │ YES │ SGL │ YES │ │ EX_0014 │
51//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
52//! │ HT │ NO │ YES │ YES │ MUL │ NO │ │ EX_0015 │
53//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
54//! │ HT │ NO │ YES │ YES │ MUL │ YES │ │ EX_0016 │
55//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
56//! │ HT │ YES │ NO │ NO │ SGL │ NO │ │ EX_0017 │
57//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
58//! │ HT │ YES │ NO │ NO │ SGL │ YES │ │ EX_0018 │
59//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
60//! │ HT │ YES │ NO │ NO │ MUL │ NO │ │ EX_0019 │
61//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
62//! │ HT │ YES │ NO │ NO │ MUL │ YES │ │ EX_0020 │
63//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
64//! │ HT │ YES │ NO │ YES │ SGL │ NO │ │ EX_0021 │
65//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
66//! │ HT │ YES │ NO │ YES │ SGL │ YES │ │ EX_0022 │
67//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
68//! │ HT │ YES │ NO │ YES │ MUL │ NO │ │ EX_0023 │
69//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
70//! │ HT │ YES │ NO │ YES │ MUL │ YES │ │ EX_0024 │
71//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
72//! │ HT │ YES │ YES │ NO │ SGL │ NO │ │ EX_0025 │
73//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
74//! │ HT │ YES │ YES │ NO │ SGL │ YES │ │ EX_0026 │
75//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
76//! │ HT │ YES │ YES │ NO │ MUL │ NO │ │ EX_0027 │
77//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
78//! │ HT │ YES │ YES │ NO │ MUL │ YES │ │ EX_0028 │
79//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
80//! │ HT │ YES │ YES │ YES │ SGL │ NO │ │ EX_0029 │
81//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
82//! │ HT │ YES │ YES │ YES │ SGL │ YES │ │ EX_0030 │
83//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
84//! │ HT │ YES │ YES │ YES │ MUL │ NO │ │ EX_0031 │
85//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
86//! │ HT │ YES │ YES │ YES │ MUL │ YES │ │ EX_0032 │
87//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
88//! │ VT │ NO │ NO │ NO │ SGL │ NO │ │ EX_0033 │
89//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
90//! │ VT │ NO │ NO │ NO │ SGL │ YES │ │ EX_0034 │
91//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
92//! │ VT │ NO │ NO │ NO │ MUL │ NO │ │ EX_0035 │
93//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
94//! │ VT │ NO │ NO │ NO │ MUL │ YES │ │ EX_0036 │
95//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
96//! │ VT │ NO │ NO │ YES │ SGL │ NO │ │ EX_0037 │
97//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
98//! │ VT │ NO │ NO │ YES │ SGL │ YES │ │ EX_0038 │
99//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
100//! │ VT │ NO │ NO │ YES │ MUL │ NO │ │ EX_0039 │
101//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
102//! │ VT │ NO │ NO │ YES │ MUL │ YES │ │ EX_0040 │
103//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
104//! │ VT │ NO │ YES │ NO │ SGL │ NO │ │ EX_0041 │
105//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
106//! │ VT │ NO │ YES │ NO │ SGL │ YES │ │ EX_0042 │
107//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
108//! │ VT │ NO │ YES │ NO │ MUL │ NO │ │ EX_0043 │
109//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
110//! │ VT │ NO │ YES │ NO │ MUL │ YES │ │ EX_0044 │
111//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
112//! │ VT │ NO │ YES │ YES │ SGL │ NO │ │ EX_0045 │
113//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
114//! │ VT │ NO │ YES │ YES │ SGL │ YES │ │ EX_0046 │
115//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
116//! │ VT │ NO │ YES │ YES │ MUL │ NO │ │ EX_0047 │
117//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
118//! │ VT │ NO │ YES │ YES │ MUL │ YES │ │ EX_0048 │
119//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
120//! │ VT │ YES │ NO │ NO │ SGL │ NO │ │ EX_0049 │
121//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
122//! │ VT │ YES │ NO │ NO │ SGL │ YES │ │ EX_0050 │
123//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
124//! │ VT │ YES │ NO │ NO │ MUL │ NO │ │ EX_0051 │
125//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
126//! │ VT │ YES │ NO │ NO │ MUL │ YES │ │ EX_0052 │
127//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
128//! │ VT │ YES │ NO │ YES │ SGL │ NO │ │ EX_0053 │
129//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
130//! │ VT │ YES │ NO │ YES │ SGL │ YES │ │ EX_0054 │
131//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
132//! │ VT │ YES │ NO │ YES │ MUL │ NO │ │ EX_0055 │
133//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
134//! │ VT │ YES │ NO │ YES │ MUL │ YES │ │ EX_0056 │
135//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
136//! │ VT │ YES │ YES │ NO │ SGL │ NO │ │ EX_0057 │
137//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
138//! │ VT │ YES │ YES │ NO │ SGL │ YES │ │ EX_0058 │
139//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
140//! │ VT │ YES │ YES │ NO │ MUL │ NO │ │ EX_0059 │
141//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
142//! │ VT │ YES │ YES │ NO │ MUL │ YES │ │ EX_0060 │
143//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
144//! │ VT │ YES │ YES │ YES │ SGL │ NO │ │ EX_0061 │
145//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
146//! │ VT │ YES │ YES │ YES │ SGL │ YES │ │ EX_0062 │
147//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
148//! │ VT │ YES │ YES │ YES │ MUL │ NO │ │ EX_0063 │
149//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
150//! │ VT │ YES │ YES │ YES │ MUL │ YES │ │ EX_0064 │
151//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
152//! │ CT │ NO │ NO │ NO │ SGL │ NO │ │ EX_0065 │
153//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
154//! │ CT │ NO │ NO │ NO │ SGL │ YES │ postponed │ EX_0066 │
155//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
156//! │ CT │ NO │ NO │ NO │ MUL │ NO │ │ EX_0067 │
157//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
158//! │ CT │ NO │ NO │ NO │ MUL │ YES │ postponed │ EX_0068 │
159//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
160//! │ CT │ NO │ NO │ YES │ SGL │ NO │ │ EX_0069 │
161//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
162//! │ CT │ NO │ NO │ YES │ SGL │ YES │ postponed │ EX_0070 │
163//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
164//! │ CT │ NO │ NO │ YES │ MUL │ NO │ │ EX_0071 │
165//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
166//! │ CT │ NO │ NO │ YES │ MUL │ YES │ postponed │ EX_0072 │
167//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
168//! │ CT │ NO │ YES │ NO │ SGL │ NO │ │ EX_0073 │
169//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
170//! │ CT │ NO │ YES │ NO │ SGL │ YES │ postponed │ EX_0074 │
171//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
172//! │ CT │ NO │ YES │ NO │ MUL │ NO │ │ EX_0075 │
173//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
174//! │ CT │ NO │ YES │ NO │ MUL │ YES │ postponed │ EX_0076 │
175//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
176//! │ CT │ NO │ YES │ YES │ SGL │ NO │ │ EX_0077 │
177//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
178//! │ CT │ NO │ YES │ YES │ SGL │ YES │ postponed │ EX_0078 │
179//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
180//! │ CT │ NO │ YES │ YES │ MUL │ NO │ │ EX_0079 │
181//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
182//! │ CT │ NO │ YES │ YES │ MUL │ YES │ postponed │ EX_0080 │
183//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
184//! │ CT │ YES │ NO │ NO │ SGL │ NO │ │ EX_0081 │
185//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
186//! │ CT │ YES │ NO │ NO │ SGL │ YES │ postponed │ EX_0082 │
187//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
188//! │ CT │ YES │ NO │ NO │ MUL │ NO │ │ EX_0083 │
189//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
190//! │ CT │ YES │ NO │ NO │ MUL │ YES │ postponed │ EX_0084 │
191//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
192//! │ CT │ YES │ NO │ YES │ SGL │ NO │ │ EX_0085 │
193//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
194//! │ CT │ YES │ NO │ YES │ SGL │ YES │ postponed │ EX_0086 │
195//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
196//! │ CT │ YES │ NO │ YES │ MUL │ NO │ │ EX_0087 │
197//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
198//! │ CT │ YES │ NO │ YES │ MUL │ YES │ postponed │ EX_0088 │
199//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
200//! │ CT │ YES │ YES │ NO │ SGL │ NO │ │ EX_0089 │
201//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
202//! │ CT │ YES │ YES │ NO │ SGL │ YES │ postponed │ EX_0090 │
203//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
204//! │ CT │ YES │ YES │ NO │ MUL │ NO │ │ EX_0091 │
205//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
206//! │ CT │ YES │ YES │ NO │ MUL │ YES │ postponed │ EX_0092 │
207//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
208//! │ CT │ YES │ YES │ YES │ SGL │ NO │ │ EX_0093 │
209//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
210//! │ CT │ YES │ YES │ YES │ SGL │ YES │ postponed │ EX_0094 │
211//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
212//! │ CT │ YES │ YES │ YES │ MUL │ NO │ │ EX_0095 │
213//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
214//! │ CT │ YES │ YES │ YES │ MUL │ YES │ postponed │ EX_0096 │
215//! ├─────┼─────┼─────┼─────┼─────┼─────┼────────────────────┼─────────┤
216//! │ CT │ YES │ YES │ NO │ SGL │ NO │ Three inputs. │ EX_0097 │
217//! └─────┴─────┴─────┴─────┴─────┴─────┴────────────────────┴─────────┘
218//! ```
219
220pub mod valid;
221
222pub const EXAMPLE_0001_DTB: &str = r#"
223 ┌───┬──────────┬───────╥──────┐
224 │ U │ Customer │ Order ║ │
225 ╞═══╪══════════╪═══════╬══════╡
226 │ 1 │ Business │ <10 ║ 0.10 │
227 ├───┼──────────┼───────╫──────┤
228 │ 2 │ Business │ >=10 ║ 0.15 │
229 ├───┼──────────┼───────╫──────┤
230 │ 3 │ Private │ - ║ 0.05 │
231 └───┴──────────┴───────╨──────┘
232"#;
233
234pub const EXAMPLE_0001_CTX: &str = r#"
235{
236 Customer: "Business",
237 Order: 10.00
238}
239"#;
240
241pub const EXAMPLE_0002_DTB: &str = r#"
242 ┌───────────────────────╥───────────────┬──────────┬───────────────┐
243 │ Applicant age ║ <25 │ [25..60] │ >60 │
244 ├───────────────────────╫──────┬────────┼──────────┼────────┬──────┤
245 │ Medical history ║ good │ bad │ - │ good │ bad │
246 ╞═══════════════════════╬══════╪════════╪══════════╪════════╪══════╡
247 │ Applicant risk rating ║ Low │ Medium │ Medium │ Medium │ High │
248 ├───────────────────────╫──────┼────────┼──────────┼────────┼──────┤
249 │ Special Discount ║ 10 │ 7 │ 6 │ 4 │ 0 │
250 ├───────────────────────╫──────┼────────┼──────────┼────────┼──────┤
251 │ U ║ 1 │ 2 │ 3 │ 4 │ 5 │
252 └───────────────────────╨──────┴────────┴──────────┴────────┴──────┘
253% { Applicant age: 20, Medical history: "good" }, {Applicant risk rating: "Low", Special Discount: 10}
254% { Applicant age: 24, Medical history: "bad" }, {Applicant risk rating: "Medium", Special Discount: 7}
255% { Applicant age: 25, Medical history: "good" }, {Applicant risk rating: "Medium", Special Discount: 6}
256% { Applicant age: 25, Medical history: "bad" }, {Applicant risk rating: "Medium", Special Discount: 6}
257% { Applicant age: 60, Medical history: "good" }, {Applicant risk rating: "Medium", Special Discount: 6}
258% { Applicant age: 60, Medical history: "bad" }, {Applicant risk rating: "Medium", Special Discount: 6}
259% { Applicant age: 61, Medical history: "good" }, {Applicant risk rating: "Medium", Special Discount: 4}
260% { Applicant age: 61, Medical history: "bad" }, {Applicant risk rating: "High", Special Discount: 0}
261% { Applicant age: 61, Medical history: "well" }, null
262"#;
263
264pub const EXAMPLE_0002_CTX: &str = r#"
265{
266 Applicant age: 24,
267 Medical history: "good"
268}
269"#;