tree-sitter/spec/lr/item_set_spec.cpp
2013-11-12 18:45:04 -08:00

23 lines
801 B
C++

#include "spec_helper.h"
#include "../test_grammars/arithmetic.h"
using namespace tree_sitter::lr;
Describe(item_sets) {
Grammar grammar = test_grammars::arithmetic();
It(computes_the_closure_of_an_item_set_under_symbol_expansion) {
Item item = Item::at_beginning_of_rule("term", grammar);
ItemSet item_set = ItemSet({ item }).closure_in_grammar(grammar);
AssertThat(
item_set,
EqualsContainer(ItemSet({
Item("term", grammar.rules["term"], 0),
Item("factor", grammar.rules["factor"], 0),
Item("variable", grammar.rules["variable"], 0),
Item("number", grammar.rules["number"], 0),
Item("left_paren", grammar.rules["left_paren"], 0),
})));
}
};