def test_gold_reduce_oracle(string, gold): state = PyState(string, gold=gold) state.transition('S') state.transition('L-SUBJ') state.transition('S') state.transition('S') state.transition('L-OTHER') state.transition('R-OBJ') assert not state.is_gold('R-OTHER') assert not state.is_gold('S') assert state.is_gold('D') assert not state.is_gold('L-ROOT') assert not state.is_gold('R-OBJ')
def test_sunk_right(string, gold): state = PyState(string, gold=gold) state.transition('S') assert state.top == 1 assert not state.is_gold('R-OBJ') assert state.top == 1 state.transition('R-OBJ') assert state.top == 2 assert not state.is_gold('D') state.transition('D') assert not state.is_gold('R-OBJ') state.transition('R-OBJ') assert state.is_gold('D') assert not state.is_gold('L-OTHER') assert not state.is_valid('L-OTHER')
def test_sunk_left(string, gold): state = PyState(string, gold=gold) state.transition('S') state.transition('L-SUBJ') state.transition('S') state.transition('S') assert not state.is_gold('S') state.transition('S') # Now have (is, a, test) on stack --- this is wrong assert state.is_gold('L-SUBJ') assert state.is_gold('L-ROOT') assert state.is_gold('L-OTHER') assert not state.is_gold('R-OTHER') assert not state.is_gold('R-OBJ') assert not state.is_gold('D') assert not state.is_gold('S') state.transition('L-SUBJ') assert state.is_gold('L-SUBJ') assert state.is_gold('L-ROOT') assert state.is_gold('L-OTHER') state.transition('L-ROOT') assert state.top == 2 assert state.is_gold('R-OTHER')