|
|
Go to the documentation of this file.
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");
155 Generator boolean_g1( "data/boolean_g1.gen");
156 Generator boolean_g2( "data/boolean_g2.gen");
157 Generator lequal_g1( "data/lequal_g1.gen");
158 Generator lequal_g2( "data/lequal_g2.gen");
171 Generator boolean_complement_g1=boolean_g1;
174 Generator boolean_complement2_g1=boolean_complement_g1;
178 boolean_g1. Write( "tmp_boolean_g1.gen");
179 boolean_g2. Write( "tmp_boolean_g2.gen");
180 boolean_union. Write( "tmp_union_g1g2.gen");
181 boolean_intersection. Write( "tmp_intersection_g1g2.gen");
182 boolean_complement_g1. Write( "tmp_complement_g1.gen");
183 boolean_complement2_g1. Write( "tmp_complement2_g1.gen");
186 std::cout << "################################\n";
187 std::cout << "# boolean language operations\n";
189 boolean_intersection. DWrite();
190 boolean_complement_g1. DWrite();
191 std::cout << "################################\n";
194 std::cout << "################################\n";
195 std::cout << "# boolean language operations\n";
197 std::cout << "Lm(g1) <= Lm(g1) v Lm(g2): OK\n";
199 std::cout << "Lm(g1) <= Lm(g1) v Lm(g2): ERR\n";
201 std::cout << "Lm(g1) ^ ~Lm(g1) = empty: OK\n";
203 std::cout << "(Lm(g1) v Lm(g2)) ^ ~(Lm(g1) v Lm(g2)) != empty: ERR\n";
205 std::cout << "Lm(g1) = ~~Lm(g1) : OK\n";
207 std::cout << "Lm(g1) != ~~Lm(g1) : ERR\n";
208 std::cout << "################################\n";
211 std::cout << "################################\n";
212 std::cout << "# boolean language operations for empty Lm(g1)\n";
214 std::cout << "Lm(g1) <= Lm(g2): OK\n";
216 std::cout << "Lm(g1) <= Lm(g2): ERR\n";
218 std::cout << "Lm(g2) <= Lm(g1): ERR\n";
220 std::cout << "~(Lm(g2) <= Lm(g1)): OK\n";
223 std::cout << "Lm(g1) == Lm(g2): ERR\n";
225 std::cout << "Lm(g1) != Lm(g2): OK\n";
240 Generator difference_g1( "data/difference_g1.gen");
241 difference_g1. Write( "tmp_difference_g1.gen");
243 Generator difference_g2( "data/difference_g2.gen");
244 difference_g2. Write( "tmp_difference_g2.gen");
250 difference_g1minusg2. Write( "tmp_difference_g1minusg2.gen");
253 std::cout << "################################\n";
254 std::cout << "# language difference Lm(g1)-Lm(g2) \n";
255 difference_g1minusg2. DWrite();
256 std::cout << "################################\n";
268 Generator automaton_g( "data/automaton_g.gen");
269 automaton_g. Write( "tmp_automaton_g.gen");
273 automaton_g. Write( "tmp_automaton_gRes.gen");
276 std::cout << "################################\n";
277 std::cout << "# automaton from generator \n";
279 std::cout << "################################\n";
291 Generator concat_g1( "data/concat_g1.gen");
292 Generator concat_g2( "data/concat_g2.gen");
293 Generator concat_g3( "data/concat_g3.gen");
294 Generator concat_g4( "data/concat_g4.gen");
295 Generator concat_g5( "data/concat_g5.gen");
296 Generator concat_g6( "data/concat_g6.gen");
297 concat_g1. Write( "tmp_concat_g1.gen");
298 concat_g2. Write( "tmp_concat_g2.gen");
299 concat_g3. Write( "tmp_concat_g3.gen");
300 concat_g4. Write( "tmp_concat_g4.gen");
301 concat_g5. Write( "tmp_concat_g5.gen");
302 concat_g6. Write( "tmp_concat_g6.gen");
306 std::cout << "################################\n";
307 std::cout << "# language concatenation\n";
311 concat. Write( "tmp_concat_g1g3.gen");
314 concat. Write( "tmp_concat_g1g4.gen");
317 concat. Write( "tmp_concat_g2g3.gen");
320 concat. Write( "tmp_concat_g2g4.gen");
323 concat. Write( "tmp_concat_g5g6.gen");
325 std::cout << "################################\n";
337 languages_alphabet. Insert( "a");
338 languages_alphabet. Insert( "b");
345 languages_g. Write( "tmp_languagesFull_result.gen");
348 std::cout << "################################\n";
349 std::cout << "# full language \n";
354 languages_g. Write( "tmp_languagesAlphabet_result.gen");
355 std::cout << "# alphabet language \n";
360 languages_g. Write( "tmp_languagesEmptyString_result.gen");
361 std::cout << "# empty string language \n";
366 languages_g. Write( "tmp_languagesEmpty_result.gen");
367 std::cout << "# empty language \n";
369 std::cout << "################################\n";
379 Generator kleene_g1( "data/kleene_g1.gen");
380 kleene_g1. Write( "tmp_kleene_g1.gen");
385 kleene_g1. Write( "tmp_kleene_g1Res.gen");
388 std::cout << "################################\n";
389 std::cout << "# Kleene closure \n";
391 std::cout << "################################\n";
398 Generator kleene_g2( "data/kleene_g2.gen");
399 kleene_g2. Write( "tmp_kleene_g2.gen");
404 kleene_g2. Write( "tmp_kleene_g2Res.gen");
407 std::cout << "################################\n";
408 std::cout << "# Kleene closure \n";
410 std::cout << "################################\n";
421 Generator prefixclosure_g( "data/prefixclosure_g.gen");
422 prefixclosure_g. Write( "tmp_prefixclosure_g.gen");
425 bool isprefixclosed_g = IsClosed(prefixclosure_g);
429 prefixclosure_g. Write( "tmp_prefixclosure_gRes.gen");
432 bool isprefixclosed_gRes = IsClosed(prefixclosure_g);
435 std::cout << "################################\n";
436 std::cout << "# prefix closure \n";
438 std::cout << "# argument was prefix closed (test case error!)\n";
440 std::cout << "# argument was not prefix closed (expected)\n";
441 if(isprefixclosed_gRes)
442 std::cout << "# result is prefix closed (expected)\n";
444 std::cout << "# result is not prefix closed (test case error!)\n";
446 std::cout << "################################\n";
458 Generator selfloop_g( "data/selfloop_g.gen");
459 selfloop_g. Write( "tmp_selfloop_g.gen");
463 selfloop_alphabet. Insert( "e");
464 selfloop_alphabet. Insert( "f");
470 SelfLoop(selfloop_gRes,selfloop_alphabet);
471 selfloop_gRes. Write( "tmp_selfloop_gRes.gen");
474 std::cout << "################################\n";
475 std::cout << "# selfloop, each state \n";
479 selfloop_gRes=selfloop_g;
481 selfloop_gRes. Write( "tmp_selfloopMarked_gRes.gen");
482 std::cout << "# selfloop, marked states \n";
486 selfloop_gRes=selfloop_g;
488 selfloop_gRes. Write( "tmp_selfloopInit_gRes.gen");
489 std::cout << "# selfloop, init state(s) \n";
491 std::cout << "################################\n";
500 std::cout << "################################\n";
501 std::cout << "# non-blocking test \n";
504 std::cout << "# conflict equiv. abstract test 1 \n";
508 nonblocking_g. Read( "data/noblo_gae2.gen");
510 nonblocking_g. Write();
520 nonblocking_gv. PushBack( "data/noblo_g2.gen");
521 nonblocking_gv. PushBack( "data/noblo_g3.gen");
522 nonblocking_gv. PushBack( "data/noblo_g4.gen");
523 nonblocking_gv. PushBack( "data/noblo_g5.gen");
525 std::cout << "# non-blocking exec test 1\n";
526 bool nonblocking_ok1;
529 std::cout << "# non-blocking test: passed (expected)\n";
531 std::cout << "# non-blocking test: failed (test case error!)\n";
536 nonblocking_gv. Clear();
537 nonblocking_gv. PushBack( "data/noblo_g5.gen");
538 nonblocking_gv. PushBack( "data/noblo_g6.gen");
539 nonblocking_gv. PushBack( "data/noblo_g7.gen");
540 nonblocking_gv. PushBack( "data/noblo_g8.gen");
541 nonblocking_gv. PushBack( "data/noblo_g9.gen");
543 std::cout << "# non-blocking exec test 2\n";
544 bool nonblocking_ok2;
547 std::cout << "# non-blocking test: passed (expected)\n";
549 std::cout << "# non-blocking test: failed (test case error!)\n";
554 nonblocking_gv. Clear();
555 nonblocking_gv. PushBack( "data/noblo_g3.gen");
556 nonblocking_gv. PushBack( "data/noblo_g4.gen");
557 nonblocking_gv. PushBack( "data/noblo_g5.gen");
558 nonblocking_gv. PushBack( "data/noblo_g6.gen");
559 nonblocking_gv. PushBack( "data/noblo_g7.gen");
561 std::cout << "# non-blocking exec test 3\n";
562 bool nonblocking_ok3;
565 std::cout << "# non-blocking test: passed (test case error!)\n";
567 std::cout << "# non-blocking test: failed (expected)\n";
572 nonblocking_gv. Clear();
573 nonblocking_gv. PushBack( "data/noblo_g1.gen");
574 nonblocking_gv. PushBack( "data/noblo_g3.gen");
575 nonblocking_gv. PushBack( "data/noblo_g5.gen");
576 nonblocking_gv. PushBack( "data/noblo_g7.gen");
578 std::cout << "# non-blocking exec test 4\n";
579 bool nonblocking_ok4;
582 std::cout << "# non-blocking test: passed (test case error!)\n";
584 std::cout << "# non-blocking test: failed (expected)\n";
589 nonblocking_gv. Clear();
590 nonblocking_gv. PushBack( "data/noblo_g1.gen");
591 nonblocking_gv. PushBack( "data/noblo_g2.gen");
592 nonblocking_gv. PushBack( "data/noblo_g3.gen");
593 nonblocking_gv. PushBack( "data/noblo_g6.gen");
594 nonblocking_gv. PushBack( "data/noblo_g7.gen");
596 std::cout << "# non-blocking exec test 5\n";
597 bool nonblocking_ok5;
600 std::cout << "# non-blocking test: passed (expected)\n";
602 std::cout << "# non-blocking test: failed (test case error!)\n";
605 nonblocking_gv. Clear();
606 nonblocking_gv. PushBack( "data/noblo_g1.gen");
607 nonblocking_gv. PushBack( "data/noblo_g2.gen");
608 nonblocking_gv. PushBack( "data/noblo_g3.gen");
609 nonblocking_gv. PushBack( "data/noblo_g4.gen");
610 nonblocking_gv. PushBack( "data/noblo_g5.gen");
611 nonblocking_gv. PushBack( "data/noblo_g6.gen");
612 nonblocking_gv. PushBack( "data/noblo_g7.gen");
614 std::cout << "# non-blocking exec test 6\n";
615 bool nonblocking_ok6;
618 std::cout << "# non-blocking test: passed (expected)\n";
620 std::cout << "# non-blocking test: failed (test case error!)\n";
623 nonblocking_gv. Clear();
624 nonblocking_gv. PushBack( "data/noblo_g1.gen");
625 nonblocking_gv. PushBack( "data/noblo_g2.gen");
626 nonblocking_gv. PushBack( "data/noblo_g3.gen");
627 nonblocking_gv. PushBack( "data/noblo_g4.gen");
628 nonblocking_gv. PushBack( "data/noblo_g5.gen");
629 nonblocking_gv. PushBack( "data/noblo_g6.gen");
631 std::cout << "# non-blocking exec test 7\n";
632 bool nonblocking_ok7;
635 std::cout << "# non-blocking test: passed (expected)\n";
637 std::cout << "# non-blocking test: failed (test case error!)\n";
640 nonblocking_gv. Clear();
641 nonblocking_gv. PushBack( "data/noblo_g2.gen");
642 nonblocking_gv. PushBack( "data/noblo_g4.gen");
643 nonblocking_gv. PushBack( "data/noblo_g6.gen");
644 nonblocking_gv. PushBack( "data/noblo_g8.gen");
646 std::cout << "# non-blocking exec test 8\n";
647 bool nonblocking_ok8;
650 std::cout << "# non-blocking test: passed (expected)\n";
652 std::cout << "# non-blocking test: failed (test case error!)\n";
656 nonblocking_gv. Clear();
657 nonblocking_gv. PushBack( "data/noblo_yt1.gen");
658 nonblocking_gv. PushBack( "data/noblo_yt2.gen");
661 std::cout << "# non-blocking exec test 9a\n";
663 Parallel(nonblocking_gv. At(0),nonblocking_gv. At(1),parallel12);
664 bool nonblocking_ok9;
667 std::cout << "# non-blocking test: passed (test case error!)\n";
669 std::cout << "# non-blocking test: failed (expected)\n";
674 std::cout << "# non-blocking exec test 9b\n";
677 std::cout << "# non-blocking test: passed (test case error!)\n";
679 std::cout << "# non-blocking test: failed (expected)\n";
687 std::cout << "done.\n";
#define FAUDES_TEST_DIFF()
#define FAUDES_TEST_DUMP(mes, dat)
bool Insert(const Idx &rIndex)
virtual const T & At(const Position &pos) const
void DWrite(const Type *pContext=0) const
void Read(const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
void Write(const Type *pContext=0) const
virtual void PushBack(const Type &rElem)
const StateSet & InitStates(void) const
StateSet BlockingStates(void) const
bool StateNamesEnabled(void) const
bool IsClosed(const Generator &rGen)
void ConflictEquivalentAbstraction(vGenerator &rGen, EventSet &rSilentEvents)
void StateMin(const Generator &rGen, Generator &rResGen)
void FullLanguage(const EventSet &rAlphabet, Generator &rResGen)
void LanguageUnion(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
void SelfLoop(Generator &rGen, const EventSet &rAlphabet)
Idx Automaton(Generator &rGen, const EventSet &rAlphabet)
bool LanguageDisjoint(const Generator &rGen1, const Generator &rGen2)
bool LanguageInclusion(const Generator &rGen1, const Generator &rGen2)
void KleeneClosure(Generator &rGen)
void PrefixClosure(Generator &rGen)
void Deterministic(const Generator &rGen, Generator &rResGen)
void AlphabetLanguage(const EventSet &rAlphabet, Generator &rResGen)
void LanguageConcatenate(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
bool LanguageEquality(const Generator &rGen1, const Generator &rGen2)
void LanguageDifference(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
void LanguageIntersection(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
void Project(const Generator &rGen, const EventSet &rProjectAlphabet, Generator &rResGen)
void EmptyLanguage(const EventSet &rAlphabet, Generator &rResGen)
void Parallel(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
void LanguageComplement(Generator &rGen, const EventSet &rAlphabet)
void EmptyStringLanguage(const EventSet &rAlphabet, Generator &rResGen)
void KleeneClosureNonDet(Generator &rGen)
void SelfLoopMarkedStates(Generator &rGen, const EventSet &rAlphabet)
bool IsNonblocking(const GeneratorVector &rGvec)
libFAUDES 2.33k
--- 2025.09.16
--- c++ api documentaion by doxygen
|