Ejemplo n.º 1
0
TEST_F(TestDFA, Containment) {
    instance << "q0";
    instance << "q1";
    instance << "q2";
    instance << "q3";
    instance.addTransition("q0", "q1", 'a');
    instance.addTransition("q0", "q1", 'b');
    instance.addTransition("q1", "q2", 'a');
    instance.addTransition("q1", "q2", 'b');
    instance.addTransition("q2", "q3", 'a');
    instance.addTransition("q2", "q3", 'b');
    instance.addTransition("q3", "q0", 'a');
    instance.addTransition("q3", "q0", 'b');
    instance.accept("q0");
    instance.accept("q2");

    DFA second;
    second << "q0";
    second << "q1";
    second.addTransition("q0", "q1", 'a');
    second.addTransition("q1", "q0", 'a');
    second.accept("q0");

    bool r1, r2;
    ASSERT_NO_THROW(r1 = instance.contains(second));
    ASSERT_NO_THROW(r2 = second.contains(instance));

    EXPECT_TRUE(r1);
    EXPECT_FALSE(r2);

    EXPECT_EQ(4, instance.size());
    EXPECT_EQ(2, second.size());
}
Ejemplo n.º 2
0
TEST_F(TestDFA, RValueOperations) {
    DFA first;
    first << "q0" << "q1" << "q2";
    first.addTransition("q0", "q1", 'a');
    first.addTransition("q1", "q2", 'a');
    first.addTransition("q2", "q0", 'a');
    first.accept("q0");

    DFA second;
    second << "q0" << "q1";
    second.addTransition("q0", "q1", 'a');
    second.addTransition("q1", "q0", 'a');
    second.accept("q1");

    EXPECT_NO_THROW(first & ~second);
    EXPECT_NO_THROW(first | ~second);
    EXPECT_NO_THROW(first == ~second);
    EXPECT_NO_THROW(first.contains(~second));
    EXPECT_NO_THROW(second.contains(~first));
}