Add testing minimization

This commit is contained in:
MaxanRus 2021-10-11 01:13:50 +03:00
parent 346f0016a5
commit 04109bd54b
6 changed files with 51 additions and 0 deletions

View file

@ -38,6 +38,7 @@ set(TEST_FILES
tests/DFAToRegular/DFAToRegular.cpp
tests/invertFDFA/InvertFDFA.cpp
tests/DFAToRegular/DFAToRegular2.cpp
tests/DFAToMinDFA/CountSizesMinDFA.cpp
)
add_executable(Formalang src/main.cpp ${SOURCE_FILES})

View file

@ -55,6 +55,7 @@ class DFAGraph {
bool NotExistVertex(size_t number);
size_t GetCountVertexes() const;
size_t GetReallyCountVertexes() const;
const std::vector<size_t>& GetFinalVertexes() const;
size_t GetStartVertex() const;

View file

@ -59,6 +59,7 @@ class NFAGraph {
bool NotExistVertex(size_t number);
size_t GetCountVertexes() const;
size_t GetReallyCountVertexes() const;
const std::vector<size_t>& GetFinalVertexes() const;
const std::vector<size_t>& GetStartVertexes() const;

View file

@ -88,6 +88,10 @@ size_t DFAGraph::GetCountVertexes() const {
return count_vertexes_;
}
size_t DFAGraph::GetReallyCountVertexes() const {
return vertexes_.size();
}
const std::vector<size_t>& DFAGraph::GetFinalVertexes() const {
return final_vertexes_;
}

View file

@ -150,6 +150,10 @@ size_t NFAGraph::GetCountVertexes() const {
return count_vertexes_;
}
size_t NFAGraph::GetReallyCountVertexes() const {
return vertexes_.size();
}
const std::vector<size_t>& NFAGraph::GetFinalVertexes() const {
return final_vertexes_;
}

View file

@ -0,0 +1,40 @@
#include <gtest/gtest.h>
#include "regular/RegularTree.hpp"
#include "converters/RegularToNFA.hpp"
#include "converters/NFAToDFA.hpp"
#include "converters/DFAToMinDFA.hpp"
#include "converters/DFAToRegular.hpp"
using namespace regular;
using namespace NFA;
using namespace DFA;
using namespace converters;
size_t GetCountVertexes(const std::string& regular) {
RegularTree r(regular);
NFAGraph NFA_tree = RegularToNFAGraph(std::move(r));
DFAGraph DFA_graph = NFAGraphToDFAGraph(std::move(NFA_tree));
DFA_graph = DFAGraphToMinDFAGraph(std::move(DFA_graph));
return DFA_graph.GetReallyCountVertexes();
}
TEST(DFA_to_min_DFA, a_start) {
EXPECT_EQ(GetCountVertexes("a*"), GetCountVertexes("( a | )*| | | aaa a a"));
}
TEST(DFA_to_min_DFA, a_plus) {
EXPECT_EQ(GetCountVertexes("a+"), GetCountVertexes("( a | a a )+|a | a |a "));
}
TEST(DFA_to_min_DFA, a_star_or_b_star) {
EXPECT_EQ(GetCountVertexes("a*|b*"), GetCountVertexes("a|b|a*|a+|b*|b+|bbb b b b| a a aa a aa | a+"));
}
TEST(DFA_to_min_DFA, epsilon) {
EXPECT_EQ(GetCountVertexes(" "), GetCountVertexes(" | | | "));
}
TEST(DFA_to_min_DFA, a_or_b_star) {
EXPECT_EQ(GetCountVertexes("(a|b)*"), GetCountVertexes("a+|b+|a*|b*|a*b*a*|a|b(a|b)*|b| |(a|b)*"));
}