Two of the original checks were not testing what they were supposed to
test, because the result of eval didn't depend on correct parsing:
eval("not true or not true")
correct parse: ((not true) or (not true)) == false
incorrect parse: (not (true or (not true))) == false
eval("not false and not false")
correct parse: ((not false) and (not false)) == true
incorrect parse: (not (false and (not false))) == true
(cherry picked from commit d38d16ade9)