Skip to content

Commit

Permalink
Fix unit-tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
SharafMohamed committed Jan 13, 2025
1 parent 65ae97f commit d5acb49
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 69 deletions.
3 changes: 3 additions & 0 deletions src/log_surgeon/finite_automata/Nfa.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,9 @@ auto Nfa<TypedNfaState>::get_bfs_traversal_order() const -> std::vector<TypedNfa
add_to_queue_and_visited(dest_state);
}
}
for (auto const& spontaneous_transition : current_state->get_spontaneous_transitions()) {
add_to_queue_and_visited(spontaneous_transition.get_dest_state());
}
}
return visited_order;
}
Expand Down
5 changes: 1 addition & 4 deletions src/log_surgeon/finite_automata/NfaState.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,10 +169,7 @@ auto NfaState<state_type>::epsilon_closure() -> std::set<NfaState const*> {
continue;
}
for (auto const& spontaneous_transition : current_state->get_spontaneous_transitions()) {
if (TransitionOperation::None == spontaneous_transition.get_transition_operation()) {
stack.push(spontaneous_transition.get_dest_state());
}
// TODO: currently only handle transitions that don't modify tags.
stack.push(spontaneous_transition.get_dest_state());
}
}
return closure_set;
Expand Down
13 changes: 12 additions & 1 deletion src/log_surgeon/finite_automata/SpontaneousTransition.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,18 @@ class SpontaneousTransition {
if (state_id_it == state_ids.end()) {
return std::nullopt;
}
return fmt::format("{}[{}]", state_id_it->second, fmt::join(m_tag_ids, ","));
std::string transition_op_string;
if (TransitionOperation::SetTags == m_transition_op) {
transition_op_string = "set:";
} else if (TransitionOperation::NegateTags == m_transition_op) {
transition_op_string = "negate:";
}
return fmt::format(
"{}[{}{}]",
state_id_it->second,
transition_op_string,
fmt::join(m_tag_ids, ",")
);
}

private:
Expand Down
80 changes: 16 additions & 64 deletions tests/test-nfa.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,87 +51,39 @@ TEST_CASE("Test NFA", "[NFA]") {
string expected_serialized_nfa = "0:byte_transitions={A-->1,Z-->2},"
"spontaneous_transition={}\n";
expected_serialized_nfa += "1:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={3[4]},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={3[set:4]}\n";
expected_serialized_nfa += "2:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={4[0,1,2,3,4,5,6,7]}\n";
"spontaneous_transition={4[negate:0,1,2,3,4,5,6,7]}\n";
expected_serialized_nfa += "3:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={5[0],6[2]},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={5[set:0],6[set:2]}\n";
expected_serialized_nfa += "4:accepting_tag=0,byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={}\n";
expected_serialized_nfa += "5:byte_transitions={a-->7,b-->7},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={}\n";
expected_serialized_nfa += "6:byte_transitions={c-->8,d-->8},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={}\n";
expected_serialized_nfa += "7:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={9[1]},"
"negative_tagged_transition={}\n";
"spontaneous_transition={9[set:1]}\n";
expected_serialized_nfa += "8:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={10[3]},"
"negative_tagged_transition={}\n";
"spontaneous_transition={10[set:3]}\n";
expected_serialized_nfa += "9:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={11[2,3]}\n";
"spontaneous_transition={11[negate:2,3]}\n";
expected_serialized_nfa += "10:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={11[0,1]}\n";
"spontaneous_transition={11[negate:0,1]}\n";
expected_serialized_nfa += "11:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={12[5]},"
"negative_tagged_transition={}\n";
"spontaneous_transition={12[set:5]}\n";
expected_serialized_nfa += "12:byte_transitions={B-->13},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={}\n";
expected_serialized_nfa += "13:byte_transitions={},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={14[6]},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={14[set:6]}\n";
expected_serialized_nfa += "14:byte_transitions={0-->15,1-->15,2-->15,3-->15,4-->15,5-->15,6-->"
"15,7-->15,8-->15,9-->15},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={}\n";
expected_serialized_nfa += "15:byte_transitions={0-->15,1-->15,2-->15,3-->15,4-->15,5-->15,6-->"
"15,7-->15,8-->15,9-->15},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={16[7]},"
"negative_tagged_transition={}\n";
"spontaneous_transition={16[set:7]}\n";
expected_serialized_nfa += "16:byte_transitions={C-->4},"
"epsilon_transitions={},"
"positive_tagged_start_transitions={},"
"positive_tagged_end_transitions={},"
"negative_tagged_transition={}\n";
"spontaneous_transition={}\n";

// Compare expected and actual line-by-line
auto const optional_actual_serialized_nfa = nfa.serialize();
Expand Down

0 comments on commit d5acb49

Please sign in to comment.