|
Go to the documentation of this file.
21 using namespace faudes;
39 Generator deter_nondet( "data/deterministic_nondet.gen");
42 deter_det. Write( "tmp_deterministic_det.gen");
43 deter_nondet. Write( "tmp_deterministic_nondet.gen");
46 std::cout << "################################\n";
47 std::cout << "# deterministic generator \n";
49 std::cout << "################################\n";
62 Generator minimal_nonmin( "data/minimal_nonmin.gen");
64 StateMin(minimal_nonmin, minimal_min);
65 minimal_nonmin. Write( "tmp_minimal_nonmin.gen");
66 minimal_min. Write( "tmp_minimal_min.gen");
69 std::cout << "################################\n";
70 std::cout << "# minimal generator \n";
72 std::cout << "################################\n";
84 Generator project_g( "data/project_g.gen");
91 Project(project_g, alph_proj, project_prog);
92 project_g. Write( "tmp_project_g.gen");
97 StateMin(project_prog,project_prog_min);
98 project_prog_min. Write( "tmp_project_prog.gen");
101 std::cout << "################################\n";
102 std::cout << "# projected generator \n";
103 project_prog_min. DWrite();
104 std::cout << "################################\n";
116 Generator parallel_g1( "data/parallel_g1.gen");
117 Generator parallel_g2( "data/parallel_g2.gen");
121 Parallel(parallel_g1, parallel_g2, parallel_g1g2);
124 parallel_g1. Write( "tmp_parallel_g1.gen");
125 parallel_g2. Write( "tmp_parallel_g2.gen");
126 parallel_g1g2. Write( "tmp_parallel_g1g2.gen");
129 Generator parallel_m1( "data/wparallel_g1.gen");
130 Generator parallel_m2( "data/wparallel_g2.gen");
134 Parallel(parallel_m1, parallel_m2, parallel_m1m2);
137 parallel_m1. Write( "tmp_parallel_m1.gen");
138 parallel_m2. Write( "tmp_parallel_m2.gen");
139 parallel_m1m2. Write( "tmp_parallel_m1m2.gen");
142 Generator wparallel_g1( "data/wparallel_g1.gen");
143 Generator wparallel_g2( "data/wparallel_g2.gen");
150 wparallel_g1. Write( "tmp_wparallel_g1.gen");
151 wparallel_g2. Write( "tmp_wparallel_g2.gen");
152 wparallel_g1g2. Write( "tmp_wparallel_g1g2.gen");
165 Generator boolean_g1( "data/boolean_g1.gen");
166 Generator boolean_g2( "data/boolean_g2.gen");
167 Generator lequal_g1( "data/lequal_g1.gen");
168 Generator lequal_g2( "data/lequal_g2.gen");
181 Generator boolean_complement_g1=boolean_g1;
184 Generator boolean_complement2_g1=boolean_complement_g1;
188 boolean_g1. Write( "tmp_boolean_g1.gen");
189 boolean_g2. Write( "tmp_boolean_g2.gen");
190 boolean_union. Write( "tmp_union_g1g2.gen");
191 boolean_intersection. Write( "tmp_intersection_g1g2.gen");
192 boolean_complement_g1. Write( "tmp_complement_g1.gen");
193 boolean_complement2_g1. Write( "tmp_complement2_g1.gen");
196 std::cout << "################################\n";
197 std::cout << "# boolean language operations\n";
199 boolean_intersection. DWrite();
200 boolean_complement_g1. DWrite();
201 std::cout << "################################\n";
204 std::cout << "################################\n";
205 std::cout << "# boolean language operations\n";
207 std::cout << "Lm(g1) <= Lm(g1) v Lm(g2): OK\n";
209 std::cout << "Lm(g1) <= Lm(g1) v Lm(g2): ERR\n";
211 std::cout << "Lm(g1) ^ ~Lm(g1) = empty: OK\n";
213 std::cout << "(Lm(g1) v Lm(g2)) ^ ~(Lm(g1) v Lm(g2)) != empty: ERR\n";
215 std::cout << "Lm(g1) = ~~Lm(g1) : OK\n";
217 std::cout << "Lm(g1) != ~~Lm(g1) : ERR\n";
218 std::cout << "################################\n";
221 std::cout << "################################\n";
222 std::cout << "# boolean language operations for empty Lm(g1)\n";
224 std::cout << "Lm(g1) <= Lm(g2): OK\n";
226 std::cout << "Lm(g1) <= Lm(g2): ERR\n";
228 std::cout << "Lm(g2) <= Lm(g1): ERR\n";
230 std::cout << "~(Lm(g2) <= Lm(g1)): OK\n";
233 std::cout << "Lm(g1) == Lm(g2): ERR\n";
235 std::cout << "Lm(g1) != Lm(g2): OK\n";
250 Generator difference_g1( "data/difference_g1.gen");
251 difference_g1. Write( "tmp_difference_g1.gen");
253 Generator difference_g2( "data/difference_g2.gen");
254 difference_g2. Write( "tmp_difference_g2.gen");
260 difference_g1minusg2. Write( "tmp_difference_g1minusg2.gen");
263 std::cout << "################################\n";
264 std::cout << "# language difference Lm(g1)-Lm(g2) \n";
265 difference_g1minusg2. DWrite();
266 std::cout << "################################\n";
278 Generator automaton_g( "data/automaton_g.gen");
279 automaton_g. Write( "tmp_automaton_g.gen");
283 automaton_g. Write( "tmp_automaton_gRes.gen");
286 std::cout << "################################\n";
287 std::cout << "# automaton from generator \n";
289 std::cout << "################################\n";
299 Generator concat_g1( "data/concat_g1.gen");
300 Generator concat_g2( "data/concat_g2.gen");
301 Generator concat_g3( "data/concat_g3.gen");
302 Generator concat_g4( "data/concat_g4.gen");
303 Generator concat_g5( "data/concat_g5.gen");
304 Generator concat_g6( "data/concat_g6.gen");
305 concat_g1. Write( "tmp_concat_g1.gen");
306 concat_g2. Write( "tmp_concat_g2.gen");
307 concat_g3. Write( "tmp_concat_g3.gen");
308 concat_g4. Write( "tmp_concat_g4.gen");
309 concat_g5. Write( "tmp_concat_g5.gen");
310 concat_g6. Write( "tmp_concat_g6.gen");
314 std::cout << "################################\n";
315 std::cout << "# language concatenation\n";
319 concat. Write( "tmp_concat_g1g3.gen");
322 concat. Write( "tmp_concat_g1g4.gen");
325 concat. Write( "tmp_concat_g2g3.gen");
328 concat. Write( "tmp_concat_g2g4.gen");
331 concat. Write( "tmp_concat_g5g6.gen");
333 std::cout << "################################\n";
345 languages_alphabet. Insert( "a");
346 languages_alphabet. Insert( "b");
353 languages_g. Write( "tmp_languagesFull_result.gen");
356 std::cout << "################################\n";
357 std::cout << "# full language \n";
362 languages_g. Write( "tmp_languagesAlphabet_result.gen");
363 std::cout << "# alphabet language \n";
368 languages_g. Write( "tmp_languagesEmptyString_result.gen");
369 std::cout << "# empty string language \n";
374 languages_g. Write( "tmp_languagesEmpty_result.gen");
375 std::cout << "# empty language \n";
377 std::cout << "################################\n";
388 kleene_g. Write( "tmp_kleene_g.gen");
393 kleene_g. Write( "tmp_kleene_gRes.gen");
396 std::cout << "################################\n";
397 std::cout << "# Kleene closure \n";
399 std::cout << "################################\n";
411 Generator prefixclosure_g( "data/prefixclosure_g.gen");
412 prefixclosure_g. Write( "tmp_prefixclosure_g.gen");
419 prefixclosure_g. Write( "tmp_prefixclosure_gRes.gen");
425 std::cout << "################################\n";
426 std::cout << "# prefix closure \n";
428 std::cout << "# argument was prefix closed (test case error!)\n";
430 std::cout << "# argument was not prefix closed (expected)\n";
431 if(isprefixclosed_gRes)
432 std::cout << "# result is prefix closed (expected)\n";
434 std::cout << "# result is not prefix closed (test case error!)\n";
436 std::cout << "################################\n";
448 Generator omegaclosure_g( "data/omegaclosure_g.gen");
449 omegaclosure_g. Write( "tmp_omegaclosure_g.gen");
456 omegaclosure_g. Write( "tmp_omegaclosure_gRes.gen");
462 std::cout << "################################\n";
463 std::cout << "# omega closure \n";
465 std::cout << "# argument was omega closed (test case error!)\n";
467 std::cout << "# argument was not omega closed (expected)\n";
468 if(isomegaclosed_gRes)
469 std::cout << "# result is omega closed (expected)\n";
471 std::cout << "# result is not omega closed (test case error!)\n";
473 std::cout << "################################\n";
485 Generator selfloop_g( "data/selfloop_g.gen");
486 selfloop_g. Write( "tmp_selfloop_g.gen");
490 selfloop_alphabet. Insert( "e");
491 selfloop_alphabet. Insert( "f");
497 SelfLoop(selfloop_gRes,selfloop_alphabet);
498 selfloop_gRes. Write( "tmp_selfloop_gRes.gen");
501 std::cout << "################################\n";
502 std::cout << "# selfloop, each state \n";
506 selfloop_gRes=selfloop_g;
508 selfloop_gRes. Write( "tmp_selfloopMarked_gRes.gen");
509 std::cout << "# selfloop, marked states \n";
513 selfloop_gRes=selfloop_g;
515 selfloop_gRes. Write( "tmp_selfloopInit_gRes.gen");
516 std::cout << "# selfloop, init state(s) \n";
518 std::cout << "################################\n";
527 std::cout << "################################\n";
528 std::cout << "# non-blocking test \n";
531 std::cout << "# conflict equiv. abstract test 1 \n";
535 nonblocking_g. Read( "data/noblo_gae2.gen");
537 nonblocking_g. Write();
547 nonblocking_gv. PushBack( "data/noblo_g2.gen");
548 nonblocking_gv. PushBack( "data/noblo_g3.gen");
549 nonblocking_gv. PushBack( "data/noblo_g4.gen");
550 nonblocking_gv. PushBack( "data/noblo_g5.gen");
552 std::cout << "# non-blocking exec test 1\n";
553 bool nonblocking_ok1;
556 std::cout << "# non-blocking test: passed (expected)\n";
558 std::cout << "# non-blocking test: failed (test case error!)\n";
563 nonblocking_gv. Clear();
564 nonblocking_gv. PushBack( "data/noblo_g5.gen");
565 nonblocking_gv. PushBack( "data/noblo_g6.gen");
566 nonblocking_gv. PushBack( "data/noblo_g7.gen");
567 nonblocking_gv. PushBack( "data/noblo_g8.gen");
568 nonblocking_gv. PushBack( "data/noblo_g9.gen");
570 std::cout << "# non-blocking exec test 2\n";
571 bool nonblocking_ok2;
574 std::cout << "# non-blocking test: passed (expected)\n";
576 std::cout << "# non-blocking test: failed (test case error!)\n";
581 nonblocking_gv. Clear();
582 nonblocking_gv. PushBack( "data/noblo_g3.gen");
583 nonblocking_gv. PushBack( "data/noblo_g4.gen");
584 nonblocking_gv. PushBack( "data/noblo_g5.gen");
585 nonblocking_gv. PushBack( "data/noblo_g6.gen");
586 nonblocking_gv. PushBack( "data/noblo_g7.gen");
588 std::cout << "# non-blocking exec test 3\n";
589 bool nonblocking_ok3;
592 std::cout << "# non-blocking test: passed (test case error!)\n";
594 std::cout << "# non-blocking test: failed (expected)\n";
599 nonblocking_gv. Clear();
600 nonblocking_gv. PushBack( "data/noblo_g1.gen");
601 nonblocking_gv. PushBack( "data/noblo_g3.gen");
602 nonblocking_gv. PushBack( "data/noblo_g5.gen");
603 nonblocking_gv. PushBack( "data/noblo_g7.gen");
605 std::cout << "# non-blocking exec test 4\n";
606 bool nonblocking_ok4;
609 std::cout << "# non-blocking test: passed (test case error!)\n";
611 std::cout << "# non-blocking test: failed (expected)\n";
687 std::cout << "done.\n";
libFAUDES 2.28a
--- 2016.09.13
--- c++ api documentaion by doxygen
|