Test Expressionparser ===================== Test the conditional expression parser. Boilerplate:: >>> from manifestparser import parse Test basic values:: >>> parse("1") 1 >>> parse("100") 100 >>> parse("true") True >>> parse("false") False >>> '' == parse('""') True >>> parse('"foo bar"') 'foo bar' >>> parse("'foo bar'") 'foo bar' >>> parse("foo", foo=1) 1 >>> parse("bar", bar=True) True >>> parse("abc123", abc123="xyz") 'xyz' Test equality:: >>> parse("true == true") True >>> parse("false == false") True >>> parse("false == false") True >>> parse("1 == 1") True >>> parse("100 == 100") True >>> parse('"some text" == "some text"') True >>> parse("true != false") True >>> parse("1 != 2") True >>> parse('"text" != "other text"') True >>> parse("foo == true", foo=True) True >>> parse("foo == 1", foo=1) True >>> parse('foo == "bar"', foo='bar') True >>> parse("foo == bar", foo=True, bar=True) True >>> parse("true == foo", foo=True) True >>> parse("foo != true", foo=False) True >>> parse("foo != 2", foo=1) True >>> parse('foo != "bar"', foo='abc') True >>> parse("foo != bar", foo=True, bar=False) True >>> parse("true != foo", foo=False) True >>> parse("!false") True Test conjunctions:: >>> parse("true && true") True >>> parse("true || false") True >>> parse("false || false") False >>> parse("true && false") False >>> parse("true || false && false") True Test parentheses:: >>> parse("(true)") True >>> parse("(10)") 10 >>> parse('("foo")') 'foo' >>> parse("(foo)", foo=1) 1 >>> parse("(true == true)") True >>> parse("(true != false)") True >>> parse("(true && true)") True >>> parse("(true || false)") True >>> parse("(true && true || false)") True >>> parse("(true || false) && false") False >>> parse("(true || false) && true") True >>> parse("true && (true || false)") True >>> parse("true && (true || false)") True >>> parse("(true && false) || (true && (true || false))") True