@@ -64,39 +64,93 @@ def test_nots_stay_bad
6464 def test_dropped_field_handling
6565 assert sample ( "Test Eq 'Drop' And Test Eq true" )
6666 assert !sample ( "Test Eq 'Drop' And Test Eq false" )
67- assert ! sample ( "Test Eq 'Drop' Or Test Eq false" )
67+
6868 assert sample ( "Test Eq 'Drop' Or Test Eq true" )
69+ assert !sample ( "Test Eq 'Drop' Or Test Eq false" )
70+
6971 assert sample ( "Test Eq false And Test Eq 'Drop' Or Test Eq true" )
72+ assert !sample ( "Test Eq false And Test Eq 'Drop' Or Test Eq false" )
73+
7074 assert sample ( "Test Eq false Or (Test Eq 'Drop' And Test Eq true)" )
75+ assert !sample ( "Test Eq false Or (Test Eq 'Drop' And Test Eq false)" )
76+
77+ assert sample ( "Test Eq false Or (Not Test Eq 'Drop' And Test Eq true)" )
78+ assert !sample ( "Test Eq false Or (Not Test Eq 'Drop' And Test Eq false)" )
79+
80+ assert sample ( "Test Eq true Not Test Eq 'Drop' And Test Eq true" )
81+ assert !sample ( "Test Eq true Not Test Eq 'Drop' And Test Eq false" )
82+ assert !sample ( "Test Eq false Not Test Eq 'Drop' And Test Eq false" )
83+
84+ assert sample ( "Test Eq true And Test Eq 'Drop' Not Test Eq false" )
85+ assert !sample ( "Test Eq true And Test Eq 'Drop' Not Test Eq true" )
86+ assert !sample ( "Test Eq true And Test Eq 'Drop' Not Test Eq true" )
87+
88+ assert sample ( "Test Eq true Not (Test Eq 'Drop' And Test Eq false)" )
89+ assert !sample ( "Test Eq true Not (Test Eq 'Drop' And Test Eq true)" )
90+ assert !sample ( "Test Eq true Not (Test Eq 'Drop' And Test Eq true)" )
7191 end
7292
7393 def test_nesting
7494 assert sample ( "Test Eq true Or (Test Eq true) And Test Eq false And (Test Eq true)" )
95+ assert sample ( "Test Eq true Or (Test Eq false) And Test Eq false And (Test Eq false)" )
96+ assert sample ( "Test Eq false Or (Test Eq true) And Test Eq true And (Test Eq true)" )
97+ assert !sample ( "Test Eq false Or (Test Eq false) And Test Eq false And (Test Eq false)" )
98+ assert !sample ( "Test Eq false Or (Test Eq true) And Test Eq false And (Test Eq false)" )
99+ assert !sample ( "Test Eq false Or (Test Eq false) And Test Eq true And (Test Eq false)" )
100+ assert !sample ( "Test Eq false Or (Test Eq false) And Test Eq false And (Test Eq true)" )
101+
75102 assert sample ( "Test Eq true Or ((Test Eq false) And Test Eq false) And (Test Eq false)" )
76103 assert sample ( "(Test Eq false Or Test Eq true) Or (Test Eq false Or Test Eq false)" )
77104 assert sample ( "(Test Eq true And Test Eq true) Or (Test Eq false)" )
78105 assert sample ( "(Test Eq true And Test Eq true) Or (Test Eq false And Test Eq true)" )
79106 assert !sample ( "(Test Eq false And Test Eq true) Or (Test Eq false)" )
107+
80108 assert sample ( "Test Eq true And ((Test Eq true And Test Eq false) Or Test Eq true)" )
81109 assert !sample ( "Test Eq true And ((Test Eq true And Test Eq false) Or Test Eq false) And Test Eq true" )
82110 assert !sample ( "Test Eq true And ((Test Eq true And Test Eq false) Or Test Eq false) Or Test Eq false" )
83111 assert sample ( "Test Eq true And ((Test Eq true And Test Eq false) Or Test Eq false) Or Test Eq true" )
84112 assert !sample ( "(Test Eq true Or Test Eq true) And Test Eq false" )
85113 assert !sample ( "(Test Eq true Or Test Eq true) And (Test Eq false)" )
114+
86115 assert sample ( "(Test Eq true Or Test Eq true) And (Test Eq false Or Test Eq true)" )
87116 assert !sample ( "(Test Eq true Or Test Eq true) And (Test Eq false Or Test Eq false)" )
117+
118+ assert sample ( "(Test Eq true) Not Test Eq false And (Test Eq true)" )
119+ assert !sample ( "(Test Eq true) Not Test Eq true And (Test Eq true)" )
120+ assert !sample ( "(Test Eq false) Not Test Eq false And (Test Eq true)" )
121+ assert !sample ( "(Test1 Eq true) Not Test2 Eq false And (Test3 Eq false)" )
88122 end
89123
90124 def test_nots
91125 assert sample ( "Test Eq true Not Test Eq false" )
92126 assert !sample ( "Test Eq true Not Test Eq true" )
127+ assert !sample ( "Test Eq false Not Test Eq true" )
128+ assert !sample ( "Test Eq false Not Test Eq false" )
129+
130+ assert sample ( "Test Eq true And Test Eq true Not Test Eq false" )
131+ assert !sample ( "Test Eq false And Test Eq true Not Test Eq false" )
132+ assert !sample ( "Test Eq true And Test Eq true Not Test Eq true" )
133+ assert !sample ( "Test Eq true And Test Eq false Not Test Eq false" )
134+
93135 assert sample ( "Test Eq true Not (Test Eq false Or Test Eq false)" )
94- assert sample ( "Test Eq true Not (Test Eq false And Test Eq false)" )
95136 assert !sample ( "Test Eq true Not (Test Eq false Or Test Eq true)" )
96137 assert !sample ( "Test Eq true Not (Test Eq true Or Test Eq false)" )
97- assert !sample ( "Test Eq true Not (Not Test Eq false)" )
98- assert !sample ( "Test Eq false And Test Eq true Not Test Eq false" )
138+ assert !sample ( "Test Eq true Not (Test Eq true Or Test Eq true)" )
139+ assert !sample ( "Test Eq false Not (Test Eq false Or Test Eq false)" )
140+
141+ assert sample ( "Test Eq true Not (Test Eq false And Test Eq false)" )
142+ assert sample ( "Test Eq true Not (Test Eq true And Test Eq false)" )
143+ assert sample ( "Test Eq true Not (Test Eq false And Test Eq true)" )
144+ assert !sample ( "Test Eq true Not (Test Eq true And Test Eq true)" )
145+ assert !sample ( "Test Eq false Not (Test Eq false And Test Eq false)" )
146+
147+ assert sample ( "Test Eq true Not (Test Eq false Or Test Eq false) And (Test Eq true Or Test Eq false)" )
148+ assert sample ( "Test Eq true Not (Test Eq false Or Test Eq false) And (Test Eq false Or Test Eq true)" )
149+ assert sample ( "Test Eq true Not (Test Eq false Or Test Eq false) And (Test Eq true Or Test Eq true)" )
99150 assert !sample ( "Test Eq true Not (Test Eq false Or Test Eq false) And (Test Eq false Or Test Eq false)" )
151+ assert !sample ( "Test Eq true Not (Test Eq false Or Test Eq true) And (Test Eq true Or Test Eq false)" )
152+ assert !sample ( "Test Eq true Not (Test Eq true Or Test Eq false) And (Test Eq true Or Test Eq false)" )
153+ assert !sample ( "Test Eq false Not (Test Eq false Or Test Eq false) And (Test Eq true Or Test Eq false)" )
100154 end
101155
102156 def test_unary_nots
@@ -109,17 +163,14 @@ def test_unary_nots
109163
110164 def test_unary_double_nots
111165 assert sample ( "Not (Not(Not Test Eq true))" )
166+ assert !sample ( "Not (Not(Not Test Eq false))" )
167+
168+ assert sample ( "Test Eq true Not (Not Test Eq true)" )
169+ assert !sample ( "Test Eq true Not (Not Test Eq false)" )
170+ assert !sample ( "Test Eq false Not (Not Test Eq true)" )
112171 end
113172
114173 def test_examples
115- # This one is based on a real life example that had problems.
116- #
117- # CurrentPrice Bt 130000.00,180000.00 And PropertySubType Eq 'Single Family Residence' And
118- # SchoolDistrict Eq 'Byron Center','Grandville','Jenison' And MlsStatus Eq 'Active' And
119- # BathsTotal Bt 1.50,9999.00 And BedsTotal Bt 3,99 And PropertyType Eq 'A'
120- # Not "Garage"."Garage2" Eq 'No' And "Pool"."OutdoorAbove" Eq true
121- # And "Pool"."OutdoorInground" Eq true Not "Substructure"."Michigan Basement" Eq true
122-
123174 assert !sample ( "Test Eq false And Test Eq true And " \
124175 "Test Eq false And Test Eq true And " \
125176 "Test Eq true And Test Eq true And Test Eq true " \
0 commit comments