예제 #1
0
    public void CompleteSimple()
    {
        // We build a DFA that accepts a*
        // And we complete it over { a, b }
        var dfa = new Dfa <char, char>();

        dfa.InitialState = 'q';
        dfa.AcceptingStates.Add('q');
        dfa.AddTransition('q', 'a', 'q');
        dfa.Alphabet.Add('b');

        Assert.True(dfa.Complete('t'));
        var expectedStates = new[] { 'q', 't' }.ToHashSet();

        Assert.True(expectedStates.SetEquals(dfa.States));
        Assert.Equal(4, dfa.Transitions.Count);
        AssertTransition(dfa, 'q', 'a', 'q');
        AssertTransition(dfa, 'q', 'b', 't');
        AssertTransition(dfa, 't', 'a', 't');
        AssertTransition(dfa, 't', 'b', 't');
    }